백준/Python

[백준] 27161 크레이지 타임 (python 파이썬)

노랑꼬리 2023. 1. 15. 21:04

문제링크 : https://www.acmicpc.net/problem/27161

 

27161번: 크레이지 타임

우주 어딘가에는 시간을 셈으로써 시간이 흐르도록 만들어 주는 존재들이 있습니다. 영겁의 시간을 살아온 그들은 더 재미있게 시간을 세기 위해 시간을 세는 게임을 만들어 냈답니다. 그게 바

www.acmicpc.net

 

 

작성코드

 

 

해설

문제에 기본 법칙 하나와 특수 규칙이 세가지가 있다.

 

기본 법칙

1. 시작 시간은 1시이다. 다음 사람이 카드를 열때 시간은 1시간씩 더해진다.

 

특수 규칙

1. 시간 역행의 법칙

모래시계 카드가 펼쳐지면 시간이 거꾸로 흐른다. 모래시계 카드가 펼쳐질 때마다 시간의 흐름은 반전된다.

2. 동기화의 법칙

펼친 카드에 적힌 시각과 현재 시각이 일치하면 즉시 중앙의 판을 내려친다.

3. 과부화의 원칙

위 두개의 법칙이 동시에 발동한다면 두 법칙 모두 무효화 된다.

 

이 네가지 규칙을 코드에 적용하면 된다.

 

기본 법칙 1

 

 

과부화의 원칙으로 동시에 적용되는 경우는 무조건 결과를 NO로 고정해준다.

 

모래시계만 적용될 경우 더해지는 시간에 *-1을 해주어 역행을 처리해준다.

 

모래시계가 아닐 경우 현재 시각과 카드시간이 같다면 결과를 YES로 해준다.

 

마지막으로 시간의 흐름과 0시와 12시에서 시간 흐름 처리만 해주면 된다.