dfs
-
BOJ 2583번 영역 구하기 문제 자바(java) 풀이 난이도: 실버1 풀이시간: 30분 백준 2583번 영역 구하기 문제정리 MxN 크기의 모눈종이가 주어진다. 모눈 종이 위에 K개의 직사각형을 그린다. k개의 직사각형의 내부를 제외한 나머지 부분이 몇 개의 분리된 영역으로 나누어진다. 몇개의 영역으로 분리되는지, 각 영역의 넓이는 어떤지 구하여라 문제풀이 분리된 영역과 넓이를 구하는 것이므로 모든 좌표에서 bfs 탐색을 하면 됩니다. 이 문제는 영역을 구분짓는 문제인 보물섬, 치즈, 빙산과 유사합니다. 문제에서 주어지는 직사각형의 좌표들과 배열의 인덱스가 다르기 때문에 주어진 x,y좌표를 반대로 바꿔줍니다. ( 바꾸면 답이 잘 나오는지 직접 그려보느라 시간 좀더 걸림 ) 직사각형이 있는 곳은 map..
[BOJ] 백준 2583번 영역 구하기 자바(java) 풀이 (dfs, bfs)BOJ 2583번 영역 구하기 문제 자바(java) 풀이 난이도: 실버1 풀이시간: 30분 백준 2583번 영역 구하기 문제정리 MxN 크기의 모눈종이가 주어진다. 모눈 종이 위에 K개의 직사각형을 그린다. k개의 직사각형의 내부를 제외한 나머지 부분이 몇 개의 분리된 영역으로 나누어진다. 몇개의 영역으로 분리되는지, 각 영역의 넓이는 어떤지 구하여라 문제풀이 분리된 영역과 넓이를 구하는 것이므로 모든 좌표에서 bfs 탐색을 하면 됩니다. 이 문제는 영역을 구분짓는 문제인 보물섬, 치즈, 빙산과 유사합니다. 문제에서 주어지는 직사각형의 좌표들과 배열의 인덱스가 다르기 때문에 주어진 x,y좌표를 반대로 바꿔줍니다. ( 바꾸면 답이 잘 나오는지 직접 그려보느라 시간 좀더 걸림 ) 직사각형이 있는 곳은 map..
2020.03.12 -
sw expert academy 4012번 요리사 자바(java) 풀이 모의 SW 역량 테스트 풀이시간: 약 40분 sw expert academy 4012번 요리사 문제정리 두 명의 손님에게 음식을 제공하며 N개의 식재료가 있다. 식재료를 N/2로 나누어 두 개의 요리를 하려고 한다. A음식과 B음식의 맛의 차이가 최소가 되어야 한다. 식재료 i,j를 같이 쓰면 시너지 Sij가 발생한다. 각 음식의 맛은 음식을 구성하는 식재료들로부터 발생하는 시너지들의 합이다. 시너지는 1이상 20000이하의 정수이다. (시너지들의 합은 int 범위) 문제 접근 문제를 보자마자 스타트와 링크 문제가 생각이 났습니다. 이는 역량 테스트 기출인데 거의 같다고 생각했습니다. 조합을 통해 식재료 절반을 선택하여 A음식을 만들..
[SWEA] 모의 SW 역량 테스트 :: 4012번 요리사 자바(java) 풀이( 조합, dfs)sw expert academy 4012번 요리사 자바(java) 풀이 모의 SW 역량 테스트 풀이시간: 약 40분 sw expert academy 4012번 요리사 문제정리 두 명의 손님에게 음식을 제공하며 N개의 식재료가 있다. 식재료를 N/2로 나누어 두 개의 요리를 하려고 한다. A음식과 B음식의 맛의 차이가 최소가 되어야 한다. 식재료 i,j를 같이 쓰면 시너지 Sij가 발생한다. 각 음식의 맛은 음식을 구성하는 식재료들로부터 발생하는 시너지들의 합이다. 시너지는 1이상 20000이하의 정수이다. (시너지들의 합은 int 범위) 문제 접근 문제를 보자마자 스타트와 링크 문제가 생각이 났습니다. 이는 역량 테스트 기출인데 거의 같다고 생각했습니다. 조합을 통해 식재료 절반을 선택하여 A음식을 만들..
2020.03.09 -
sw expert academy 4008번 숫자 만들기 자바(java) 풀이 모의 SW 역량테스트 숫자 만들기 sw expert academy 4008번 숫자 만들기 문제정리 연산자와 숫자가 주어질때 가능한 수식을 계산하여 최대와 최소값을 구해라. 연산자의 우선순위는 고려하지 않고 왼쪽에서 오른쪽으로 차례대로 계산한다. 연산자의 개수는 숫자의 개수보다 항상 1개 작다. 숫자의 순서는 바꿀 수 없다. 나눗셈에서 소수점 이하는 버린다. 수식을 완성할때 주어진 카드를 모두 사용해야 한다. 문제풀이 숫자는 순서가 바뀌지 않으므로 연산자의 순서만 조정해주면 됩니다. 그러기 위해서 백트래킹을 통해서 모든 가능한 순서를 찾아주어야 합니다. 그리고 계산을 하면 됩니다. 계산할 때 첫번째 연산자는 2번째 숫자와 3번째 ..
[SWEA] 4008번 숫자 만들기 자바(java) 풀이 (dfs, 백트래킹)sw expert academy 4008번 숫자 만들기 자바(java) 풀이 모의 SW 역량테스트 숫자 만들기 sw expert academy 4008번 숫자 만들기 문제정리 연산자와 숫자가 주어질때 가능한 수식을 계산하여 최대와 최소값을 구해라. 연산자의 우선순위는 고려하지 않고 왼쪽에서 오른쪽으로 차례대로 계산한다. 연산자의 개수는 숫자의 개수보다 항상 1개 작다. 숫자의 순서는 바꿀 수 없다. 나눗셈에서 소수점 이하는 버린다. 수식을 완성할때 주어진 카드를 모두 사용해야 한다. 문제풀이 숫자는 순서가 바뀌지 않으므로 연산자의 순서만 조정해주면 됩니다. 그러기 위해서 백트래킹을 통해서 모든 가능한 순서를 찾아주어야 합니다. 그리고 계산을 하면 됩니다. 계산할 때 첫번째 연산자는 2번째 숫자와 3번째 ..
2020.03.07 -
sw expert academy 7699번 수지의 수지 맞는 여행 자바(java) 풀이 난이도 : D4 풀이시간 : 약 30분 sw expert academy 7699번 수지의 수지 맞는 여행 문제정리 섬은 R행 C열로 이루어져있다. 알파벳은 섬의 명물이고 같은 알파벳을 가지면 같은 명물을 가진다. 수지는 1행 1열에서 여행을 시작한다. 명물을 볼때 마다 요금을 지급하며, 처음 볼때는 무료이다. 명물을 본 후 4방향(상,하,좌,우)중 한 방향으로 이동 가능하다. 같은 알파벳 명물을 두 번 이상 보지 않도록 여행을 떠나는 방법 중, 볼 수 있는 최대 명물의 개수를 구해라 문제플이 이 문제와 디저트 카페 문제가 유사합니다. 같이 풀어보시는걸 추천드립니다!! 출발점이 정해져있으므로 map의 (0,0) 위치에서..
[SWEA] 7699번 수지의 수지 맞는 여행 자바(java) 풀이 (dfs)sw expert academy 7699번 수지의 수지 맞는 여행 자바(java) 풀이 난이도 : D4 풀이시간 : 약 30분 sw expert academy 7699번 수지의 수지 맞는 여행 문제정리 섬은 R행 C열로 이루어져있다. 알파벳은 섬의 명물이고 같은 알파벳을 가지면 같은 명물을 가진다. 수지는 1행 1열에서 여행을 시작한다. 명물을 볼때 마다 요금을 지급하며, 처음 볼때는 무료이다. 명물을 본 후 4방향(상,하,좌,우)중 한 방향으로 이동 가능하다. 같은 알파벳 명물을 두 번 이상 보지 않도록 여행을 떠나는 방법 중, 볼 수 있는 최대 명물의 개수를 구해라 문제플이 이 문제와 디저트 카페 문제가 유사합니다. 같이 풀어보시는걸 추천드립니다!! 출발점이 정해져있으므로 map의 (0,0) 위치에서..
2020.03.07 -
sw expert academy 1949 등산로 조성 자바(java) 풀이 모의 SW 역량 테스트 sw expert academy 1949 등산로 조성 문제정리 등산로를 만들기 위한 부지는 NxN 크기이다. 등산로는 가장 높은 봉우리에서 시작된다. 등산로는 높은 지형에서 낮은 지형으로 가로 or 세로 방향으로 연결되어 있어야 한다. 높이가 같은 곳, 대각선 연결은 불가하다. 딱 한 곳을 정해서 최대 k 깊이 만큼 깎는 공사를 할 수 있다. (정수 단위로만 깎을 수 있으며 1보다 작게 만들 수도 있다.) 이때 k 깊이 만큼 깎아서 가장 높은 곳이 변하더라고 봉우리는 초기 봉우리를 이용한다. 가장 긴 등산로를 찾아 등산로의 길이를 출력해라! 문제풀이 가장 높은 봉우리를 구합니다. 1~k까지 map의 좌상단 ..
[SWEA] 모의 SW 역량 테스트 :: 1949번 등산로 조성 (dfs, 백트래킹)sw expert academy 1949 등산로 조성 자바(java) 풀이 모의 SW 역량 테스트 sw expert academy 1949 등산로 조성 문제정리 등산로를 만들기 위한 부지는 NxN 크기이다. 등산로는 가장 높은 봉우리에서 시작된다. 등산로는 높은 지형에서 낮은 지형으로 가로 or 세로 방향으로 연결되어 있어야 한다. 높이가 같은 곳, 대각선 연결은 불가하다. 딱 한 곳을 정해서 최대 k 깊이 만큼 깎는 공사를 할 수 있다. (정수 단위로만 깎을 수 있으며 1보다 작게 만들 수도 있다.) 이때 k 깊이 만큼 깎아서 가장 높은 곳이 변하더라고 봉우리는 초기 봉우리를 이용한다. 가장 긴 등산로를 찾아 등산로의 길이를 출력해라! 문제풀이 가장 높은 봉우리를 구합니다. 1~k까지 map의 좌상단 ..
2020.03.04 -
sw expert academy 1952번 수영장 자바(java) 풀이 모의 SW 역량테스트 수영장 sw expert academy 1952번 수영장 문제정리 이용권 1일 이용권 : 하루 이용 1달 이용권: 한달 이용. 매달 1일 부터 시작 3달 이용권: 3달 이용. 매달 1일 시작. 1년 이용권: 매년 1월 1일 시작 각 이용권의 요금과 각 달의 이용계획이 주어진다. 가장 적은 비용으로 수영장을 이용할 수 있는 방법과 그 비용을 출력해라 문제풀이 이 문제는 완전탐색 문제입니다. 탐색해야 하는 경우도 많지 않습니다. 1년 이용권의 경우는 한 번만 검사하면 되기 때문에 마지막에 따로 한 번만 검사합니다. 재귀를 통해 모든 경우를 탐색하고 그 달의 이용일이 0인 경우 비용을 더해주지 않으면 됩니다 dfs(c..
[SWEA] 모의 SW 역량 테스트 :: 1952번 수영장 자바(java) 풀이sw expert academy 1952번 수영장 자바(java) 풀이 모의 SW 역량테스트 수영장 sw expert academy 1952번 수영장 문제정리 이용권 1일 이용권 : 하루 이용 1달 이용권: 한달 이용. 매달 1일 부터 시작 3달 이용권: 3달 이용. 매달 1일 시작. 1년 이용권: 매년 1월 1일 시작 각 이용권의 요금과 각 달의 이용계획이 주어진다. 가장 적은 비용으로 수영장을 이용할 수 있는 방법과 그 비용을 출력해라 문제풀이 이 문제는 완전탐색 문제입니다. 탐색해야 하는 경우도 많지 않습니다. 1년 이용권의 경우는 한 번만 검사하면 되기 때문에 마지막에 따로 한 번만 검사합니다. 재귀를 통해 모든 경우를 탐색하고 그 달의 이용일이 0인 경우 비용을 더해주지 않으면 됩니다 dfs(c..
2020.03.02