[ BOJ / Python ] 19940번 피자 오븐

황승환·2022년 9월 13일
0

Python

목록 보기
483/498

이번 문제는 그리디하게 해결하였다. 입력해야 하는 시간이 60을 넘어가면 60을 최대한 누르는 것이 유리하므로 n을 60으로 나눈 몫을 sixty라는 변수에 저장하였고, 60으로 나눈 나머지에서 10을 나눈 몫을 ten이라는 변수에 저장하였다. 그리고 n을 10으로 나눈 나머지를 one이라는 변수에 저장하였다.

그리고 one이 5보다 크다면 10을 누르고 one을 10만큼 덜 누르는 것이 더 좋은 방법이므로 ten을 1 증가시키고, one을 10 감소시켰다. 그리고 ten이 3보다 크다면 sixty를 1 증가시키고, ten을 6 감소시켰다. 만약 ten이 0보다 작고 one이 5일 경우에는 사전순으로 앞서야 하므로 ten을 1 증가시키고, one을 10 감소시켰다.

이렇게 되면 answer[0]은 sixty가 되고, ten이 양수일 경우에는 answer[1]이 ten이 된다. 음수일 경우에는 answer[2]가 ten의 절댓값이 된다. one이 양수일 경우에는 answer[3]이 one이 되고, 음수일 경우에는 answer[4]가 one의 절댓값이 된다.

Code

t = int(input())
for _ in range(t):
    n = int(input())
    answer = [0 for _ in range(5)]
    sixty, ten, one = n//60, (n%60)//10, n%10
    if one > 5:
        ten += 1
        one -= 10
    if ten > 3:
        sixty += 1
        ten -= 6
    if ten < 0 and one == 5:
        ten += 1
        one -= 10
    answer[0] = sixty
    if ten >= 0:
        answer[1] = ten
    else:
        answer[2] = abs(ten)
    if one >= 0:
        answer[3] = one
    else:
        answer[4] = abs(one)
    print(*answer)

profile
꾸준함을 꿈꾸는 SW 전공 학부생의 개발 일기

0개의 댓글