[1695] 펠린드롬 만들기 (파이썬)
문제 앞에서 뒤로 보나, 뒤에서 앞으로 보나 같은 수열을 팰린드롬 이라고 한다. 예를 들어 {1}, {1, 2, 1}, {1, 2, 2, 1}과 같은 수열은 팰린드롬 이지만, {1, 2, 3}, {1, 2, 3, 2} 등은 팰린드롬이 아니다. 한 수열이 주어졌을 때, 이 수열에 최소 개수의 수를 끼워 넣어 팰린드롬을 만들려고 한다. 최소 몇 개의 수를 끼워 넣으면 되는지를 알아내는 프로그램을 작성하시오. 입력 첫째 줄에 수열의 길이 N(1≤N≤5,000)이 주어진다. 다음 줄에는 N개의 수열을 이루는 수들이 주어진다. 각 수들은 int 범위이다. 출력 첫째 줄에 끼워 넣을 수들의 최소 개수를 출력한다. == 솔루션 처음에는 추가한 갯수를 기준으로 최소 힙을 이용했음. => 메모리 초과 n이 5000 이하..
2023. 12. 11.
[백준] 1744 수 묶기 (파이썬)
문제 길이가 N인 수열이 주어졌을 때, 그 수열의 합을 구하려고 한다. 하지만, 그냥 그 수열의 합을 모두 더해서 구하는 것이 아니라, 수열의 두 수를 묶으려고 한다. 어떤 수를 묶으려고 할 때, 위치에 상관없이 묶을 수 있다. 하지만, 같은 위치에 있는 수(자기 자신)를 묶는 것은 불가능하다. 그리고 어떤 수를 묶게 되면, 수열의 합을 구할 때 묶은 수는 서로 곱한 후에 더한다. 예를 들면, 어떤 수열이 {0, 1, 2, 4, 3, 5}일 때, 그냥 이 수열의 합을 구하면 0+1+2+4+3+5 = 15이다. 하지만, 2와 3을 묶고, 4와 5를 묶게 되면, 0+1+(2*3)+(4*5) = 27이 되어 최대가 된다. 수열의 모든 수는 단 한번만 묶거나, 아니면 묶지 않아야한다. 수열이 주어졌을 때, 수열..
2023. 12. 5.
연속 펄스 부분 수열의 합
문제 https://school.programmers.co.kr/learn/courses/30/lessons/161988 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 솔루션 펄스 수열은 [1,-1,1,-1] 또는 [-1,1,-1,1] 임. 특정 배열에 위의 펄스 수열 2가지를 각각의 원소에 곱해주면 둘은 부호만 반대 될 뿐 절대값은 같음 따라서 원래의 배열에 [1,-1,1,-1] 과 [-1,1,-1,1] 을 각각 곱한 뒤 두가지 배열을 추출하는 것이 아닌 [1,-1,1,-1]을 곱한 뒤 그것의 최댓값과 최솟값을 구한다. 최댓값과 최솟값은 [-1,1,-1..
2023. 10. 6.