삼성SW역량 4

백준 14503번 로봇청소기 (DFS)

https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 벽 또는 빈 칸이다. 청소기는 바라보는 방향이 있으며, 이 방향은 동, 서, 남, 북중 하나이다. 지도의 각 칸은 (r, c)로 나타낼 수 있고, r은 북쪽으로부터 떨어진 칸의 개수, c는 서쪽으로 부터 떨어진 칸의 개수이다. 로봇 청소기는 다음 www.acmicpc.net 쉬울 줄 알았는데 생각보다 구현이 어려웠던 문제이다. dfs를 이용해서 구현하였으며 방향을 설정해주는 dir 변수도 파라미터로 사..

Algorithm 2019.10.12

백준 14890번 경사로 (Simulation)

https://www.acmicpc.net/problem/14890 14890번: 경사로 첫째 줄에 N (2 ≤ N ≤ 100)과 L (1 ≤ L ≤ N)이 주어진다. 둘째 줄부터 N개의 줄에 지도가 주어진다. 각 칸의 높이는 10보다 작거나 같은 자연수이다. www.acmicpc.net 시뮬레이션에 속하는 문제라 예외처리가 많아서 소스코드 양이 생각보다 길다. 경사로를 놓기 위해서 고려해야 하는 경우는 1) 현재 값과 다음 값이 같은 경우 2) 현재 값이 다음 값보다 1 큰 경우 3) 현재 값보다 다음 값이 1 작은 경우 4) 그 외 경사로를 놓을 수 없는 경우로 나눌 수 있다. 2, 3번인 경우가 까다로운데 반복문을 수행하면서 배열이 끝날때까지 경사로를 놓을 수 있는지 체크했다. 그리고 4번은 fai..

Algorithm 2019.10.12

백준 16236번 아기상어 (BFS)

https://www.acmicpc.net/problem/16236 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가지고 있고, 이 크기는 자연수이다. 가장 처음에 아기 상어의 크기는 2이고, 아기 상어는 1초에 상하좌우로 인접한 한 칸씩 이동한다. 아기 상어는 자신의 크기보다 큰 물고기가 있는 칸은 지나갈 수 없고, 나머지 칸은 모두 지나갈 수 있다. 아기 상어는 자신의 크 www.acmicpc.net 맵 형태로 상어가 가까운 거리의 물고기를 먹어야하므로 BFS를 통해 구현하는 것이 적합해보인다. 그럼 BFS를 통해 가장 가까운 거..

Algorithm 2019.10.11

백준 15686번 치킨배달 (Brute-Force)

https://www.acmicpc.net/problem/15686 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸, 왼쪽에서부터 c번째 칸을 의미한다. r과 c는 1부터 시작한다. 이 도시에 사는 사람들은 치킨을 매우 좋아한다. 따라서, 사람들은 "치킨 거리"라는 말을 주로 사용한다. 치킨 거리는 집과 가장 가까운 치킨집 사이의 거리이다. 즉, 치킨 거리는 www.acmicpc.net 전체 치킨집중 M개만 뽑아서 가장 작은 도시의 치킨거리를 구해야하므로 브루트포스를 이용하면 쉽게 풀 수 있다. DFS를 통해 치킨집을..

Algorithm 2019.10.11