728x90
N, K, M = map(int,input().split())
result = 0
tmp_m = M
while result < N:
result += 1
if K % (N - result + 1) == tmp_m % (N - result + 1):
break
if K == tmp_m:
break
else:
tmp_m -= K
while tmp_m <= 0:
tmp_m += (N - result + 1)
print(result)
하지만 다시 골드3이 내 앞을 가로 막았다. 어제 두시까지 했었나...?
확실히 잠을 자고 오니 머리가 잘돌아간다. 그래봤자 Trial & Error 방식으로 풀긴했지만 ㅋㅋ
처음에는 원형큐로 풀었는데 메모리 초과가 떠서 다른 방향으로 생각했다.
위에 작성한 코드는 원소 직접 돌리는 것이 아닌 위치를 계속 갱신시키는 코드이다.
원소의 자리값을 tmp_m 으로 두고 K자리의 값이 빠질때 마다 갱신시킨다.
0 이하로 내려가면 뒤로 보내는데, 이때 N-result + 1 은 해당 단계에서의 남은 원소의 갯수이다.
이렇게 까지 구하고 마지막 하나가 모자랐는데 남은 원소의 갯수가 K 보다 작을때 값들을 구하지 못했다.
여기에서 모든 시간을 다 쓴것 같다.
이건 잠을 자고 오니 조금 쉽게 구했는데
K값을 원소로 나눈 나머지랑 tmp_m의 값을 원소로 나눈 나머지가 같은 경우가 같으면 break 시켜주면된다.
두번째 if 문이랑 같은데 원형 큐의 개념을 도입한것이다. (다시보니 두번째 if문도 중복이다ㅋㅋ)
잠의 중요성을 알게된 문제이다.
이 문제는 머리를 더 써야하는것같다.
깨고나니 수학 문제를 푼것같아서 기분이 좋다.
'STUDY > Algorithm' 카테고리의 다른 글
[백준] 2660 회장뽑기 python (0) | 2021.03.28 |
---|---|
[백준] 2636 치즈 python (0) | 2021.03.28 |
[백준] 12904 A와B python (0) | 2021.03.26 |
[백준] 12967 pqr python 못풀었다. (0) | 2021.03.26 |
[백준] 12871 무한 문자열 (0) | 2021.03.26 |