백준 25

[BOJ] - 17144. 미세먼지 안녕!

[URL] https://www.acmicpc.net/problem/17144 17144번: 미세먼지 안녕! 미세먼지를 제거하기 위해 구사과는 공기청정기를 설치하려고 한다. 공기청정기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기의 칸으로 나눴다. 구사과는 뛰어난 코딩 실력을 이용해 각 칸 (r, c)에 있는 미세먼지의 양을 실시간으로 모니터링하는 시스템을 개발했다. (r, c)는 r행 c열을 의미한다. 공기청정기는 항상 왼쪽 열에 설치되어 있고, 크기는 두 행을 차지한다. 공기청정기가 설치되어 있지 않은 칸에는 미세먼 www.acmicpc.net [풀이 과정] * 시뮬레이션 1. input() -> map[][]정보값 입력 받는다. // 미세먼지면 벡터에 저장..

Algorithm/백준 2019.06.25

[BOJ] - 2178. 미로 탐색

[URL] https://www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net [풀이 과정] * BFS queue 최단거리 1. input() 2. bfs(x, y) 출발 위치(x, y) (1) 큐에 push (2) visited[x][y] = true (3) dist[][] 큐가 빌때 까지 --> x, y에서 더이상 갈 곳이 없을 경우 종료 큐에서 현재 위치(x, y) pop 다음 위치 (nx, ny) 4방향 탐색(상하좌우) --> [조건 1] [조건 2] 둘 다 만족 하는 경우 가능하면 ??..

Algorithm/백준 2019.06.20

[BOJ] - 2309. 일곱 난쟁이

[URL] https://www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net [풀이 과정] 1. 난쟁이 9개 오름차순 정렬 2. 9개 중 2개 선택 (재귀 활용 완전 탐색) 3. 9개의 합에서 2개의 합을 빼서 100이면 정답 4. 7개 난쟁이 정답 오름차순으로 출력 [소스 코드] 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758..

Algorithm/백준 2019.06.11

[BOJ] - 14503. 로봇 청소기

[URL] https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 벽 또는 빈 칸이다. 청소기는 바라보는 방향이 있으며, 이 방향은 동, 서, 남, 북중 하나이다. 지도의 각 칸은 (r, c)로 나타낼 수 있고, r은 북쪽으로부터 떨어진 칸의 개수, c는 서쪽으로 부터 떨어진 칸의 개수이다. 로봇 청소기는 다음 www.acmicpc.net [풀이 과정] * 단순 시뮬레이션 [소스 코드] 123456789101112131415161718192021222324..

Algorithm/백준 2019.04.13

[BOJ] - 16234. 인구 이동

[URL] https://www.acmicpc.net/problem/16234 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모든 나라는 1×1 크기이기 때문에, 모든 국경선은 정사각형 형태이다. 오늘부터 인구 이동이 시작되는 날이다. 인구 이동은 다음과 같이 진행되고, 더 이상 아래 방법에 의해 인구 이동이 없을 때까지 지속된다. 국경선을 공유하는 두 나라의 인구 차이가 L명 www.acmicpc.net [풀이 과정] * DFS (기존 단지번호 붙이기 문제와 유사) 1. 그룹화가 우선 --> 그룹이 생기지 않으면 종료 2. ..

Algorithm/백준 2019.04.12

[BOJ] - 14499. 주사위 굴리기

[URL] https://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개의 줄에 지도에 쓰여 있는 수가 북쪽부터 남쪽으로, 각 줄은 서쪽부터 동쪽 순서대로 주어진다. 주사위를 놓은 칸에 쓰여 있는 수는 항상 0이다. 지도의 각 칸에 쓰여 있는 수는 10을 넘지 않는 자연수 또는 0이다. 마 www.acmicpc.net [풀이 과정] * 시뮬레이션 1. 4방향에 따라 어떤식으로 주사위의 평면도가 바뀌는지 설정 (dir == 1~ 4) ..

Algorithm/백준 2019.04.11

[BOJ] - 14500. 테트로미노

[URL] https://www.acmicpc.net/problem/14500 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 꼭짓점끼리 연결되어 있어야 한다. 즉, 변과 꼭짓점이 맞닿아있으면 안된다. 정사각형 4개를 이어 붙인 폴리오미노는 테트로미노라고 하며, 다음과 같은 5가지가 있다. 아름이는 크기가 N×M인 종이 위에 테트로미노 하나를 놓으려고 한다. 종이는 1×1 크기의 칸으로 나누어져 www.acmicpc.net [풀이 과정] *단순 시뮬레이션 1. map[][] i, j에 관해 생긴 모양(type)에 대해 가능한지 체크 테트리스 모..

Algorithm/백준 2019.04.11

[BOJ] 14502. 연구소

[URL] https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크기가 N×M인 직사각형으로 나타낼 수 있으며, 직사각형은 1×1 크기의 정사각형으로 나누어져 있다. 연구소는 빈 칸, 벽으로 이루어져 있으며, 벽은 칸 하나를 가득 차지한다. 일부 칸은 바이러스가 존재하며, 이 바이러스는 상하좌우로 인접한 빈 칸으로 모두 퍼져나갈 수 있다. www.acmicpc.net [풀이 과정] * 재귀, DFS, BFS 1. 재귀 DFS로 3개의 벽 선정 2. 3개 벽 세워 두고 바이러스(map[][] =..

Algorithm/백준 2019.04.10

[BOJ] - 2667. 단지번호붙이기

[URL] https://www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집들의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여기서 연결되었다는 것은 어떤 집이 좌우, 혹은 아래위로 다른 집이 있는 경우를 말한다. 대각선상에 집이 있는 경우는 연결된 것이 아니다. 는 을 단지별로 번호를 붙인 것이다. 지도를 입력하여 단지수를 출력하고, 각 단지에 속하는 집의 수 www.acmicpc.net [풀이 과정] *단순 재귀DFS 1. map[][] == 1인 곳 vector v에 push 2. v만큼 for문 돌며 재귀 dfs() 3. 첫번째 단지..

Algorithm/백준 2019.04.09

[BOJ] - 14888. 연산자 끼워넣기

[URL] https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, 곱셈(×)의 개수, 나눗셈(÷)의 개수이다. www.acmicpc.net [풀이 과정] * 재귀 DFS 1. 재귀 DFS를 활용하여 가능한 연산자 조합을 구한다. ex) [+] [-] [*] [%] [2] [0] [1] [0] 일때 (1) + + * (2) + * + (3) * + + 3가지 조합 가능 2. 각각의 조합에 따라 연산 실행 3. 후보자 배열에 넣..

Algorithm/백준 2019.04.09