jyamethyst21 님의 블로그

백준 10162번- '전자레인지' (PYTHON 풀이) 본문

CODING 💻

백준 10162번- '전자레인지' (PYTHON 풀이)

jyamethyst21 2026. 1. 5. 00:02

문제:

 

5분, 1분 ,10초가 조작되는 버튼이 있을 때 입력받는 T에 대해서 최소한으로 버튼을 사용해서 T만큼 초를 사용하도록 하는데, 이때 총 버튼 사용 횟수를 한 줄로 출력하면 된다.

 

풀이:

T = int(input())
li = [0,0,0]

while T > 0:
    if T >= 300:
        li[0] = li[0] + 1
        T = T - 300
    elif T >= 60:
        li[1] = li[1] + 1
        T = T - 60
    elif T >= 10:
        li[2] = li[2] + 1
        T = T - 10
    else:
        break
if T != 0:
    print(-1)
else:
    print(*li)

입력값과 각 버튼의 사용 횟수를 담은 리스트를 0으로 초기화해준다.

그리고 T가 0 이상이 될 때까지 반복문을 돌면서 300초(5분) 이상일 경우는 0번째 인덱스 1 추가, 60초(1분) 이상일 경우는 1번째 인덱스 1 추가 그리고 10초 이상일 경우는 2번째 인덱스 1을 더해주도록 한다. 리스트의 각 자리는 순서대로 5분, 1분, 10초 사용 횟수에 해당한다.

그리고 공통적으로 1을 더해준 다음에는 T 값을 해당 초만큼 빼주어서 초기화 해준다. 당연하다. 우리는 T의 값을 맞추기 위해 버튼을 얼마나 사용했는지를 보고 있기 때문에 사용한 초만큼 빼주어야 한다.

그리고 예외 상황으로, 즉, 300초, 60초, 10초로 나눠떨어지지 않는 경우에는 break를 통해 반복문을 탈출한다. while문을 빠져나오면 li에는 각 버튼의 사용 횟수가 업데이트 되어 있을 것이다.

우리는 나눠떨어지지 않을 땐 -1, 떨어졌을 땐 그냥 리스트를 바로 출력하면 되기 때문에 최종적으로 T 값이 0인지를 파악해서 0이 아니면(나눠떨어지지 않았으면) -1, 그게 아니라면 리스트를 언패킹으로 바로 출력한다.

 

이번 문제는 서브테스크?라 '맞췄습니다'가 아니라 점수로 나오는데 100 나왔다.