본문 바로가기

전체 글1322

[백준] 1759 암호 만들기 - Backtracking / Java • 문제 링크 1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다. www.acmicpc.net • 풀이 과정 • 풀이 코드 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.Arrays; import java.util.StringTokenizer; public class Main { s.. 2022. 9. 17.
[백준] 16958 텔레포트 - Brute Force / Java • 문제 링크 16958번: 텔레포트 2차원 평면 위에 N개의 도시가 있다. 일부 도시는 특별한 도시이다. (r1, c1)에 있는 도시에서 (r2, c2)에 있는 도시로 가는 이동 시간은 |r1 - r2| + |c1 - c2|와 같다. 만약, 두 도시가 특별한 도시라면, 텔 www.acmicpc.net • 풀이 과정 2차원 배열에 도시의 속성과 좌표를 입력받아 저장한다. 각 도시 간 이동시간을 구한 후, (Math.abs(map[i][1] - map[j][1]) + Math.abs(map[i][2] - map[j][2])) 두 도시가 특별한 도시일 경우 (map[i][0] + map[j][0] == 2) 해당 이동 시간과 텔레포트에 걸리는 시간 t 와 비교해 작은 값으로 저장한다. 이 후 플로이드 워셜 .. 2022. 9. 16.
[백준] 4902 삼각형의 값 - Brute Force / Java • 문제 링크 4902번: 삼각형의 값 입력은 여러 개의 테스트 케이스로 이루어져 있고, 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 번째 숫자는 줄의 수를 나타내고, 다음 숫자는 단위 삼각형에 적혀있는 값이 위에서 아래, 왼 www.acmicpc.net • 풀이 과정 삼각형을 2차원 배열로 구현하여 단위 삼각형의 값을 입력받고, 각 행(삼각형의 층) 의 누적합을 pSum에 저장한다. 이 후 부분 삼각형이 정삼각형인 경우와 역삼각형인 경우의 수를 두 개의 2중 for 문을 통하여 구한다. 삼각형의 각 열(각 층의 단위 삼각형의 개수) 은 (2 * 행) - 1 의 길이를 가지므로, 모든 부분 정삼각형은 반복문의 범위(i = 1 ~ n, j = 1 ~ (2 * i) - 1) 에서 (i , j) 를 상단 .. 2022. 9. 15.
[백준] 17471 게리맨더링 - Brute Force / Java • 문제 링크 17471번: 게리맨더링 선거구를 [1, 4], [2, 3, 5, 6]으로 나누면 각 선거구의 인구는 9, 8이 된다. 인구 차이는 1이고, 이 값보다 더 작은 값으로 선거구를 나눌 수는 없다. www.acmicpc.net • 풀이 과정 각 구역의 번호를 인덱스로 지정하는 value 배열에 인구 값을 입력받고, 인접행렬에 각 구역과 인접한 구역의 정보를 입력받아 인접할 시 1로 저장한다. 구역을 둘로 나누기 위해 한 구역은 subset 배열의 true, 다른 한 구역은 false 로 나타내며, 재귀 함수(recur) 를 통해 구역을 둘로 나누는 모든 경우의 수를 각 구역의 값의 합을 누적하며 구한다. 경우의 수가 구해지면, 매개변수를 true 또는 false 로 전달받는 isConnecte.. 2022. 9. 14.
[백준] 14391 종이 조각 - Brute Force / Java • 문제 링크 14391번: 종이 조각 영선이는 숫자가 쓰여 있는 직사각형 종이를 가지고 있다. 종이는 1×1 크기의 정사각형 칸으로 나누어져 있고, 숫자는 각 칸에 하나씩 쓰여 있다. 행은 위에서부터 아래까지 번호가 매겨져 있고, www.acmicpc.net • 풀이 과정 n * m 크기의 사각형을 조각낼 수 있는 모든 경우의 수는 1 2022. 9. 13.
[백준] 1107 리모컨 - Brute Force / Java • 문제 링크 1107번: 리모컨 첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼 www.acmicpc.net • 풀이 과정 이동하려는 채널의 번호 n과 고장난 버튼을 m개 입력받는다. 이때 m = 0 일 경우, NullPointer 예외를 방지하기 위하여 m > 0 일 경우 버튼의 정보를 입력받는 조건을 건다. 먼저 모든 버튼이 고장났을 경우, 채널 100에서 +, - 버튼으로만 조작하는 횟수(Math.abs(n - 100)) 를 minCnt 의 초기값으로 둔다. 이어서 이동할 수 있는 채널의 모든 경우(0 ~ 999999) 를 완전 탐색.. 2022. 9. 12.