본문 바로가기

백준633

[백준] 21610번 - 마법사 상어와 비바라기 [Java] https://www.acmicpc.net/problem/21610 1.  아이디어 1번 행, 열과 N번 행, 열이 연결된 것에 대한 처리만 잘 해주면 되는 구현 문제로 모듈러 연산으로 환형 연결 처리를 하고 구름은 Queue를 활용해서 처리하는 방식으로 해결했다.2. 문제풀이 구름의 이동 거리인 s가 최대 50이어서 환형 연결은 50 * N을 더하고 N으로 나눈 나머지를 사용하는 방식으로 구현했다.구름은 Queue를 활용했고 Queue의 크기만큼 연산하는 상황이 많아 len 변수로 처리해주는 것만 신경썼다.move 메서드는 이전에 저장한 구름 위치정보를 바탕으로 구름을 이동시킨 후 비를 1 내리고, 대각선 방향에 대한 탐색으로 물복사버그 진행 후 새롭게 다음 구름 위치를 탐색하는 순서로 구현했다.3. .. 2025. 2. 19.
[백준] 2108번 - 통계학 [Java] https://www.acmicpc.net/problem/2108 1.  아이디어 산술평균은 Math.round 메서드로 반올림을 하는 방식으로, 중앙값은 정렬을 활용해서, 최빈값은 카운팅 배열로, 범위는 정렬을 활용해서 구할 수 있다.2. 문제풀이 입력 단계에서 수들을 배열로 입력받으면서 합과 카운팅 배열을 작성했다. 이후 배열을 정렬해서 중앙값과 범위를 구하고 합으로 산술평균을 구하고, 카운팅 배열로 최빈값을 찾는 방식으로 구현했다.3. 코드 import java.io.*;import java.util.*;public class Main { private static final int MAX = 4000; public static void main(String[] args) throws I.. 2025. 2. 19.
[백준] 31610번 - 飴の袋詰め (Drops Packing) [Java] https://www.acmicpc.net/problem/31610 1.  아이디어 A * B + C의 값을 구하는 문제로 사칙연산 연산자로 간단하게 해결할 수 있다.2. 문제풀이 System.out.println 메서드로 출력하는 방식으로 구현했다.3. 코드 import java.io.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int A = Integer.parseInt(br.readLine()); int B = Integer... 2025. 2. 19.
[백준] 2257번 - 화학식량 [Java] https://www.acmicpc.net/problem/2257 1.  아이디어 Stack 자료구조를 활용하면 간단하게 해결할 수 있다.2. 문제풀이 괄호와 화학식량을 모두 넣기 위해 String 객체를 받는 Stack을 만들었다. 숫자가 등장하면 이전 화학식에 곱해야하므로 Stack에서 꺼내서 곱하고 다시 넣었고, 열린 괄호나 원소면 숫자로 변경해서 넣었다. 닫힌 괄호면 열린 괄호가 나올 때까지 꺼내서 더한 후 다시 Stack에 넣으면 된다.3. 코드 import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader .. 2025. 2. 18.
[백준] 8979번 - 올림픽 [Java] https://www.acmicpc.net/problem/8979 1.  아이디어 람다식을 활용한 객체 정렬로 해결할 수 있었다.2. 문제풀이 각 국가를 클래스로 만들고 국가 번호, 국가 순위, 금메달 수, 은메달 수, 동메달 수를 필드로 뒀다. 입력을 받은 후 금은동에 맞춰 정렬을 하고 순회를 하며 인덱스로 순위를 부여했다. 이후 국가 번호 순으로 정렬해서 K 국가의 순위를 출력하면 됐다.3. 코드 import java.io.*;import java.util.*;public class Main { private static class Node { int num; int order; int gold; int silver; int bron.. 2025. 2. 18.
[백준] 20057번 - 마법사 상어와 토네이도 [Java] https://www.acmicpc.net/problem/20057 1.  아이디어 달팽이 배열처럼 이동하는 것은 이동 길이가 1, 1, 2, 2, 3 이렇게 1부터 수가 두 번 등장하면 방향이 바뀌는 것을 이용했고, 모래의 이동은 5 x 5의 배열에 미리 이동시킨 후 대조하는 방식으로 해결했다.2. 문제풀이 모래가 흩날린 경우의 이동을 2차원 배열로 바꾼 후 원본 배열과 인덱스 비교를 통해 이동시키는 방식을 적용했다. 토네이토 소멸 후 격자 내의 모래의 합을 구해서 이를 최초 값과 비교하는 방식으로 격자 밖으로 나간 모래의 양을 구했다.3. 코드 import java.io.*;import java.util.*;public class Main { private static final int[] dr.. 2025. 2. 17.
[백준] 33165번 - 徒競走 (Footrace) [Java] https://www.acmicpc.net/problem/33165 1.  아이디어 두 수의 곱을 구하는 간단한 문제이다.2. 문제풀이 * 연산자로 곱셈을 수행한 후 출력했다.3. 코드 import java.io.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int T = Integer.parseInt(br.readLine()); int V = Integer.parseInt(br.readLine()); System.out.. 2025. 2. 17.
[백준] 13277번 - 큰 수 곱셈 [Java] https://www.acmicpc.net/problem/13277 1.  아이디어 기본 타입의 범위를 넘어가는 큰 수에 대한 곱셈을 하는 문제로 BigInteger 클래스를 활용하면 간단하게 해결할 수 있다.2. 문제풀이 BigInteger 클래스의 multiply 메서드를 활용해서 곱셈을 구했다.3. 코드 import java.io.*;import java.math.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); .. 2025. 2. 17.
[백준] 1966번 - 프린터 큐 [Java] https://www.acmicpc.net/problem/1966 1.  아이디어 문서 번호와 중요도를 저장한 클래스를 활용해서 해결했다.2. 문제풀이 주어진 문서로 객체를 만들어서 Queue에 넣은 후 무한 루프에서 Queue에 있는 문서의 중요도의 최댓값을 구한 후 Queue에서 문서 하나를 꺼내 이 문서의 중요도가 최댓값과 일치하면서 M번 문서면 종료하고 문서의 중요도가 최댓값보다 크거나 같으면 출력할 정답을 + 1 하고 다시 무한 루프를 반복하고 둘 다 아니면 다시 Queue에 삽입했다.3. 코드 import java.io.*;import java.util.*;public class Main { private static class Node { int order; i.. 2025. 2. 15.
[백준] 18110번 - solved.ac [Java] https://www.acmicpc.net/problem/18110 1.  아이디어 Math.round 메서드로 반올림을 수행하는 걸 활용하면 간단하게 해결할 수 있다.2. 문제풀이 주어진 점수들을 정렬한 후 절사평균을 위한 15%에 해당하는 인원수를 계산 후 인덱스를 활용해 70% 인원의 점수만 더했다. 이후 절사평균만 출력하면 된다.3. 코드 import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); .. 2025. 2. 15.
[백준] 19237번 - 어른 상어 [Java] https://www.acmicpc.net/problem/19237 1.  아이디어 상어의 이동에서 다음 방향에 대한 우선순위가 현재 방향에 따라 달라진다. 이를 처리하기 위해 2차원 배열로 방향 관리를 했으며 우선순위 큐를 활용해 번호가 작은 상어가 우선권을 갖도록 구현했다.2. 문제풀이 상어를 클래스로 만들어서 번호, 위치, 방향과 다음 방향에 대한 정보를 필드로 만들었다. 다음 방향은 현재 방향에 따라 우선순위가 달라져서 이를 2차원 배열로 나타내서 2차원 배열의 행 인덱스와 현재 방향을 맞춰서 현재 방향에 따른 다음 방향 우선순위를 처리했다.상어 클래스는 번호에 대한 내림차순을 기본 정렬 기준으로 설정했는데 상어를 담을 우선순위 큐 2차원 배열에서 한 칸에 여러 마리의 상어가 있을 경우 한 마리만.. 2025. 2. 14.
[백준] 2941번 - 크로아티아 알파벳 [Java] https://www.acmicpc.net/problem/2941 1.  아이디어 8가지 크로아티아 알파벳을 조건 분기로 찾는 방식으로 구현했다.2. 문제풀이 배열에 입력을 담아 for문으로 순회하는 방식으로 찾았으며 인덱스 범위만 주의해서 구현했다.3. 코드 import java.io.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); char[] input = br.readLine().toCharArray(); int len = inp.. 2025. 2. 14.