본문 바로가기

분류 전체보기521

[ 파이썬(python) ] 백준 18258 - 큐 📌 백준 18258 - 큐 문제 설명 💡 나의 풀이 백준 10773 - 제로 와 비슷한 문제지만 front, back의 경우 그리고 pop에서 제일 앞에 있는 정수를 빼는 경우만 생각하면 된다. 제일 앞에 있는 값을 빼낼 때에는 deque를 사용하여 실행시간을 단축시키는 것 잊지 말자! from collections import deque import sys input = sys.stdin.readline n = int(input()) stack = deque([]) def push(x): stack.append(x) def pop(): if not stack: return -1 return stack.popleft() def size(): return len(stack) def empty(): if n.. 2021. 5. 4.
[ 파이썬(python) ] 백준 10828 - 스택 📍 백준 10828 - 스택 문제: 백준 10828 - 스택 💡 나의 풀이 3개월 전 이 문제를 봤을 때는 못 풀었는데 지금은 풀게 된 문제다. 그때는 함수를 따로따로 만드는지 몰랐었는데... (추억 돋음) 문제풀이는 다음과 같다. 각 기능별로 함수를 만든다. n만큼 입력을 받는데, 입력이 함수의 이름에 포함되면 해당 함수를 실행시킨다. 참고로 함수안에 if, else문을 사용해도 되는데 else를 빼고 return문을 집어넣었다. if문 지나 조건을 통과하지 못한 기능만 남아 자연스럽게 return을 만나기 때문이다. 또, push 값은 split()으로 나눠 [1]번째를 사용하면 된다. import sys input = sys.stdin.readline n = int(input()) stack = [.. 2021. 5. 4.
[ 파이썬(python) ] 백준 10773 - 제로 📌 백준 10773 - 제로 문제 설명 💡 나의 풀이 빈 리스트를 선언한다. 입력이 0이면 pop, 아니면 리스트에 추가한다. 남은 값들을 모두 더한다. import sys input = sys.stdin.readline n = int(input()) stack = [] for _ in range(n): recent = int(input()) if not recent: stack.pop() else: stack.append(recent) print(sum(stack)) 2021. 5. 4.
[ 파이썬(python) ] 백준 1158 - 요세푸스 문제 📌 백준 1158 - 요세푸스 문제 문제 설명 💡 나의 풀이 요세푸스 문제는 연결리스트(linkedList)로 풀 수 있는 전형적인 문제이지만 큐(queue)를 사용해서도 풀 수 있다. k번째의 사람들이 계속해서 제거되어야 하므로 cnt를 0으로 초기화한다. len(arr)이 0이될때까지 제일 앞에 있는 수가 제일 뒤로 이동하면서 순환한다. 한번 순환 할때마다 cnt가 1씩 누적된다. 만약, cnt가 k-1와 같다면 다음 사람이 제거되야하므로 해당 수를 stack에 추가한다.(인덱스는 0부터 세므로 k-1로 선언했다.) stack으로 빠졌다면 다시 0부터 카운트한다. 그럴싸한 로직이다. 하지만, 이대로 제출하면 실행시간이 비약적으로 높게 나온다. 그래서 다음 제거할 사람의 인덱스를 찾을 때 (k-1) m.. 2021. 5. 4.
[ 파이썬(python) ] 백준 2164 - 카드2 📌 백준 2164 - card2 문제 설명 💡 나의 풀이 단순하게 문제에 나와있는 대로 구현하면 되는데, 제일 위에 있는 카드를 제일 아래에 있는 카드 밑으로 옮기는 과정은 deque의 popleft()를 사용했다. deque를 사용하지 않고 pop(0)을 사용하게되면, 범위가 500,000정도로 크기 때문에 시간 초과 판정이 난다. 따라서 deque를 적극 사용하도록 하자. while문의 범위를 card로만 작성하면 더 이상 뺼 원소가 없기 때문에 오류가 난다. len(cards)의 길이가 1이하로 줄어들 때로 설정하자. import sys from collections import deque input = sys.stdin.readline n = int(input()) cards = deque(ran.. 2021. 5. 4.