문제 설명
숫자로 이루어진 리스트 rooms와 목표값 t가 주어졌을 때, rooms에서 값이 t 이상인 첫 번째 요소를 찾아야 합니다. 만약 조건을 만족하는 방이 없다면 -1을 반환합니다.
예를 들어, 입력이 rooms = [20, 15, 35, 55, 30]이고 t = 30이라면 출력은 35가 됩니다. 앞의 두 방(20, 15)은 목표값 30에 미치지 못하고, 세 번째 방인 35가 처음으로 조건을 충족하기 때문입니다.
해결 접근 방법
이 문제는 간단한 선형 탐색(linear search)으로 해결할 수 있습니다. 단계는 다음과 같습니다.
rooms 리스트의 각 방을 순서대로 확인합니다.
현재 방의 값이 t보다 크거나 같으면 해당 값을 즉시 반환합니다.
모든 방을 확인한 후에도 조건을 만족하는 값이 없으면 -1을 반환합니다.
이 알고리즘의 시간 복잡도는 O(n), 공간 복잡도는 O(1)입니다. 여기서 n은 리스트의 길이를 의미하며, 최악의 경우 모든 요소를 한 번씩 확인하게 됩니다.
예제 코드
다음 구현을 통해 더 자세히 이해해 보겠습니다.
def solve(rooms, t):
for room in rooms:
if room >= t:
return room
return -1
rooms = [20, 15, 35, 55, 30]
t = 30
print(solve(rooms, t))
입력
[20, 15, 35, 55, 30], 30
출력
35