풀이 및 해설(주석)
import sys
def main():
# 입력받기
N = int(sys.stdin.readline().strip())
tmp_nums = list(map(int, sys.stdin.readline().strip().split()))
# 입력받은 수들을 인덱스와 함께 쌍으로 묶어 nums 리스트 생성
nums = [(i, tmp_nums[i]) for i in range(N)]
target_idx = 0 # 현재 타겟 인덱스 초기화
rst = [] # 결과값을 담을 리스트 초기화
for i in range(N):
idx, num = nums.pop(target_idx) # nums에서 타겟 인덱스에 해당하는 요소를 추출
rst.append(idx) # 인덱스 값을 결과 리스트에 추가
# 타겟 인덱스를 새로 계산
if nums: # nums가 비어있지 않은 경우만 인덱스를 계산
if num > 0:
target_idx = (target_idx + num - 1) % len(nums)
else:
target_idx = (target_idx + num) % len(nums)
# 결과값 출력
for num in rst:
print(num + 1, end=' ')
if __name__ == '__main__':
main()
'백준' 카테고리의 다른 글
백준 2236 칩 만들기 (파이썬) (0) | 2023.09.22 |
---|---|
백준 14889 스타트와 링크 (파이썬) (0) | 2023.05.22 |
백준 1021 회전하는 큐 (파이썬) (0) | 2023.05.22 |
백준 1063 킹 (파이썬) (0) | 2023.05.15 |
백준 14716 현수막 (자바) (0) | 2023.01.16 |