Algoritm/BOJ 30

[BOJ] 2164번 : 카드2

■ 코드 from collections import deque import sys input = sys.stdin.readline n = int(input()) queue = deque() for i in range(1, n+1): queue.append(i) while (len(queue) > 1): queue.popleft() v = queue.popleft() queue.append(v) print(queue[0]) ■ 문제 풀이 1) deque 자료형 이용 2) 먼저 popleft() 로 원소 빼기 3) 다음 빼낸 원소 v를 다시 append() 로 추가 4) queue 원소가 하나 남을 때 까지 진행 문제 출처 : https://www.acmicpc.net/problem/2164 2164번: 카..

Algoritm/BOJ 2021.09.05

[BOJ] 9012번:괄호

import sys input = sys.stdin.readline t = int(input()) def check(vps): stack = [] while vps: v = vps.pop() if v == ')': stack.append(v) else: if not stack: return False else: stack.pop() if stack: return False else: return True for _ in range(t): vps = list(input().rstrip()) if check(vps): print('YES') else: print('NO') ■ 문제 풀이 · 스택 사용 · ')' 일 경우 stack에 값 append · stack이 비어있을 경우 False 반환 · 비어있지 ..

Algoritm/BOJ 2021.09.01

[BOJ] 10773번:제로

import sys k = int(input()) array = [] for _ in range(k): money = int(sys.stdin.readline()) if money == 0: array.pop() else: array.append(money) result = 0 for i in array: result += i print(result) 출처 : https://www.acmicpc.net/problem/10773 10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경 www.acmicpc.net

Algoritm/BOJ 2021.08.25

[BOJ] 1012:유기농 배추

■ 문제풀이 1) dfs 알고리즘 ■ 해답 import sys sys.setrecursionlimit(10 ** 8) def dfs(x, y): if x = n or y = m: return False if graph[x][y] == 1: graph[x][y] = 0 # 상, 하, 좌, 우 dfs(x - 1, y) dfs(x + 1, y) dfs(x, y - 1) dfs(x, y + 1) return True return False # 테스트 케이스 입력 t = int(input()) result = [] for i in range(t): # m = 가로, n = 세로, k = 배추가 심어져 있는 위치의 개수 m, n, k = map(int, sys.stdin.readline().split()) # 0으..

Algoritm/BOJ 2021.08.09