문제풀이/백준(Boj) 문제풀이 188

[백준][스택] 10828. 스택 (파이썬/Python)

#스택 import sys input = sys.stdin.readline def pushx(x): return stack.append(x) def popx(): if len(stack) == 0: return -1 else: return stack.pop() def sizex(): return len(stack) def emptyx(): if len(stack) == 0: return 1 else: return 0 def topx(): if len(stack) == 0: return -1 else: return stack[-1] n = int(input()) stack = [] for i in range(n): s = input().split() operator = s[0] if operator == ..

[백준][DFS/BFS] 2178. 미로 탐색 (파이썬/Python)

import sys input = sys.stdin.readline n,m = map(int,input().split()) matrix = [] for _ in range(n): matrix.append(list(input())) #방문한 경로를 저장하기 위함 전부 0으로 만들어 일단은 모두 방문하지 않은 것으로 처리 visited = [[0]*m for _ in range(n)] # 상하좌우 방향을 넣어줌 dx = [-1,1,0,0] dy = [0,0,-1,1] #BFS는 거리를 구할 때 자주 사용되는 탐색 기법 #queue 방식을 사용해서 쓰는 것이 일반적 queue = [[0,0]] visited[0][0] = 1 #시작지점 1로 만들어 사용 while queue: x,y = queue.pop(0)..

[백준][동적 계획법1] 9507. Generations of Tribbles (파이썬/Python)

import sys input = sys.stdin.readline def koong(n): if n 3: return koong(n-1)+koong(n-2)+koong(n-3)+koong(n-4) t = int(input()) for _ in range(t): n=int(input()) print(koong(n)) # 큰 수를 넣어야 하기 때문에 시간초과가 나온다. # 동적 계획법으로 풀어야 한다. import sys input = sys.stdin.readline t = int(input()) for _ in range(t): n = int(input()) dp = [1,1,2,4]..

[백준][분할 정복] 1629. 곱셈(파이썬/Python)

import sys input = sys.stdin.readline a,b,c = map(int,input().split()) print((a**b)%c) # 시간초과 당연하다 ^-^. 범위가 엄청 넓기 때문 이를 쪼개서 사용해야 한다. import sys input = sys.stdin.readline a,b,c = map(int,input().split()) def dc(a,b): # 지수가 1일 경우엔 n^1은 n이기 때문에 그대로 값 반환 if b == 1: return a % c else: temp = dc(a,b//2) # 지수가 홀수라면 n^2 * n^2 * n을 해주어야 하기에 이렇게 진행 if b % 2 == 1: return temp * temp * a % c else: return t..