반응형
코드 작성
n, k = map(int, input().split())
arr = list(range(1,n+1))
answer = []
i = k - 1
for _ in range(n):
if len(arr) > i:
answer.append(arr.pop(i))
i += k - 1
elif len(arr) <= i:
i = i % len(arr)
answer.append(arr.pop(i))
i += k -1
print("<", ', '.join(str(i) for i in answer), ">", sep = '') #2에서 설명
코드 풀이
#1. 문제 설명
n, k = map(int, input().split())
arr = list(range(1,n+1)) #arr = [1, 2, 3, 4, 5 ... (n+1)]
ans = [ ]
i = k - 1 #i는 인덱스를 표현, 원으로 둘러싸인 배열의 첫 수를 1로 시작, i는 0부터 시작이므로 '-1'을 추가
for _ in range(n):
if len(arr) > i: #배열의 길이가 i보다 큰 경우(i는 인덱스!)
ans.append(arr.pop(i)) #arr의 i번째 배열을 빼고, 그 뺀 값을 ans에 다시 추가
i += k - 1 #다시 인덱스(i)를 k만큼 증가하는데 숫자 1개를 앞전에서 뺏으므로 ‘-1’ 추가
elif len(arr) <= i:
i = i % len(arr)
ans.append(arr.pop(i))
i += k -1
print("<", ', '.join(str(i) for i in ans), ">", sep = '')
#2. print문 join함수
print("<", ', '.join(str(i) for i in ans), ">", sep = '')
sep=''가 없을 경우 < 1, 2, 3, 4, 5 > 으로 표기됨
','.join으로 작성 할 경우 <1,2,3,4,5>으로 표기됨
''.join으로 작성할 경우 <12345>으로 표기됨
반응형
'코딩 > Python' 카테고리의 다른 글
[Python] 10807 개수 세기 (0) | 2022.11.16 |
---|---|
[Python] 1406 에디터 (0) | 2022.11.16 |
[Python] 백준 10872 팩토리얼 (0) | 2022.11.15 |
[Python] 백준 1789 수들의 합 (0) | 2022.11.14 |
[Python] 백준 10866 덱 (1) | 2022.11.13 |