알고리즘 (52) 썸네일형 리스트형 프로그래머스 - 가까운 수(Python) 문제 설명알고리즘 고민일단 array에 있는 요소들과 n과의 차이를 k 배열로 저장한다. 그 후 abs 함수를 이용하여 절댓값으로 취한다. 이후 이 값을 정렬한다. 이 과정을 거치면 새로운 배열의 첫 번째 요소는 가장 작은 값이 들어가 있고 이 값이 결국 n과 가장 가까운 차이다. 가장 가까운 수가 여러 개일 경우 더 작은 수를 return 하도록 한다는 조건에 따라 절댓값을 취한 차이 값은 -값인지 +값인지 구별이 안되므로 n에 이 차이만큼을 뺀 값이 array 배열에 있다면 그걸 출력하고 아니라면 n에 이 차이만큼을 더한 값이 있다면 이걸 출력하도록 한다.코드 프로그래머스 - A로 B 만들기(Python) 문제 설명알고리즘 고민before와 after의 길이는 같고 before로 after를 만들 수 있으면 1을 반환하고 만들 수 없으면 0을 반환하는 문제이다. 만약 요소가 같다면 정렬했을 때 동일하기 때문에 sorted로 정렬하면 같을 수 밖에 없다. 따라서 before와 after를 정렬하여 둘이 같다면 1을, 다르다면 0을 반환하도록 한다.코드 프로그래머스 - 숫자 짝꿍(Python) 문제 설명알고리즘 고민처음에는 X에 있는 숫자를 하나씩 뽑아 Y에서 비교하며 바꾸려고 했는데 시간이 오바되었다.. 그래서 다른 사람의 풀이를 참고해봤을 때 가장 큰 수부터 작은 수까지 내림차순으로 내려가며 X와 Y에 있는 그 숫자의 개수를 세어 min 값을 answer에 추가하도록 한다. 그래야 X와 Y에 겹치는 수의 갯수 만큼 큰 수대로 추가할 수 있다. 이제 고려해야할 점은 0의 개수는 2개 이상이면 00으로 추가되므로 이 경우를 처리하도록 해주면 된다.코드 프로그래머스 - K번째수(Python) 문제 설명알고리즘 고민commands의 각각의 요소를 for문으로 지정한 다음 조건에 맞게 인덱싱하여 해결하였다.코드 프로그래머스 - 콜라츠 추측(Python) 문제 설명알고리즘 고민주어진 수 num에 대해 num이 짝수라면 2로 나누고 홀수라면 3을 곱하고 1을 더한다. 이 과정을 여기서는 최대 500번까지 반복하도록 하였고, 그 전에 1이 되었다면 몇 번 반복해야 하는지 반환하도록 하였다. 500번 반복할 때까지 1이 되지 않는다면 -1을 반환하도록 하였다. 또한 num이 1이라면 0을 반환하도록 하였다. 주어진 수가 1인 경우는 for문을 활용하여 처음 실행 시 반복문의 매개변수는 0이므로 이를 반환하도록 하였다.코드 프로그래머스 - 야근 지수(Python) 문제 설명알고리즘 고민남은 각각의 작업에 제곱을 한 후 각각의 작업을 더한 값을 출력하는 문제다. 제곱 수가 최소값이 되려면 가장 큰 수부터 줄여야 최소값을 구할 수 있다. 그러므로 works에서 최대값을 찾은 후 그 값을 1만큼 줄이는 작업을 n번 반복한 후 남아있는 작업들에 제곱하여 각각을 더한 값을 출력하도록 하면 된다. 일단 각각의 작업을 매번 실행마다 sort하면 시간 복잡도가 너무 크므로 힙구조를 사용하여 최댓값을 구하는 시간을 단축시키도록 하면 쉽게 해결할 수 있다. 하지만 파이썬에서 제공하는 힙 라이브러리는 최소힙만 제공한다. 따라서 우리가 사용할 때는 각각의 작업에 음수를 곱한 후 이를 힙구조로 사용하고 works에서 최대값을 찾은 후 그 값을 1만큼 줄이는 작업을 변형하여 works에서.. 프로그래머스 - 더 맵게(Python) 문제 설명알고리즘 고민스코빌 지수 배열을 힙 배열로 변환한 후 앞의 두 요소를 heappop으로 빼온 후 계산하여 다시 scoville에 넣어준다. 이때 scoville 지수 배열의 길이가 2보다 작은 경우는 결국 모든 음식의 스코빌 지수를 K 이상으로 만들지 못한 것이므로 -1을 반환하도록 하여 해결하였다. 문제의 어떤 상황에서 종료가 안되는지 되는지 잘 판단해야겠다.코드 프로그래머스 - 명예의 전당(1)(Python) 문제 설명알고리즘 고민k 값에 따라 명예의 전당에 올라가는 점수의 개수가 정해진다. 일단 점수를 k만큼 받고 k 값을 넘어설 때 힙구조에 점수를 넣고 최솟값을 뺀 다음에 힙구조의 첫 번째 요소를 추가하도록 한다.코드 이전 1 2 3 4 5 6 7 다음