728x90
어제 했던 브루트포스 문제를 오늘도 해봤다..
정답률이 높았던 문제인데..
맞긴맞았다. 하지만 코드를 더 짧게 할 필요가 있어 보인다.
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 |