코딩공부/알고리즘

[파이썬 풀이] 백준 2884.알람 시계

잉옐잉 2021. 11. 5. 22:32

문제   

상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다.

상근이는 모든 방법을 동원해보았지만, 조금만 더 자려는 마음은 그 어떤 것도 없앨 수가 없었다.

이런 상근이를 불쌍하게 보던, 창영이는 자신이 사용하는 방법을 추천해 주었다.

바로 "45분 일찍 알람 설정하기"이다.

이 방법은 단순하다. 원래 설정되어 있는 알람을 45분 앞서는 시간으로 바꾸는 것이다. 어차피 알람 소리를 들으면, 알람을 끄고 조금 더 잘 것이기 때문이다. 이 방법을 사용하면, 매일 아침 더 잤다는 기분을 느낄 수 있고, 학교도 지각하지 않게 된다.

현재 상근이가 설정한 알람 시각이 주어졌을 때, 창영이의 방법을 사용한다면, 이를 언제로 고쳐야 하는지 구하는 프로그램을 작성하시오.

 

입력   

첫째 줄에 두 정수 H와 M이 주어진다. (0 ≤ H ≤ 23, 0 ≤ M ≤ 59) 그리고 이것은 현재 상근이가 설정한 놓은 알람 시간 H시 M분을 의미한다.

입력 시간은 24시간 표현을 사용한다. 24시간 표현에서 하루의 시작은 0:0(자정)이고, 끝은 23:59(다음날 자정 1분 전)이다. 시간을 나타낼 때, 불필요한 0은 사용하지 않는다.

ex) 23 40

 

출력   

첫째 줄에 상근이가 창영이의 방법을 사용할 때, 설정해야 하는 알람 시간을 출력한다. (입력과 같은 형태로 출력하면 된다.)

ex) 22 55

 

코드   

x,y=input().split()
if int(x)==0 and int(y)>=45:
    x=0
elif int(x)==0:
    x=24
min=((int(x)*60)+int(y))-45
print(min//60,min%60)

 

관련 개념 정리   

input

파이썬에서는 값을 사용자로부터 입력받을때 input함수를 사용합니다.

입력받은 값을 넣을 변수 이름 = input("띄울 메세지")

 

단! input함수는 입력받은 모든 내용을 문자열로 인식합니다. 따라서 입력받은 내용을 정수로 변환하려면

d = int(input())

와 같은 형태로 작성하거나,  나중에 변수를 사용할때

print(int(d)+2)

와 같이 int()로 감싸서 작성할 수 있습니다.

 

 

split

또한 값을 입력받을 때, 한 번에 여러 값을 입력받을 수 있습니다.
그때 사용할 수 있는 함수가 바로 split 함수입니다.

split할 변수 이름.split('구분자')

 

만약 split()일 경우, space, tap, enter와 같은 공백을 기준으로 문자열을 나눕니다.

 

 

if문

<조건> 하면, <코드>를 실행하고 싶을때 쓸 수 있는것이 바로 if문입니다.

기본적인 형태는 아래와 같습니다.

if 조건문 1:
	실행 코드 1 ...
elif 조건문 2:
	실행 코드 2 ...
else:
	실행 코드 3 ...

해석을 하자면, 조건문 1을 충족하면 실행 코드 1을 실행하고, 그게 아닌 조건문 2를 충족하면 실행 코드 2를 실행한다.

조건문 1과 조건문 2를 모두 충족하지 않으면 실행 코드 3을 실행한다. 입니다.

elif와 else는 필수는 아닙니다.

 

 

비교 연산자

조건문에는 주로 두 수를 비교하는 비교연산자가 사용됩니다.

x<y x는 y보다 작다.
x<=y x는 y보다 작거나 같다.
x>y x는 y보다 크다.
x>=y x는 y보다 크거나 같다.
x==y x와 y는 같다.
x!=y x와 y는 같지 않다.

 

 

산술 연산자

x+y x 더하기 y
x-y x 빼기 y
x*y x 곱하기 y
x/y x 나누기 y
x//y x 나누기 y의 몫
x%y x 나누기 y의 나머지
x**y x의 y제곱

 

 

논리 and 연산자

and 연산자는 비교하는 두 대상이 모두 참일때만 true를 반환하고,

하나라도 거짓일 경우 false를 반환합니다.

a and b

비교 할 두 대상 사이에 and를 타이핑하면 됩니다.

 

+) 비트 연산자 &

a & b

파이썬에서 &는 비트연산자 입니다.

두 대상을 비트 연산을 한 후 결과를 도출합니다.