Algoritm 43

[BOJ] 9093번 : 단어뒤집기

■ 문제풀이 · 리스트[start:stop:step] · 리스트[::-1]은 리스트를 역순으로 구성한 리스트를 반환 · 따라서 split()으로 구분 하여 [::-1] 역순으로 반환 · join 함수 - 매개변수로 들어온 리스트 요소를 하나의 문자열로 변환 - ''.join(리스트) : ['a', 'b', 'c'] 리스트를 => 'abc' 문자열로 합쳐서 반환 - '구분자'.join(리스트) : '_'.join(['a', 'b', 'c']) => 'a_b_c' 문자열로 반환 ■ 문제해답 import sys input = sys.stdin.readline t = int(input()) for _ in range(t): sentence = list(map(list, input().split())) for i..

Algoritm/BOJ 2021.09.08

[BOJ] 10828번 : 스택

■ 문제풀이 · push -> append · pop -> pop · size -> len · top -> stack[-1] 'if not stack:' stack이 비어있을 경우 False를 반환함으로 if not 을 사용하여 print(1) 수행 ■ 문제해답 import sys input = sys.stdin.readline n = int(input()) stack = [] for _ in range(n): data = input().split() if data[0] == 'push': stack.append(data[1]) elif data[0] == 'pop': if not stack: print(-1) else: print(stack.pop()) elif data[0] == 'size': pri..

Algoritm/BOJ 2021.09.07

[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