알고리즘/알고리즘_swea

[Python][SWEA] 4299. 태혁이의 사랑은 타이밍 D3

Jerry_K 2024. 5. 13. 15:21
 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com


🗒️ 파이썬 코드 풀이

T = int(input())

for test_case in range(1, T + 1):
    D,H,M = map(int,input().split())

    date_time = 11*60 + 11
    wind_time = ((D-11)*24*60) + (H*60) + M  # 날 - 시 - 분 (분으로 변환)
    ans = wind_time-date_time

    if ans < 0 :
        print(f"#{test_case} {-1}")
    else :
        print(f"#{test_case} {ans}")

 

1. D의 범위가 11~14까지로 정해져있기 때문에, 11일 0시 0분 ~ "입력받은 시간" 까지를 분으로 전환해준다.

(만일 D의 범위가 이전 달을 넘어가면, 다른 방식으로 해야함)

 

2. 바람맞은 시간도 11일 0시 0분 부터 ~  11일 11시 11분까지의 시간을 분으로 전환해준다.

 

3. 데이트 기준 시간 11일 11시 11분보다 작은 경우(특수 케이스)는 조건문으로 -1 출력한다.

 

🧐 문제 코멘트

처음에는 11일을 기준으로 크거나/같거나/작거나 경우를 나눠주었다.

근데 같은 날이여도 작은 경우가 있어서, 좀 복잡하게 if문을 구성해야 했고, 코드는 너무 지저분해졌다.

그래서 다른 방법을 생각봤고, 분으로 전환하고 푸니까 훨씬 깔끔해졌다.

비슷한 문제가 나오면 시:분:초는 너무 헷갈리니 가장 작은 단위로 전환하는 것도 좋을 것 같다.


📚 문제


빼빼로 데이에 빼빼로를 들고 소개팅에서 바람을 맞은 태혁이를 지켜본 친구들은 그 비참함을 극대화하기 위해 태혁이가 바람을 맞으며 기다린 시간을 계산하기로 하였다.

소개팅 약속 시간은 정확히 2011년 11월 11일 오전 11시 11분이었으며 태혁이가 깨달음을 얻은 시간은 D일 H시 M분이었다.

깨달음을 주기 위해 바람이 얼마나 오랫동안 노력하였는지 계산하는 프로그램을 작성하시오.


[입력]
첫째 줄에는 테스트 케이스의 수 T (T ≤ 10)가 주어진다.

테스트 케이스의 각 줄에는 3개의 정수 D (11 ≤ D ≤ 14), H (0 ≤ H ≤ 23), M (0 ≤ M ≤ 59) 이 주어진다.

[출력]
각각의 케이스마다 각 줄에 태혁이가 얼마나 오랫동안 바람을 맞았는지 분 단위로 출력한다.

만약 태혁이가 소개팅 약속 시간 전에 차였다면 놀리기엔 너무 불쌍하므로 -1을 출력한다.