스택, 큐, 덱에 대해서 개념과 함수들에 대해서 배웠다.
양 끝을 조작하는 것이 아니라면 빠른 무작위 액세스를 위해서는 대신 리스트를 사용하는 것이 유리!
팀이 바뀌면서 팀원 반 이상이 변경되었다.
오늘 처음 스터디를 진행하였지만 꽤 물 흐르듯이 자연스럽게 진행이 되었다.
오늘도 팀 스터디를 통해서 새로운 내용들을 배울 수 있었다.
백준의 '풍성 터뜨리기' 문제에 많이 애를 먹었는데
deque의 rotate만 안다면 매우 쉽게 풀릴 문제였다...😭
# 주석 단 코드로 시도했으나 계속 실패하여 시간이 지체된 관계로 답안을 찾아봄.
# gpt로도 왜 실패했는지 물어봤으나 계속 이유를 못 찾음...
# -> 팀 스터디 이후 성환님이 반례 예제를 보여주셨고 index 계산식이 잘못됨.
# 단순히 index를 계산한 결과값만 방문을 했는지 체크를 했음.
# 하지만 현재 위치에서 다음 위치까지 가는 사이에 방문을 했다면 제외해야 함.
# 현재 계산식으로는 방문했던 값을 뛰어넘지 않고 포함해서 계산됨.
# 그럼 굳이 while 문을 사이에 넣어서 방문했는지 체크하는 것은 비효율적이라고 판단함.
# 따라서 애초에 계산식으로 푸는 문제가 아닌 듯.
#잘못 접근한 코드
import math
n = int(input())
balloons = list(map(int, input().split()))
visited = [False] * len(balloons)
answer = []
index = 0
is_forward = True
cnt = len(balloons)
while cnt > 0:
if visited[index]:
index = (index + (1 if is_forward else -1)) % len(balloons)
continue
visited[index] = True
answer.append(index+1)
cnt -= 1
value = balloons[index]
index = int(math.fmod((index + value), len(balloons)))
is_forward = True if value > 0 else False
print(" ".join(map(str, answer)))
#정답 코드
import sys
from collections import deque
input = sys.stdin.readline
n = int(input())
paper = deque(list(enumerate(map(int, input().split()))))
poped = []
while paper:
index, num = paper.popleft()
poped.append(index + 1)
if num > 0:
paper.rotate(-(num-1))
else:
paper.rotate(-num)
print(*poped)
# 1. deque의 rotate 메서드
# deque 내의 요소들을 주어진 수만큼 회전.
# 양수를 주면 오른쪽으로 회전하고, 음수를 주면 왼쪽으로 회전.
# 2. 파이썬의 내장 함수 any, all
# 어느 하나라도 True이므로 True 반환
print(any([False, True, False])) # 출력: True
# 모든 값이 False이므로 False 반환
print(any([False, False, False])) # 출력: False
# 모든 값이 True이므로 True 반환
print(all([True, True, True])) # 출력: True
# 하나라도 False가 있으므로 False 반환
print(all([True, False, True])) # 출력: False
# 3. 문자열에 있는 Python 표현식을 평가하여 해당 값을 반환하는 ast.literal_eval
import ast
# 문자열에 있는 Python 표현식을 평가하여 값을 반환
result = ast.literal_eval("[1, 2, 3]")
print(result) # 출력: [1, 2, 3]
result = ast.literal_eval("{'a': 1, 'b': 2}")
print(result) # 출력: {'a': 1, 'b': 2}
항해99 취업 리부트 코스를 수강하고 작성한 콘텐츠 입니다.