백준-1158 요세푸스 문제
백준-1158 요세푸스 문제
원에 앉아있는 사람의 수 : N
이 원을 빙글빙글 돌면서 K번째 사람을 제거함
나는 무한루프 내에서 변수 i에 대해 한번의 루프마다 1씩 증가하며 i가 K일때 의 리스트의 원소를 삭제하는식으로함.
굳이이랬어야했나 싶다. 그냥 K - 1씩 더해가면서 해당 원소를 삭제하고 리스트의 크기를 넘었을 경우 num = num % len(array)
를 통해서 초기화 시키면 되는게 아닌가 싶다.
- 통과는 했지만 불만족 스러운 코드 😅
N, K = map(int, input().split())
arr = []
resultArr = []
for i in range(0, N):
arr.append(True)
exitValue = 0
z = 0
i = 1 # K관한 변수
while True:
if arr[z] == False:
z += 1
else:
if i == K:
arr[z] = False
resultArr.append(z + 1)
exitValue += 1
if exitValue == N:
break;
i = 0
z += 1
i += 1
if z == N:
z = 0
print('<', end='')
for i in range(0, len(resultArr)):
if i == len(resultArr) - 1:
print(resultArr[i], end='')
else:
print(resultArr[i], end=', ')
print('>')
- solution 😁
N, K = map(int, input().split())
arr = [i for i in range(1, N + 1)]
resultArr = []
popNum = 0
while len(arr) > 0:
popNum = (popNum + (K - 1)) % len(arr)
popElement = arr.pop(popNum)
resultArr.append(popElement)
print('<', end='')
for i in range(0, len(resultArr)):
if i == len(resultArr) - 1:
print(resultArr[i], end='')
else:
print(resultArr[i], end=', ')
print('>')
popNum = (popNum + (K - 1)) % len(arr)
이런식으로 리스트를 통해 원을 구현할수 있다.
Author And Source
이 문제에 관하여(백준-1158 요세푸스 문제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yjs3819/백준-1158-요세푸스-문제저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)