본문 바로가기
알고리즘/CodeUp PS

[CodeUp][Python] 1173번 : 30분전

by 빛밤하늘 2021. 8. 25.
반응형

밑의 링크는 CodeUp에서의 문제 링크입니다.

문제는 링크를 통해서 직접 봐주시길 바랍니다.

 

30분전

입력된 시간의 30분 전의 시간을 출력하시오.

codeup.kr

 

 

주의해야 할 점

이 문제에서 사용한 map을 사용하는 입력 방식은 정말 많이 사용하는 입력 방식입니다.

이해하고 거의 외운 것 마냥 써봅시다.

 

 

입력하는 시의 범위가 0 ~ 23인 것을 보면 24시간을 기준으로 하는 시간 단위인 것 같습니다.

 

 

시간 관련 알고리즘 문제를 풀 때는 시, 분, 초 중

문제에서 고려하는 가장 작은 단위로 시간을 합산하고 문제에 맞게 처리한 뒤,

다시 시, 분, 초로 표현하는 방법이 제일 깔끔한 것 같습니다.

 

이 기법은 후기를 작성한 밑의 포스팅 링크에서 설명하고 있는

'그림으로 배우는 알고리즘 Algorithm Basic'이라는 책에서 처음 배웠습니다.

 

[리뷰][자료구조][알고리즘] 그림으로 배우는 알고리즘 Algorithm Basic 후기

요즘 개발과 알고리즘 책들을 도서관에서 빌려서 읽고 있습니다. 주로 어떤 언어나 프레임워크, 라이브러리 혹은 알고리즘, 자료구조 등 같은 코딩과 관련된 키워드들을 도서관 홈페이지에서

brightnightsky77.tistory.com

 

 

 

생각한 풀이 과정

  1. readline을 사용하기 위해 import 합니다.
  2. 0 ~ 23인 시와 0 ~ 59인 분을 공백으로 구분해 입력합니다. 각각 정수형으로 변환하고, 변수 hour, minute에 넣어줍니다.
  3. 입력한 시에 60을 곱하고 입력한 분에 더해 분 단위로 시간을 맞춘 뒤 변수 time_sum에 저장합니다.
  4. 변수 time_sum의 값에 30을 빼 30분 전의 시간을 구하고 변수 before_30_time에 저장합니다.
  5. 변수 before_30_time의 값에 60을 나눈 후의 몫인 30분 전 시간의 '시' 부분을 구하고 변수 before_30_hour에 저장합니다.
  6. 변수 before_30_time의 값에 60을 나눈 후의 나머지인 30분 전 시간의 '분' 부분을 구하고 변수 before_30_minute에 저장합니다.
  7. 30분 전 시간의 시가 음수라면, before_30_hour의 값에 24를 더해 24시간 기준의 시로 맞춰줍니다.
  8. 30분 전의 시간의 시와 분인 before_30_hour, before_30_minute의 값을 공백으로 구분해 출력합니다.

 

 

제출한 파이썬 코드

# readline을 사용하기 위해 import합니다.
from sys import stdin


# 시와 분을 공백으로 구분해 입력합니다.
# 시의 범위 : 0 ~ 23
# 분의 범위 : 0 ~ 59
# 각각 정수형으로 변환합니다.
hour, minute = map(int, stdin.readline().split())
# 입력한 시에 60을 곱하고 분에 더해 분 단위의 시간으로 변경하고 변수에 저장합니다.
time_sum = hour * 60 + minute
# 분 단위 시간에서 30분을 빼서 30분전의 시간을 구하고 변수에 저장합니다.
before_30_time = time_sum - 30
# 30분전의 시간에 60을 나눈 후의 몫인 30분전 시간의 시 부분을 구하고 변수에 저장합니다.
before_30_hour = before_30_time // 60
# 30분전의 시간에 60을 나눈 후의 나머지인 30분전 시간의 분 부분을 구하고 변수에 저장합니다.
before_30_minute = before_30_time % 60

# 30분전 시간의 시가 음수라면
if before_30_hour < 0:
    # 음수인 시 부분에 24를 더해 24시간 기준으로 맞춰줍니다.
    before_30_hour += 24

# 30분 전의 시간의 시와 분을 공백으로 구분해 출력합니다.
print(before_30_hour, before_30_minute)

 

 

 

제출 결과

결과

 

 

 

※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.

※ 더 효율적이고 빠른 정답을 환영합니다.

※ 공감 버튼과 구독 버튼도 잊지 말고 꾹 눌러주시면 감사하겠습니다~👍👍

반응형

댓글