본문 바로가기

코딩테스트 준비609

[백준] 10804번 - 카드 역배치 [Java] https://www.acmicpc.net/problem/10804 1.  아이디어 반복문과 두 수 교환하기의 조합으로 간단하게 구현할 수 있다.2. 문제풀이 한번의 역배치를 처리하는 swap 메서드를 작성하고 10번 반복 사용하는 방식으로 구현했다.swap은 반복문에서 구간의 양끝 원소부터 안쪽으로 계속 교환을 해나가면 되고 같은 원소가 2번 교환되지 않게 구간의 중간까지만 진행하도록 구현했다.3. 코드 import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new .. 2025. 1. 5.
[백준] 1267번 - 핸드폰 요금 [Java] https://www.acmicpc.net/problem/1267 1.  아이디어 몫과 나머지 연산으로 청구 금액을 구할 수 있다.2. 문제풀이 청구 금액은 30초, 60초 같은 시간 단위에 대한 몫 + 1 단위로 청구 된다는 점을 활용해서 구현했다.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)); BufferedWriter bw = new BufferedWriter(new Ou.. 2025. 1. 5.
[백준] 2480번 - 주사위 세개 [Java] https://www.acmicpc.net/problem/2480 1.  아이디어 if else if else 조건 분기로 간단하게 해결할 수 있다.2. 문제풀이 문제 조건 순서에 맞게 조건 분기 처리해서 구현했다.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)); StringTokenizer st = new StringTokenizer(br.readLine()); i.. 2025. 1. 5.
[백준] 10093번 - 숫자 [Java] https://www.acmicpc.net/problem/10093 1.  아이디어 for문의 조건을 활용해서 두 정수 사이의 수를 간단하게 출력할 수 있다.2. 문제풀이 정수의 범위가 int형을 넘어가서 오버플로우가 발생할 수 있어서 long 타입으로 선언했고 A가 B보다 크게 주어질 수 있는 점만 주의해서 구현했다.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)); Buffer.. 2025. 1. 5.
[백준] 15552번 - 빠른 A+B [Java] https://www.acmicpc.net/problem/15552 1.  아이디어 문제 설명처럼 빠른 입출력을 위해 BufferedReader와 BufferedWriter를 적용하면 된다.2. 문제풀이 IOException을 던지는 것과 flush로 버퍼를 비워주는 것만 주의해서 구현하면 된다.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)); BufferedWriter bw =.. 2025. 1. 5.
[백준] 9713번 - Sum of Odd Sequence [Java] https://www.acmicpc.net/problem/9713 1.  아이디어 1부터 N까지 홀수의 합은 (1+N)/2의 제곱으로 구할 수 있다.2. 문제풀이 아이디어 그대로 구현했다.3. 코드 import java.io.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); StringBuilder sb.. 2025. 1. 5.
[백준] 2225번 - 합분해 [Java] https://www.acmicpc.net/problem/2225 1.  아이디어 Bottom-Up 다이나믹 프로그래밍 또는 중복조합을 활용한 Top-Down 다이나믹 프로그래밍으로 해결할 수 있다.2. 문제풀이 0부터 N까지의 수 중 K개를 선택해서 N을 만드는 경우는 중복조합으로 해결할 수 있다.N을 0 + 1 + 1 + ... + 1 + 0 으로 표현한다면 덧셈 기호는 N+1개가 되고 이 덧셈 기호 중 K-1개를 선택해서 칸막이를 치면 K개의 덩어리를 얻을 수 있다. 이 각 덩어리의 합이 선택한 숫자라고 생각하면 중복조합으로 해결하는 아이디어를 얻을 수 있다. 중복조합 공식 중 nHr = n-1Hr + nHr-1을 이용해서 다이나믹 프로그래밍으로 풀이했다.3. 코드 import java.io.*;i.. 2025. 1. 4.
[백준] 16165번 - 걸그룹 마스터 준석이 [Java] https://www.acmicpc.net/problem/16165 1.  아이디어 HashMap과 TreeSet을 활용해서 조건에 맞게 자료 구조를 처리했다.2. 문제풀이 두 개의 HashMap을 활용했는데 하나는 key에 걸그룹 이름, value에 걸그룹 멤버를 저장했고, 하나는 key에 걸그룹 멤버, value에 걸그룹 이름을 저장했다. 첫번째 HashMap은 퀴즈가 0번일 경우 사용했고 걸그룹 멤버를 사전순으로 출력하기 좋게 TreeSet으로 처리했다.3. 코드 import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { Buffere.. 2025. 1. 4.
[백준] 17219번 - 비밀번호 찾기 [Java] https://www.acmicpc.net/problem/17219 1.  아이디어 HashMap을 활용하면 간단하게 구현할 수 있다.2. 문제풀이 key에 사이트 이름, value에 비밀번호를 입력하는 HashMap을 이용하면 간단하게 해결할 수 있다.입력 값이 띄어쓰기로 파싱할 수 있어서 StringTokenizer까지 활용해서 구현했다.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. 1. 4.
[백준] 1620번 - 나는야 포켓몬 마스터 이다솜 [Java] https://www.acmicpc.net/problem/1620 1.  아이디어 HashMap을 활용하면 간단하게 구현할 수 있다.2. 문제풀이 key와 value 모두 String인 HashMap을 이용했고 , 이렇게 두가지 모두 넣어줬다.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)); BufferedWriter bw = new BufferedWriter(new Outpu.. 2025. 1. 4.
[백준] 1475번 - 방 번호 [Java] https://www.acmicpc.net/problem/1475 1.  아이디어 카운팅 배열을 활용하면 간단하게 구현할 수 있다.2. 문제풀이 카운팅 배열을 활용해서 0부터 9까지의 등장 횟수를 일단 세줬다.이후 6과 9는 평균을 내서 다시 저장시켜줬고, 다시 카운팅 배열을 순회하며 최댓값을 찾는 방식으로 구현했다.이때 평균을 내는 과정에서 나머지를 버리면 안돼서 1을 더하고 나눠줬다.3. 코드 import java.io.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.. 2025. 1. 4.
[백준] 3273번 - 두 수의 합 [Java] https://www.acmicpc.net/problem/3273 1.  아이디어 투 포인터 알고리즘을 활용하면 간단하게 해결할 수 있다.2. 문제풀이 두 수의 합이 X가 되는 조합의 수를 구해야 한다.이를 투 포인터 알고리즘을 적용하면 입력 값을 배열로 저장한 뒤 정렬을 해준다.이후 배열 양 끝에서 포인터를 출발해서 두 수의 합이 X보다 작으면 왼쪽 포인터를 오른쪽으로 한 칸 이동시켜 두 수의 합이 더 커지게 만들고 두 수의 합이 X보다 크면 오른쪽 포인터를 왼쪽으로 한 칸 이동시켜 두 수의 합이 더 작아지게 만들어준다. 두 수의 합이 X가 되면 조합의 수를 하나 세고 두 포인터를 모두 한 칸씩 이동시키면 된다.3. 코드 import java.io.*;import java.util.*;public cl.. 2025. 1. 4.