본문 바로가기

분류 전체보기

(172)
[알고리즘] 백준 16918 봄버맨 / 파이썬 www.acmicpc.net/problem/16918 16918번: 봄버맨 첫째 줄에 R, C, N (1 ≤ R, C, N ≤ 200)이 주어진다. 둘째 줄부터 R개의 줄에 격자판의 초기 상태가 주어진다. 빈 칸은 '.'로, 폭탄은 'O'로 주어진다. www.acmicpc.net 풀이 방법 폭탄을 설치할 때, 현재 몇 초인지도 같이 저장한다 그리고 폭탄을 터트릴 때 같이 저장했던 시간이 3초 뒤라면 터트린다 # pypy 제출 def fill(num): for i in range(R): for j in range(C): if Map[i][j][0] == '.': Map[i][j][0], Map[i][j][1] = 'O', num dx, dy = [0, -1, 0, 1, 0], [0, 0, -1, 0, 1]..
[알고리즘] 백준 17070 파이프 옮기기 1 / 파이썬 www.acmicpc.net/problem/17070 17070번: 파이프 옮기기 1 유현이가 새 집으로 이사했다. 새 집의 크기는 N×N의 격자판으로 나타낼 수 있고, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 (r, c)로 나타낼 수 있다. 여기서 r은 행의 번호, c는 열의 www.acmicpc.net pypy 제출 def dfs(p, x, y): global result if x == N-1 and y == N-1: result += 1 return else: if p == 1: if x
[알고리즘] 백준 14499 주사위 굴리기 / 파이썬 www.acmicpc.net/problem/14499 14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지도 www.acmicpc.net def map_move(d, x, y): if B[x][y] == 0: B[x][y] = d return d else: temp = B[x][y] B[x][y] = 0 return temp def sol(dice, x, y): for m in move: if m == 1: dy = y+1 if dy = M: continue y..
[알고리즘] 백준 16500 문자열 판별 / python www.acmicpc.net/problem/16500 16500번: 문자열 판별 첫째 줄에 길이가 100이하인 문자열 S가 주어진다. 둘째 줄에는 A에 포함된 문자열의 개수 N(1 ≤ N ≤ 100)이 주어진다. 셋째 줄부터 N개의 줄에는 A에 포함된 단어가 한 줄에 하나씩 주어진다. A에 �� www.acmicpc.net def sol(idx): global result if idx == len(S): result = 1 return if dp[idx]: return dp[idx] = 1 for i in range(len(A)): if len(S[idx:]) >= len(A[i]): for j in range(len(A[i])): if A[i][j] != S[idx+j]: break else: sol(..
[알고리즘] 백준 16637 괄호 추가하기 / python www.acmicpc.net/problem/16637 16637번: 괄호 추가하기 첫째 줄에 수식의 길이 N(1 ≤ N ≤ 19)가 주어진다. 둘째 줄에는 수식이 주어진다. 수식에 포함된 정수는 모두 0보다 크거나 같고, 9보다 작거나 같다. 문자열은 정수로 시작하고, 연산자와 정수가 www.acmicpc.net #스택에 숫자와 연산자를 넣어서 계산 def cal2(lst): op, num = [], [] for i in lst[::-1]: if i == '+' or i == '-' or i == '*': op.append(i) else: num.append(int(i)) while len(num) > 1: n1 = num.pop() n2 = num.pop() oper = op.pop() if oper ..
[알고리즘] 백준 9019 DSLR / python, bfs www.acmicpc.net/problem/9019 9019번: DSLR 네 개의 명령어 D, S, L, R 을 이용하는 간단한 계산기가 있다. 이 계산기에는 레지스터가 하나 있는데, 이 레지스터에는 0 이상 10,000 미만의 십진수를 저장할 수 있다. 각 명령어는 이 레지스터에 � www.acmicpc.net from collections import deque def bfs(): q = deque() q.append([A, '']) visited[A] = 1 while q: x, y = q.popleft() if x == B: print(y) D = x*2 % 10000 if not visited[D]: visited[D] = 1 q.append([D, y + 'D']) S = x - 1 if x ..
[알고리즘] 백준 14891 톱니바퀴 / python www.acmicpc.net/problem/14891 14891번: 톱니바퀴 총 8개의 톱니를 가지고 있는 톱니바퀴 4개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데, 가장 왼쪽 톱니바퀴 www.acmicpc.net def rotate(t_num, t_dir): T[t_num] = T[t_num][t_dir*-1:] + T[t_num][:t_dir*-1] def left(t_num, t_dir): if t_num == -1 or T[t_num][2] == T[t_num+1][6] : return left(t_num-1, t_dir*-1) rotate(t_num, t_dir) def right(t_num, t_dir): ..
[알고리즘] 백준 13913 숨바꼭질4 / python https://www.acmicpc.net/problem/13913 13913번: 숨바꼭질 4 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 �� www.acmicpc.net ✔ 풀이과정 bfs로 탐색을 할거니까 자식노드를 차례로 모두 방문한다. 방문하면서 K값인지 아닌지 확인한다. dist는 노드까지 가는데 몇초걸리는가?를 의미한다. 예를들어 5의 자식노드인 4, 6, 10의 dist는 1이므로 4, 6, 10까지 걸리는 최소 시간은 1인것이다. dist 배열 👉 dist[현재 노드] = 걸리는 시간(초) move 배열 👉 mo..