본문 바로가기
Coding Test (코딩 테스트)

코딩테스트 6일차(2025.01.19) - 2525번

by BioLearner 2025. 1. 19.
반응형

내 풀이

1. 인공지능 오븐을 사용하는 방법은 적당한 양의 오리 훈재 재료를 인공지능 오븐에 넣으면 됨

2. 인공지능 오븐은 오븐구이가 끝나는 시간을 분 단위로 자동적으로 계산

3. 오븐 앞에는 요리가 끝나는 시각을 알려주는 디지털 시계가 있음

4. 오븐구이가 끝나는 시각을 계산하는 프로그램을 작성하시오

 

첫째 줄: 현재 시각 (A시 B분) -> A B

두번째 줄: 요리하는 데 필요한 시간 C(분단위) -> C

 

단, 디지털 시계는 23시 59분에서 1분이 지나면 0시 0분이 된다.

 

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

if (B + C >= 60):
    60 - (B + C) = minu
    print(A, minu)
    
elif (A == 23):
    A = 0
else:
    minu = B + C
    print(A, miun)

 

결과: 틀림

정답

# 현재 시각 입력 받기
A, B = map(int, input().split())
# 요리 시간 입력 받기
C = int(input())

# 현재 시각을 분 단위로 계산
current_minutes = A * 60 + B

# 요리 시간을 더한 후, 종료 시각을 구함
end_minutes = current_minutes + C

# 종료 시각을 시와 분으로 변환
end_hour = (end_minutes // 60) % 24  # 24시간제로 처리
end_minute = end_minutes % 60

# 결과 출력
print(end_hour, end_minute)

 

틀린 이유

문제점 1: input.split() 사용 오류

 

input.split()은 입력을 공백 기준으로 분리하는 함수.

하지만 input() 함수의 반환값은 문자열이기 때문에 input.split()을 사용할 때 괄호가 누락되어 있다.

 

이 부분은 input()을 통해 입력을 받는 것이므로 input().split()로 수정해야 한다.

 

문제점 2: 60 - (B + C) = minu 부분

60 - (B + C) = minu 라는 표현은 잘못된 것.

이는 minu라는 변수에 60 - (B + C) 값을 저장하려는 의도인데, 대입문에서 = minu와 같은 형태는 잘못된 문법입니다. minu = 60 - (B + C)와 같이 바꿔야 한다.

 

문제점 3: elif (A == 23) 조건

요리 시간이 60분 이상일 경우, 시간이 A가 23일 때 넘어가게 되어 A가 24시 이상이 될 수 있음

이 로직을 처리하는 방법은 A += (B + C) // 60에서 시간 초과를 처리할 때 해결할 수 있음

 

문제점 4: print(A, miun) 오타

minu는 앞서 정의된 변수인데, miun이라고 잘못 작성된 부분이 있음

 


 

고찰

1. 문제 해결 접근 방식

시간 관련 문제는 모든 값을 가장 작은 단위(이 경우 분)로 통일하여 계산한 후, 나중에 다시 변환하는 것이 실수를 줄일 수있었음

 

2. 코드 작성 습관

변수명을 의미있게 지정하기, 주석을 달아 코드의 각 부분이 무엇을 하는지 설명하기, 들여쓰기를 일관되게 유지

 

3. 테스트 케이스 고려

경계값 테스트를 항상 하기, 큰 수와 작은 수 모두 테스트

반응형