반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- #시뮬레이션 #미생물 격리
- #부분집합 #dfs
- #에라토스테네스의채 #소수판별
- 실기
- #DFS #BFS #라인
- bruteforce #DFS #완탐
- #dfs #벽돌깨기 #swea
- #dfs
- #시뮬레이션
- #pair배열
- #시뮬레이션 #recursion
- #시뮬레이션 #dfs
- 취업준비생
- #recursion #strcmp #deque
- SW개발 테스트
- BFS
- #주사위 굴리기 #시뮬레이션
- 19년 3회
- 2019년10월
- #dfs #완전탐색
- #bfs
- #최단거리 #최소거리
- #백준 #알고리즘 #SWEA #핀볼게임
- #DFS #백트래킹
- #BFS노필요.. #홈방범서비스
- 정보처리기사 실기
Archives
- Today
- Total
Hokusai
[9] [모의 SW 역량테스트] 등산로 조성 본문
반응형
1949. [모의 SW 역량테스트] 등산로 조성
※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다.
등산로를 조성하려고 한다.
등산로를 만들기 위한 부지는 N * N 크기를 가지고 있으며, 이곳에 최대한 긴 등산로를 만들 계획이다.
등산로 부지는 아래 [Fig. 1]과 같이 숫자가 표시된 지도로 주어지며, 각 숫자는 지형의 높이를 나타낸다.
등산로를 만드는 규칙은 다음과 같다.
① 등산로는 가장 높은 봉우리에서 시작해야 한다.
② 등산로는 산으로 올라갈 수 있도록 반드시 높은 지형에서 낮은 지형으로 가로 또는 세로 방향으로 연결이 되어야 한다.
즉, 높이가 같은 곳 혹은 낮은 지형이나, 대각선 방향의 연결은 불가능하다.
③ 긴 등산로를 만들기 위해 딱 한 곳을 정해서 최대 K 깊이만큼 지형을 깎는 공사를 할 수 있다.
N * N 크기의 지도가 주어지고, 최대 공사 가능 깊이 K가 주어진다.
이때 만들 수 있는 가장 긴 등산로를 찾아 그 길이를 출력하는 프로그램을 작성하라.
[예시]
위 [Fig. 1]과 같이 N = 5인 지도가 주어진 경우를 살펴보자.
가장 높은 봉우리는 높이가 9로 표시된 세 군데이다.
이 세 곳에서 출발하는 가장 긴 등산로 중 하나는 아래 [Fig. 2]와 같고, 이 때 길이는 5가 된다.
만약 최대 공사 가능 깊이 K = 1로 주어질 경우,
아래 [Fig. 3]과 같이 빨간색 부분의 높이를 9에서 8로 깎으면 길이가 6인 등산로를 만들 수 있다.
이 예에서 만들 수 있는 가장 긴 등산로는 위와 같으며, 출력할 정답은 6이 된다.
[제약 사항]
1. 시간 제한 : 최대 50개 테스트 케이스를 모두 통과하는 데 C/C++/Java 모두 3초
2. 지도의 한 변의 길이 N은 3 이상 8 이하의 정수이다. (3 ≤ N ≤ 8)
3. 최대 공사 가능 깊이 K는 1 이상 5 이하의 정수이다. (1 ≤ K ≤ 5)
4. 지도에 나타나는 지형의 높이는 1 이상 20 이하의 정수이다.
5. 지도에서 가장 높은 봉우리는 최대 5개이다.
6. 지형은 정수 단위로만 깎을 수 있다.
7. 필요한 경우 지형을 깎아 높이를 1보다 작게 만드는 것도 가능하다.
[입력]
입력의 맨 첫 줄에는 총 테스트 케이스의 개수 T가 주어지고, 그 다음 줄부터 T개의 테스트 케이스가 주어진다.
각 테스트 케이스의 첫 번째 줄에는 지도의 한 변의 길이 N, 최대 공사 가능 깊이 K가 차례로 주어진다.
그 다음 N개의 줄에는 N * N 크기의 지도 정보가 주어진다.
[출력]
테스트 케이스 개수만큼 T개의 줄에 각각의 테스트 케이스에 대한 답을 출력한다.
각 줄은 "#t"로 시작하고 공백을 하나 둔 다음 정답을 출력한다. (t는 1부터 시작하는 테스트 케이스의 번호이다)
출력해야 할 정답은 만들 수 있는 가장 긴 등산로의 길이이다.
=====================================================================================
[IDEA]
: 해당 산봉우리 중 가장 높은 곳들을 pair 배열로 저장해놓고, 시작했다
그리고 0~K 깊이만큼을 좌표에서 일일히 값을 변경해준다 ==> 이후 dfs로 가능한 깊이까지 각각 파고들어간다. ==> 갈곳이 없으면 해당 이동한 등산로 길이를 체크한다(Max보다 크면 그걸 Max로) ==> 출력
[Codes]
반응형
'알고리즘( C++ ) > 2. SW Expert Academy' 카테고리의 다른 글
[11] [모의 SW 역량테스트] 디저트 카페 (0) | 2019.03.04 |
---|---|
[10] [모의 SW 역량테스트] 보물상자 비밀번호 (0) | 2019.03.03 |
[8] [모의 SW 역량테스트] 탈주범 검거 (0) | 2019.02.23 |
[7] [모의 SW 역량테스트] 홈 방범 서비스 (0) | 2019.02.04 |
[6] [모의 SW 역량테스트] 미생물 격리 (0) | 2019.01.28 |
Comments