백준(8)
-
백준 27433: 파이썬으로 팩토리얼 풀기. 재귀함수 복습.
팩토리얼 문제. 재귀로 풀 수도 있고 아닐 수도 있다. 우선 재귀로 안하고 풀 때 : import sys def factorial(n: int) -> int: fact_num = 1 for i in range(1, n+1): fact_num = fact_num * i return fact_num a = int(sys.stdin.readline()) factorial(a) print(factorial(a)) 이렇게 for문을 돌려보면 된다. 그리고 재귀함수를 써보면? import sys def factorial(n: int) -> int: if n
2023.08.14 -
백준 2346. 파이썬 데크 문제풀이
from collections import deque n = int(input()) numbers = list(map(int, input().split())) balloons = deque([(i+1, numbers[i]) for i in range(n)]) result = [] while balloons: index, value = balloons.popleft() result.append(index) if not balloons: break if value > 0: for _ in range(value - 1): balloons.append(balloons.popleft()) else: for _ in range(abs(value)): balloons.appendleft(balloons.pop()) ..
2023.08.09 -
파이썬 queue 모듈 사용하기. 백준 2164 파이썬 문제풀이.
import queue cards = int(input()) deck = queue.Queue() for i in range(1, cards+1): deck.put(i) print(list(deck.queue)) 지금 백준 문제를 하고 있는데 파이썬 queue 모듈을 쓰고싶어서 공부중이다. 우선 queue를 import 하고 초기화가 queue.Queue()를 한다. 희한하다. 아마 Queue() 말고 다른 것도 있나보다 아마 deque겠지? 데크라고 한다. 데큐라고 하지말자. list(deck.queue)를 했더니 리스트 형식으로 안에 들어있는 요소들이 모두 나왔다. https://docs.python.org/3/library/queue.html queue — A synchronized queue cl..
2023.08.07 -
백준 9012 파이썬 문제풀이.
import sys def is_balanced(s): stack = [] for char in s: if char == '(': stack.append(char) elif char == ')': #stack에 빈값이 없고(True 이며) stack의 끝자리가 '(' 문자인 경우, if stack and stack[-1] == '(': #맨 마지막 것을 pop 한다. stack.pop() else: return False # not stack = True라는 뜻. return not stack a = int(sys.stdin.readline()) for _ in range(a): s = input().strip() if is_balanced(s): print('YES') else: print('NO') ..
2023.08.07 -
백준 10773 파이썬 문제풀이
import sys a = int(sys.stdin.readline()) Stack = [] result = 0 for _ in range(a): b = int(sys.stdin.readline()) if b != 0: Stack.append(b) else: Stack.pop(-1) print(sum(Stack)) append와 pop의 개념을 확인하는 문제여서 어렵지 않게 마무리했다.
2023.08.07 -
백준 2798 파이썬 문제풀이
import sys a, b = map(int, sys.stdin.readline().split()) arr = list(map(int, input().split())) result = 0 for i in range(a): for j in range(i+1, a): for k in range(j+1, a): if arr[i] + arr[j] + arr[k] > b: continue else: # 일단 저장하고, 그다음 계속 result와 다음 더한 값을 비교하기. result = max(result, arr[i] + arr[j] + arr[k]) print(result) 저 max를 하지 않고 result를 list로 저장해 append하고 max(result) 한 사람도 있었다. 호오~~ 기발하다. h..
2023.08.07