Notice
Recent Posts
Recent Comments
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
10-11 00:15
Archives
Today
Total
관리 메뉴

Developer_Neo

[파이썬] 5554번 : 심부름 가는 길 본문

프로그래밍/백준알고리즘

[파이썬] 5554번 : 심부름 가는 길

_Neo_ 2022. 1. 18. 21:05
반응형

문제

승균이는 매일 학교, PC방, 학원에 다닌다. 반복되는 일상에 익숙해진 승균이는 이동시간을 단축해서 PC방에 더 오래 머물고 싶었다. 그래서 스톱워치를 들고 이동할 때마다 기록을 잰 후 집에 가서 분석해보기로 했다.

집에 도착한 승균이는 측정한 결과를 보는 데, 전부 초 단위로 기록되어있다! 맨날 놀기만 해서 총 이동 시간이 몇 분 몇 초인지 계산을 못 하는 승균이를 도와주자.

하루 동안 측정한 결과가 주어지면, 이날의 총 이동 시간이 몇 분 몇 초인지 출력하는 프로그램을 작성하시오.

입력

입력은 총 4줄이며, 한 줄에 하나씩 양의 정수가 적혀있다.

  • 첫 번째 줄에 집에서 학교까지의 이동 시간을 나타내는 초가 주어진다.
  • 두 번째 줄에 학교에서 PC방까지의 이동 시간을 나타내는 초가 주어진다.
  • 세 번째 줄에 PC방에서 학원까지의 이동 시간을 나타내는 초가 주어진다. 
  • 마지막 줄에 학원에서 집까지의 이동 시간을 나타내는 초가 주어진다.

집에 늦게 가면 혼나기 때문에, 총 이동시간은 항상 1 분 0 초 이상 59 분 59 초 이하이다.

출력

총 이동시간 x 분 y 초를 출력한다. 첫 번째 줄에 x를, 두 번째 줄에 y를 출력한다.

예제 입력 1 복사

31
34
7
151

예제 출력 1 복사

3
43

예제 입력 2 복사

316
430
643
1253

예제 출력 2 복사

44
2

예제 입력 3 복사

5
10
15
30

예제 출력 3 복사

1
0

 

 

생각

입력이 총 4줄이니 input()함수보다는 readline()함수를 쓰자

입력이 초로 주어지니 입력에 해당하는 걸 다 더해야하니 sum()함수를 사용하자

출력을 할때에 분 초로 계산해야하니 몫으로 나타낼때 소수점까지 나타나니 math모듈의 floor를 사용하자

 

import sys,math

movetime=[]
for i in range(4):
    a=sys.stdin.readline()
    movetime.append(int(a))

print(math.floor(sum(movetime)/60),sum(movetime)%60,sep='\n')

 

다른풀이

a = 0
for i in range(1,5):
    a += int(input())
print(a//60)
print(a%60)

몫에 해당하는 것을 나타낼때 //가 있다는 것을 까먹음

굳이 리스트에 저장을 할 필요가 없다는 것을 깨달음

위의 것으로 했을 때 시간이 44ms가 줄어드는 것을 볼 수 있다.

반응형
Comments