목록Algorithm/BFS&DFS (22)
DOTY
코딩테스트 연습 - 소수 찾기 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 예외를 생각 못해서 오래 걸린 문제. #include using namespace std; int check_primNum[10000000] = {0, }; int check[7] = {0, }; string nums; int answer = 0; unordered_set s; void do_primNum(int N) { check_primNum[0] = 1; check_primNum[1] = 1; for(int i = 2..
2151번: 거울 설치 (acmicpc.net) 2151번: 거울 설치 첫째 줄에 집의 크기 N (2 ≤ N ≤ 50)이 주어진다. 다음 N개의 줄에는 N개의 문자로 집에 대한 정보가 주어진다. ‘#’는 문이 설치된 곳으로 항상 두 곳이며, ‘.’은 아무 것도 없는 것으로 빛은 www.acmicpc.net BFS로 푼 문제로 갔던곳은 또 방문 못하도록 해야한다고 생각했지만 반례를 찾아 수정 후 정답을 맞춘 문제 #include using namespace std; int main(void) { int N; int door_x, door_y; cin >> N; char map[50][50] = {0, }; // 0 : not arrive, 1 : arrive, 2 : mirror setting int ch..
2206번: 벽 부수고 이동하기 (acmicpc.net) 2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로 www.acmicpc.net 초반에는 벽 부수는 것 때문에 난감했던 문제 #include using namespace std; int x_p[4] = {0, 0, 1, -1}; int y_p[4] = {1, -1, 0, 0}; char maze[1000][1000] = {0, }; // first : length, second : wall_check - 한번도 안지났으면 0, 부쉈으면 1 pair check[..
9663번: N-Queen (acmicpc.net) 9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 몇 주 전에 하려다가 머리가 안 굴러가서 포기했던 문제. #include using namespace std; int N; int answer; int check(int chess[15][15], int x, int y) { int tmp_X = x-1; int min = y-x; int sum = x+y; while(tmp_X >= 0) { if(min + tmp_X >= 0) { if(chess[tmp_X][min + tm..
1707번: 이분 그래프 (acmicpc.net) 1707번: 이분 그래프 입력은 여러 개의 테스트 케이스로 구성되어 있는데, 첫째 줄에 테스트 케이스의 개수 K가 주어진다. 각 테스트 케이스의 첫째 줄에는 그래프의 정점의 개수 V와 간선의 개수 E가 빈 칸을 사이에 www.acmicpc.net 뻘짓해서 좀 걸렸던 문제.. #include using namespace std; int check[20001]; int flag; // 0 : NO , 1 : YES vector graph(20001); // div : 1 or 2 void dfs(int vertex, int div) { if(flag == 0) { return; } int size = graph[vertex].size(); check[vert..
2665번: 미로만들기 (acmicpc.net) 2665번: 미로만들기 첫 줄에는 한 줄에 들어가는 방의 수 n(1 ≤ n ≤ 50)이 주어지고, 다음 n개의 줄의 각 줄마다 0과 1이 이루어진 길이가 n인 수열이 주어진다. 0은 검은 방, 1은 흰 방을 나타낸다. www.acmicpc.net #include using namespace std; int N; int x_p[4] = {0, 0, 1, -1}; int y_p[4] = {1, -1, 0, 0}; int room[50][50] = {0, }; int check[50][50] = {0, }; void bfs() { queue q; int x, y; q.push(make_pair(0, 0)); check[0][0] = 0; while(!q.empt..
1520번: 내리막 길 (acmicpc.net) 1520번: 내리막 길 여행을 떠난 세준이는 지도를 하나 구하였다. 이 지도는 아래 그림과 같이 직사각형 모양이며 여러 칸으로 나뉘어져 있다. 한 칸은 한 지점을 나타내는데 각 칸에는 그 지점의 높이가 쓰여 있으 www.acmicpc.net 시간이 생각보다 좀 걸렸던 문제... DFS와 Memoization을 사용했던 문제인데 2년 전에 공부한 것을 다 까먹었다..ㅠㅠㅠ #include using namespace std; int x_p[4] = {0, 1, 0, -1}; int y_p[4] = {1, 0, -1, 0}; int road[500][500]; int memo[500][500]; int M, N; int dfs(int x, int y) { if..
12100번: 2048 (Easy) (acmicpc.net) 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net 문제는 Easy라고 적혀있지만 나는 Easy하지 않았던 문제... 머리가 안돌아가서 몇 시간 풀어봤지만 정답 보기에는 너무 아쉬워서 계속 시도한 문제... 내가 이겼다. 흐헤헤 #include using namespace std; int N; int max_no; void play(int board[][20], int cnt); // 1. 위로 void playUp(int b..
13023번: ABCDE (acmicpc.net) 13023번: ABCDE 문제의 조건에 맞는 A, B, C, D, E가 존재하면 1을 없으면 0을 출력한다. www.acmicpc.net #include using namespace std; int fri[2000]; int check[2000]; int answer; vector con; void backtracking(int people, int cnt) { if(cnt == 5) { answer = 1; return; } check[people] = 1; for(int i = 0; i < con[people].size(); i++) { if(check[con[people][i]] == 0) { backtracking(con[people][i], cn..
18352번: 특정 거리의 도시 찾기 (acmicpc.net) 18352번: 특정 거리의 도시 찾기 첫째 줄에 도시의 개수 N, 도로의 개수 M, 거리 정보 K, 출발 도시의 번호 X가 주어진다. (2 ≤ N ≤ 300,000, 1 ≤ M ≤ 1,000,000, 1 ≤ K ≤ 300,000, 1 ≤ X ≤ N) 둘째 줄부터 M개의 줄에 걸쳐서 두 개 www.acmicpc.net BFS였는데 왜이리 안풀리지 했는데 잔오류가 너무 많았었다 #include using namespace std; int city[300001]; int check[300001]; int main(void) { int N, M, K, X; cin >> N >> M >> K >> X; fill_n(check, 300001, 0); f..