https://school.programmers.co.kr/learn/courses/30/lessons/12906
이 문제는 주어진 리스트에서 연속으로 중복된 숫자를 제거한 새로운 리스트를 반환하는 문제입니다.
이 코드에서는 answer 리스트를 이용하여 변환한 리스트를 저장합니다. for 문을 이용하여 arr 리스트의 각 요소를 순서대로 탐색합니다. 탐색 중에 현재 요소(a)가 answer 리스트의 마지막 요소와 같지 않은 경우에만 answer 리스트에 a를 추가합니다. 그렇지 않은 경우에는 answer 리스트에 추가하지 않습니다. 이를 통해, 인접한 숫자가 중복되지 않도록 리스트를 변환합니다.
이 코드는 시간 복잡도가 O(n)입니다.
def solution(arr):
answer = []
for i in arr:
if not answer:
answer.append(i)
else:
if answer[-1] == i:
continue
else:
answer.append(i)
return answer
https://school.programmers.co.kr/learn/courses/30/lessons/42748
def solution(array, commands):
answer = []
for start,end,pos in commands:
answer.append(sorted(array[start-1:end])[pos-1])
return answer
https://school.programmers.co.kr/learn/courses/30/lessons/42626
이 문제는 스코빌 지수가 주어졌을 때, 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 섞어야 하는 최소 횟수를 구하는 문제입니다.
이 코드에서는 heapq 모듈을 사용하여 최소 힙(min heap) 자료구조를 구현하고, 이를 이용하여 문제를 해결합니다. 우선, 주어진 스코빌 지수 리스트(scoville)를 heapify 함수를 이용하여 최소 힙으로 변환합니다.
그리고 while 문을 이용하여 다음을 반복합니다:
from heapq import heappop,heappush,heapify
def solution(scoville, K):
answer = 0
heapify(scoville)
while scoville:
if scoville[0] >= K:
return answer
if len(scoville) >= 2:
heappop1 = heappop(scoville)
heappop2 = heappop(scoville)
heappush(scoville, heappop1 + 2 * heappop2)
answer += 1
else:
return -1
scoville = [1, 2,3]
K = 7
print(solution(scoville,K))