생각Github - https://github.com/hellojdh/Code/blob/master/src/baekjoon/q10000/Q16234.java 각 나라의 인구가 적혀있는 2차 배열이 주어진다. 한 나라가 인접 나라와의 차이가 L이상 R이하일 경우 국경을 개방하고 인구이동이 시작된다. 인구의 이동은 국경을 개방한 나라들을 연합으로 취급하여 연합의 총 인구수/나라 수 로 진행된다. 인구 이동이 몇 번 발생하는지 출력하여라. 처음 생각BFS 탐색을 통해 한 나라로 시작해서 국경을 개방할 수 있는 나라일 경우 같은 연합으로 번호를 지정해주면서 진행을 하였다. 방문 표시로 연합 번호를 사용해서 연합 번호가 부여되어 있을시에는 탐색에서 건너뛰게 구현하였다.▶ 한 번의 BFS 탐색이 끝나면 다시 모든 ..
생각Github - https://github.com/hellojdh/Code/blob/master/src/baekjoon/q10000/Q14395.java 바꿀 숫자 S와 목표 숫자 T가 주어진다. * + - / 를 해서 S에서 T로 바꿀 수 있다면 사용한 연산자들을 출력하고 바꿀 수 없다면 -1을 S와 T가 동일하게 주어진다면 0을 출력하여라. 연산자로 바꾼다는 것은 다음을 의미한다. + : S = S+S * : S = S*S - : S = S-S / : S = S/S 처음 생각처음 문제를 봤을 때, "왜이렇게 정답률이 낮지?"라는 생각을 했었다. 그리고 풀고나서는 정답률을 낮추는데 기여했다.▶ 매번 틀릴때마다드는 생각이지만 문제를 잘읽어야한다. 다음 생각S에서 T로 바꾸기가 가능하다면 최소의 연산 ..
생각Github - https://github.com/hellojdh/Code/blob/master/src/baekjoon/q1000/Q3184.java 울타리 안에 양과 늑대가 있다. 양이 더 많을 경우 늑대가 죽고 그 외는 늑대가 양을 잡아먹는다. 울타리는 #로 구별되어 있으며 하나라도 이어져있으면 같은 울타리 안이다. 하루 밤이 지났을 때 살아남은 양과 늑대의 수를 출력하여라. 처음 생각맵을 탐색해서 결과를 도출하는 전형적인 BFS 탐색 문제인것 같다. 이동할 수 없는 지역(#)이 아닌 곳에서 부터 탐색을 시작해 방문체크를 해가면서 상 하 좌 우로 이동이 가능하면 queue에 넣어준다. 다음 생각양과 늑대의 수를 세야하므로 v나 o가 들어오면 각 변수를 +1 시켜준다. 양과 늑대의 수를 센후 해당 ..
생각Github - https://github.com/hellojdh/Code/blob/master/src/baekjoon/q10000/Q12886.java 돌맹이 3그룹의 개수를 각 각 준다. 작은 그룹은 큰 그룹에서 돌을 얻어올 수 있다. 예를들어 X그룹보다 Y그룹이 크면 X=X+X로 Y=Y-X로 돌 개수를 변경할 수 있다. 돌 그룹이 모두 동일하게 돌맹이를 분활 할 수 있는지 판단하여 가능시 1 아닐시 0을 출력하여라. 처음 생각문제를 처음 봤을 때는 별 생각이 없었다가 풀면서 점점 이상해졌던 문제다.▶ 푼 다음에 보니 index의 문제였다. 이제.. 크기를 벗어나는 idx 뿐만아니라 반복문을 돌릴 때의 변수도 숫자를 잘 확인해야겠다. 다음 생각BFS 탐색을 통해 풀이를했다. 현재의 그룹 조건에서 ..
생각Github - https://github.com/hellojdh/Code/blob/master/src/baekjoon/q1000/Q5014.java 1층 부터 시작되는 건물의 3개의 층의 위치가 주어진다. 이중 F층은 꼭대기 층이고, S층은 현재 있는 층이며, G층은 도착해야할 층 수이다. 엘레베이터에는 2개의 버튼이 있다. U와 D 이 위로와 아래로 가는 버튼은 각 각 정해진 층수 만큼만 이동이 가능하다. 각 층의 위치 정봐와 U와 D의 이동 가능한 층수 정보가 주어졌을 때 S층에서 G층으로 갈 수 있으면 최소 누른 버튼 수를 갈 수 없다면 use the stairs를 출력하여라. 처음 생각BFS 탐색을 통해 U와 D버튼을 눌렀을 경우 Queue에 넣어주면서 탐색을한다.▶ U와 D버튼이 0일 수도..
생각Github - https://github.com/hellojdh/Code/blob/master/src/baekjoon/q1000/Q3019.java 행의 길이가 정해지지 않고, 열은 정해져 있는 블록이 쌓여있는 맵이 주어진다. 이 때, 테트리스 블록 중 하나를 정해서 떨어뜨린다. 각 블록은 번호대로 다음과 같다. 각 블록들은 90도, 180도, 270도로 회전이 가능하다. 주어진 맵에 블록 하나를 정해서 떨어뜨릴때, 빈칸 없이 떨어뜨릴 수 있는 경우의 수를 출력하여라. 처음 생각블록을 떨어뜨려야한다. 블록이 회전 될 때마다 다양한 모양이 만들어진다. 처음에는 배열로 크기를 정해서 만들어볼 생각을 하였으나이내 포기하였다.▶ 1 그리고 3과 4 모양의 경우는 2가지 밖에 생성이 안된다. 2번은 1가지 ..
생각Github - https://github.com/hellojdh/Code/blob/master/src/baekjoon/q10000/Q15658.java 이전 연산자 끼워넣기([백준] 14888번 연산자 끼워넣기) 문제와 동일하다. 하나 다른점이라면 연산자의 개수를 N-1개 보다 많이 줄 수도 있다. 처음 생각기존 문제와 똑같이 풀이를 해주면 된다. 한가지 다른점인 연산자의 개수가 N-1개 보다 많을 수 있기 때문에 기존의 풀이였던 재귀의 매개변수에 기호들을 넣어던 것 과달리 크기가 4인 배열로 관리해서 코드를 조금 줄여보았다.▶ 1개의 배열로 관리를 하기 때문에 반복문으로 모든 조건을 넣어주는것이 가능해진다. 다음 생각이전 문제와 마찬가지로 주어진 숫자의 맨 앞값은 이전에 계산되는게 없으므로 처음 ..
생각Github - https://github.com/hellojdh/Code/blob/master/src/baekjoon/q10000/Q14391.java N x M 크기의 크기에 각 칸마다 숫자가 적혀있다. 이 때 가로 또는 세로로 각 칸을 아래와 같이 나눌 수 있다. 위와 같이 나눴을 경우는 493+23+58+91+9+45+7160 이 계산 된다. 2차 배열이 주어졌을 때, 가로 또는 세로로 구별을 지었을 때 최대값을 구하여라. 처음 생각세로 N과 가로 M의 크기가 최대 4밖에 되지 않으므로 완전 탐색을 통해 답을 구할 수 있다. 다음 생각그렇다면 어떻게 답을 도출 할 수 있을 까를 생각하는게 문제가 된다. 상태는 두가지가 주어진다. 가로 세로이다. DFS를 이용해서 1과 0으로 맵을 체크하면서 1..
생각Github - https://github.com/hellojdh/Code/blob/master/src/baekjoon/q10000/Q10819.java 배열이 주어진다. 이 배열의 숫자들을 가지고 다음과 같은 계산을 한다. |A[0]-A[1]| + |A[1]-A[2]| + .... + |A[N-2]-A[N-1] 배열의 순서를 바꿧을 때, 위 계산의 최대값을 찾아라. 처음 생각완전 탐색으로 기존 배열의 숫자들을 가지고 새로운 배열을 만들어 계산을 해주어야겠다는 생각이 먼저 들었다. 다음 생각DFS를 사용해서 배열을 새로 만들어 주었다.▶ N의 깊이로 들어가면서 각 단계마다 해당 단계를 새로운 배열의 인덱스로 사용하였다.▶ 원본 배열의 해당 인덱스를 이전에 한 번 사용했다면 다음엔 사용해주면 안되므로,..
생각Github - https://github.com/hellojdh/Code/blob/master/src/baekjoon/q1000/Q4796.java 연속 된 P일중 L일 동안 캠핑장을 사용할 수 있다. 휴가는 총 V일 이다. 최대로 캠핑장을 이용할 수 있는 일수를 출력하여라. 처음 생각수학이라고 생각해야 할 까 그리디라고 생각해야 할까 어떻게 보던지 간에 둘 다 맞는것 같다. 몫과 나머지를 구해도 상관이 없고, 최대로 라는 조건이 주어졌기 때문에 우선적으로 L일을 사용하고 P-L일을 더해주는 식으로 V일 까지 접근을 해도 된다.▶ 수학적인 접근은 항상 빠르므로 수학적으로 풀어보았다. 다음 생각연속하는 P일 중 L일이므로 L일을 다 사용하기 위해서는 우선 P일을 사용해야한다. 따라서 주어진 휴가기간 ..
- Total
- Today
- Yesterday