알고리즘 공부(C++)

1476 날짜 계산

혀니리리 2022. 8. 12. 11:11
728x90

1476번: 날짜 계산 (acmicpc.net)

 

1476번: 날짜 계산

준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타

www.acmicpc.net

어제 했던 브루트포스 문제를 오늘도 해봤다..

정답률이 높았던 문제인데..

맞긴맞았다. 하지만 코드를 더 짧게 할 필요가 있어 보인다.

E,S,M = map(int, input().split())
i = 0
while True:
  if (E % 15 == 0):
    E = 0
  if (S % 28 == 0):
    S = 0
  if (M % 19 == 0):
    M = 0
  if (i != 0 and i % 15 == E and i % 28 == S and i % 19 == M):
    break
  i += 1
print(i)

이게 내 코드다.

배웠듯이 브루트포스 알고리즘은 정직하게 하나씩 더해가면서 해당하는 값이 있는지 찾는 알고리즘이다..

정말 쉬워보였지만 하나의 문제가 있었다. %를 이용해서 그 값이 0이 될 때의 값을 출력하려고 했는데 그렇게되면

몫이 되는 값이 들어왔을 때 크기 비교를 할 수 없는 문제가 있었다. 

살짝의 나누기 코드를 손보면 되는 문제였다.

E,S,M = map(int, input().split())
i = 0
while True:
  if ((i - E) % 15 == 0 and (i-S) % 28 == 0 and (i-M) % 19 == 0):
    break
  i += 1
print(i)

이 코드를 보면 E,S,M의 위치를 몫 쪽으로 바꿨다.

이는 연산에서 어찌보면 아주 간단하게 우항의 식을 좌항으로 옮긴 방법이다. 참고하자.

728x90

'알고리즘 공부(C++)' 카테고리의 다른 글

17478 재귀함수가 뭔가요?  (0) 2022.08.14
1026 보물  (0) 2022.08.13
1436 영화감독 숌  (0) 2022.08.11
1966 프린터 큐  (0) 2022.08.10
11047 코인  (0) 2022.08.09