from collections import deque def bfs(n,k): q = deque() q.append((n, 0)) visited =[0] * 100001 visited[n] = 1 while 1: x , t = q.popleft() if x == k: print(t) break else: if (x+1) = 0 and visited[x-1] == 0 : q.append((x-1, t+1)) visited[x-1] = 1 if 0 < 2*x < 100001 and visited[2*x] == 0 : q.append((2*x, t+1)) visited[..
코테/백준 문제풀이
https://www.acmicpc.net/problem/21611 21611번: 마법사 상어와 블리자드 마법사 상어는 파이어볼, 토네이도, 파이어스톰, 물복사버그, 비바라기 마법을 할 수 있다. 오늘 새로 배운 마법은 블리자드이고, 크기가 N×N인 격자에서 연습하려고 한다. N은 항상 홀수이고, ( www.acmicpc.net #include #include #include #pragma warning(disable : 4996) using namespace std; int N, M; int cnt[4] = { 0, }; int map_idx[50][50]; int shark; //아래 오른 위 왼 int dy[4] = { 1, 0, -1, 0 }; int dx[4] = { 0, 1 , 0, -1 };..
https://www.acmicpc.net/problem/12100 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net #pragma warning(disable : 4996) #include #include #include #include using namespace std; int T, N; int com[21][21]; //right down left up int dy[4] = { 0,1,0,-1 }; // row int dx[4] = { 1,0,-1,0 }; // col void..
#include #include using namespace std; int main() { int R, C; int dx[] = { 0, 0, 1, -1 }; int dy[] = { 1, -1, 0, 0 }; char MAP[50][50]; int GDepth[50][50] = { 0}; int WDepth[50][50] = { 0 }; int answer = -1; queue gos; queue water; scanf("%d %d", &R, &C); char input; for (int i = 0; i < R; i++) { for (int j = 0; j < C; j++) { scanf("%c", &input); if (input == '\n') { j--; continue; } if (input =..
https://www.acmicpc.net/problem/1987 1987번: 알파벳 세로 R칸, 가로 C칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 (1행 1열) 에는 말이 놓여 있다. 말은 상하좌우로 인접한 네 칸 중의 한 칸으 www.acmicpc.net #include #include using namespace std; char board[21][21] = {}; bool visit[21] = { false }; int Count = 0, result = 0; int dx[] = { 0, 0, 1, -1 }; int dy[] = { 1, -1, 0, 0 }; int R, C; void dfs(int x, int y, int cnt) { ..
#include #include #include using namespace std; queue q; bool visited[100001]; int result; bool valid(int n) { if (n 100000 || visited[n]) return false; return true; } int BFS(int end) { while (!q.empty()) { int r = q.front().first; int l = q.front().second; q.pop(); if (r == end) return l; if (valid(r*2)) { visited[r * 2] = true; q.push(make_pair(r*2, l + 1)); } if (valid(r +1)) { vi..
https://www.acmicpc.net/problem/4358 4358번: 생태학 프로그램은 여러 줄로 이루어져 있으며, 한 줄에 하나의 나무 종 이름이 주어진다. 어떤 종 이름도 30글자를 넘지 않으며, 입력에는 최대 10,000개의 종이 주어지고 최대 1,000,000그루의 나무가 주어 www.acmicpc.net #include #include #include #include using namespace std; int main() { int i = 0; map m; char tree[31]; int ch = 0; int k = 0; while (!cin.eof()) { cin.getline(tree, 31, '\n'); k++; if (m.find(tree) == m.end()) { m.ins..
https://www.acmicpc.net/problem/2002 2002번: 추월 입력은 총 2N+1개의 줄로 이루어져 있다. 첫 줄에는 차의 대수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 대근이가 적은 차량 번호 목록이 주어지고, N+2째 줄부터 N개의 줄에는 영식이 www.acmicpc.net #include #include #include typedef enum { false, true } bool; int cnt = 0; typedef struct _Node { char carNum[9]; struct _Node* next; }Node; typedef struct { Node* head; int len; Node* tail; }LinkedList; bool IsEmp..