코딩 테스트/프로그래머스

[Python] 프로그래머스 lv.0 날짜 비교하기

위시리 2024. 12. 1. 23:40

 

정답 코드

실패.. 테스트 케이스에서 걸리는데 어느 테스트 케이스에서 걸리는지 모르겠다.

def solution(date1, date2):
    answer = 0
    if date1[0] < date2[0] : 
        answer = 1
    elif date1[1] < date2[1] : 
        answer = 1
    elif date1[2] < date2[2] :
        answer = 1
    else : 
        answer = 0
    return answer

gpt

작성된 코드는 날짜를 비교하는 데 있어서 문제가 있습니다. 연도, 월, 일 순으로 비교를 하고 있지만, 월과 일을 비교할 때 연도와 월 조건이 제대로 연결되지 않았습니다. 따라서 같은 연도에서 잘못된 비교가 발생할 수 있습니다.

문제점: elif 조건이 독립적으로 작동

  • 현재 코드의 elif 조건은 이전 조건이 False일 경우에만 평가됩니다.
  • 이는 날짜 비교에서 연도와 월이 같을 경우, 일을 비교하는 데 실패하게 만듭니다.

예시 문제 상황

date1 = [2023, 6, 5]
date2 = [2023, 5, 10]
  • 첫 번째 조건: date1[0] < date2[0] → False (연도가 같음).
  • 두 번째 조건: date1[1] < date2[1] → False (6 > 5).
  • 세 번째 조건: date1[2] < date2[2] → 평가되지 않음 (이전 조건이 False이기 때문에).
  • 결과: answer = 0, 잘못된 결과.

→ 연도, 월, 일을 순차적으로 비교해야 한다.

 

다른 사람 코드 1

def solution(date1, date2):
    return 1 if date1 < date2 else 0

 

다른 사람 코드 2

def solution(date1, date2):
    return int(date1 < date2)

 

다른 사람 코드 3

def solution(date1, date2):
    for i in range(3):
        if date1[i]<date2[i]:return 1
        elif date2[i]<date1[i]: return 0
    return 0