본문 바로가기

Algorithm/SWEA10

[SWEA] 2112. [모의 SW 역량테스트] 보호 필름(자바/DFS) 문제 접근 방법 문제 조건은 다음과 같습니다. 따라서, 저는 한 줄씩 A, B 두 가지 경우로 바꾸어보며 성능 검사를 통과하는 경우에는 재귀를 탈출시켰습니다. 이를 구현하기 위해 DFS를 사용하였습니다. 문제 풀이 1. DFS 기저 조건 : 모든 세로 줄에대한 성능 검사를 실시하여 전부 통과하는 경우 재귀를 탈출시킵니다. 2. A, B 투입하는 경우에 대한 경우의 수를 확인 후 값을 원상 복귀시켜야 합니다. 이를 위해 처음에 copyMaps라는 배열을 하나 만들어 maps[i] = Arrays.copyOf(copyMaps[i], W); 를 통해 값을 원복시켰습니다. 3. 성능 검사 확인 method : 저는 성능 검사를 위해 메서드를 하나 만들었습니다. maps[r][c] 와 maps[r+1][c] 같이.. 2022. 11. 27.
[SWEA] 1949. [모의 SW 역량테스트] 등산로 조성(자바/DFS) 문제 조건 문제 접근 1. 가장 높은 봉우리에서 시작해야 한다 따라서, 가장 높은 봉우리들을 찾아 이에 대한 DFS 탐색을 모두 진행해야 한다. 2. 높은 지형에서 낮은 지형으로 연결되어야 한다. 따라서, 탐색할 지형(maps[nextX][nextY])이 현재 지형(maps[nowX][nowY])보다 크거나 같은 경우 지형을 깎아줘야 한다. 하지만, 3번 조건에 따라 이전에 지형을 깍은 경우에는 지형을 깎을 수 없다 3. 긴 등산로를 만들기 위해 딱 한 곳만 정할 수 있다. 따라서, boolean 변수를 선언하여 지형을 깍는 경우 true로 세팅하여 한 곳만 깎을 수 있게 조건을 준다. 4. DFS로 문제를 접근한 이유 만들 수 있는 가장 긴 등산로 길이를 구해야한다. DFS로 탐색하면 갈 수 있는 곳까.. 2022. 11. 14.
[SWEA] 1486. 장훈이의 높은 선반(부분집합/자바) 문제 요약 탑의 높이가 B 이상인 경우 선반 위의 물건을 사용할 수 있는데 탑의 높이가 높을수록 더 위험하므로 높이가 B 이상인 탑 중에서 높이가 가장 낮은 탑을 알아내려고 한다. 문제 접근 방법 점원들의 키에 대해 일부를 선택하여 선택한 점원들의 키의 합이 B보다 큰 경우 결과 값에 대해 갱신한다. 점원들 중에서 일부를 선택하는 것은 부분 집합으로 구현해볼 수 있다. 현재 점원을 선택한 경우와 선택하지 않는 경우에 대해 재귀 함수를 호출한다. 특히, 현재 점원의 선택 여부를 확인하기 위해서 boolean 배열을 사용하였다. 현재 점원을 선택하면 true, 그렇지 않은 경우는 false로 세팅한다. 재귀 함수의 탈출 조건은 선택한 점원의 수가 N명이 되는 경우이다. 이 경우에 점원들의 키의 합을 구하고,.. 2022. 11. 5.
[SWEA] 1952. [모의 SW 역량테스트] 수영장(자바/dfs) 출력 각 이용권의 요금과 각 달의 이용 계획이 입력으로 주어질 때, 가장 적은 비용으로 수영장을 이용할 수 있는 방법을 찾고 그 비용을 정답으로 출력하는 프로그램 문제 해결 방법 1년의 경우 dfs를 탐색할 필요가 없으므로, dfs 탐색을 돌기 전에 1년 비용을 미리 세팅합니다. dfs 탐색은 달을 기준으로 탐색하게 되며, 1일, 1달, 3달을 기준으로 돌게 됩니다. 12월까지이므로 cnt가 13이 되었을 때가 기저 조건이 됩니다. 이때 최소 비용을 갱신하며 결과값을 도출하게 됩니다. //package swea.p1952; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ja.. 2022. 10. 28.