본문 바로가기

분류 전체보기

(109)
[백준 JAVA] 20920. 영단어 암기는 괴로워 문제 링크https://www.acmicpc.net/problem/20920접근 방법입력된 단어 중 길이가 m 이상인 단어들만 필터링하여 등장 빈도를 카운트합니다.정렬 기준은 다음과 같습니다:자주 나오는 단어일수록 앞에길이가 길수록 앞에알파벳 사전순으로 앞에소스 코드import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.*;import java.io.IOException;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputSt..
[백준 JAVA] 1018. 체스판 다시 칠하기 문제 링크https://www.acmicpc.net/problem/1018접근 방법8x8 체스판을 만들 수 있는 모든 구간을 탐색하면서, 시작 색을 W 또는 B로 설정해 각각 다시 칠해야 하는 칸의 수를 계산하고, 그중 최소값을 구합니다.소스 코드import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.StringTokenizer;import java.io.IOException;public class Main { static String[] board; public static int countRepaint(int row, int col, char startColor) { int count = 0..
[백준 JAVA] 14888. 연산자 끼워넣기 문제 링크https://www.acmicpc.net/problem/14888접근 방법모든 연산자 조합을 탐색하기 위해 DFS(백트래킹)를 사용합니다.연산자의 개수만큼 재귀적으로 경우를 나눠서 최댓값과 최솟값을 갱신합니다.소스 코드import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.StringTokenizer;import java.io.IOException;public class Main { static int n, min = Integer.MAX_VALUE, max = Integer.MIN_VALUE; static int[] num, cal = new int[4]; public static void..
[백준 JAVA] 9663. N-Queen 문제 링크https://www.acmicpc.net/problem/9663접근 방법한 줄씩 퀸을 배치하며 다음 줄로 이동하는 방식으로 백트래킹을 수행합니다.같은 열이나 대각선에 퀸이 있는지 확인하여 유망하지 않으면 가지치기를 합니다.소스 코드import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.IOException;public class Main { static int n, cnt = 0; static int[] board; static boolean[] isQueen; public static boolean checkQueen(int idx) { if (isQueen[board[idx..
[백준 JAVA] 15683. 감시 문제 링크https://www.acmicpc.net/problem/15683접근 방법모든 CCTV의 방향을 백트래킹으로 탐색하면서, 각 조합에 대해 사각지대의 최소 크기를 갱신합니다.CCTV의 감시 방향에 따라 감시 영역을 표시하고, 되돌리는 과정을 통해 모든 경우를 탐색합니다.소스 코드import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.*;import java.io.IOException;public class Main { static int n, m, noSagak = 0, cnt = 0, rst = 65; static int[] dy = {0, 1, 0, -1}, dx = {1, 0, -1, 0}; ..
[백준 JAVA] 4779. 칸토어 집합 문제 링크https://www.acmicpc.net/problem/4779접근 방법칸토어 집합은 길이를 3등분하여 가운데 부분을 공백으로 바꾸고, 좌우 구간에 대해서 같은 방식으로 재귀적으로 반복합니다.n이 주어지면 전체 길이는 3^n이 되며, 재귀적으로 문자열을 가공하여 결과를 출력합니다.소스 코드import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.Arrays;import java.io.IOException;public class Main { public static void makeCantor(char[] arr, int s, int len) { if (len == 1) { ..
[백준 JAVA] 27172. 수 나누기 게임 문제 링크https://www.acmicpc.net/problem/27172접근 방법각 카드 번호를 기준으로 배수 관계에 있는 다른 카드들과의 관계를 탐색합니다.자신의 배수인 수가 다른 카드에 존재하면 +1점, 자신이 누군가의 배수이면 -1점 처리합니다.배열 score를 사용해 모든 카드의 점수를 기록한 뒤 출력합니다.소스 코드import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.*;import java.io.IOException;public class Main { public static void main(String[] args) throws IOException { BufferedReader ..
[백준 JAVA] 24060. 알고리즘 수업 - 병합 정렬 1 문제 링크https://www.acmicpc.net/problem/24060접근 방법병합 정렬을 구현하면서 배열에 값을 저장하는 횟수를 카운팅합니다.k번째 저장이 발생할 때 그 값을 출력하고 종료합니다.merge 단계에서 값을 실제 배열로 복사할 때마다 카운트를 증가시키고, k에 도달하면 해당 값을 결과로 저장합니다.소스 코드import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.Arrays;import java.util.StringTokenizer;import java.io.IOException;public class Main { static int[] arr, tmp; static int cnt = 0,..