[BAEKJOON] 2단계_조건문 본문

IT/코테문제

[BAEKJOON] 2단계_조건문

호랑구야 2023. 10. 18. 09:00

 

julia319 정보

시도했지만 맞지 못한 문제

www.acmicpc.net

2884번 알람 시계

if문 조건을 만들 때, "분"의 조건은 45분이 앞서는 것이므로 44보다 크면 단순한 뺄셈으로, 44보다 작으면 "시"에서 60분을 내려받아 계산하면 되었다. 이때, "시"가 0시일 경우, 23시로 바꿔져야 한다는 조건이 새로 들어가야 했다.

혹은 "시"에 영향을 안주는 범위와 주는 범위로 분의 조건을 나누고서, "시"가 영향을 받는 범위 중 0시인 경우에만 23으로 바꾸었다.

H, M = map(int, input().split())

if M >= 45:
    M -= 45
elif M < 45:
    M+= 15
    if H == 0:
        H = 23
    else:
        H -= 1
        
print(H, M)

2525번 오븐 시계

주어진 입력값의 조건을 잘 살펴보는 것이 필요하다. 추가되는 시간 cooking의 범위가 1000분까지 존재하므로, 주어진 시간과의 합에서 몫과 나머지를 활용했다.

혹은 주어진 "분"과 "추가 요리 시간"을 더한 것을 60으로 나눈 몫을 "시"에 더하고, "시"는 24로 나눈 것의 나머지로 배정한다. 나눈 나머지를 분으로 배정한다. 

H, M = map(int, input().split())
cooking = int(input())

H += (M + cooking) // 60
H = H % 24
M = (M + cooking) % 60

print(H, M)

 

2480번 주사위 세개

코드를 최대한 짧게, 조건문을 최대한 적게 만들고 싶어서 A, B, C가 모두 같을 때를 첫 번째 조건으로 두었다. 논리연산의 구조에 따라 A == B == C 로 작성시, 모두가 같아야 True가 나온다. 다음으로는 셋 모두가 다른 것을 조건으로 두었다. 마지막으로는 위의 두 조건에 부합하지 않으면서, A가 나머지 두 수와 같은 조건일 때, 그리고 그렇지 않을 때로 나누었다. 후자의 경우 B와 C가 같다는 조건과 같다.

혹은 두 요소가 같다는 가정 하에서 나머지도 같다 / 그렇지 않다로 나눈것 한 묶음과, 두 요소가 다르다느 가정 하에서 나머지 요소가 둘 중 하나랑 같다 / 그렇지 않다로 나눈 것 한 묶음으로 정리할 수 있다.

A, B, C = map(int, input().split())

if A == B:
    if C == A:
        answer = 10000 + C * 1000
    else:
        answer = 1000 + A * 100
else:
    if (C == A) or (C == B):
        answer = 1000 + C * 100
    else:
        answer = max(A, B, C) * 100
        
print(answer)
반응형
Comments