본문 바로가기

코딩테스트 준비301

[백준] 6603번 - 로또 [Java] https://www.acmicpc.net/problem/6603 1.  아이디어 조합을 활용하면 간단하게 해결할 수 있다.2. 문제풀이 문제 조건이 K개의 숫자 중 6가지를 고르는 경우의 수를 출력하는 문제여서 조합을 구현하여 해결할 수 있었다.출력을 위해 StringBuilder를 정적 변수로 활용했다.3. 코드 import java.io.*;import java.util.*;public class Main { private static final StringBuilder sb = new StringBuilder(); private static int[] arr; private static int[] sel; public static void main(String[] args) .. 2025. 1. 11.
[백준] 15657번 - N과 M (8) [Java] https://www.acmicpc.net/problem/15657 1.  아이디어 배열의 중복 조합을 구하면 된다.2. 문제풀이 재귀 함수와 반복문의 활용으로 간단하게 구현할 수 있다.3. 코드 import java.io.*;import java.util.*;public class Main { private static final StringBuilder sb = new StringBuilder(); private static int[] arr; private static int[] sel; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(n.. 2025. 1. 11.
[백준] 15656번 - N과 M (7) [Java] https://www.acmicpc.net/problem/15656 1.  아이디어 배열의 중복 순열을 구하면 된다.2. 문제풀이 재귀 함수와 반복문의 활용으로 간단하게 구현할 수 있다.3. 코드 import java.io.*;import java.util.*;public class Main { private static final StringBuilder sb = new StringBuilder(); private static int[] arr; private static int[] sel; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(n.. 2025. 1. 11.
[백준] 15655번 - N과 M (6) [Java] https://www.acmicpc.net/problem/15655 1.  아이디어 배열의 조합을 구하면 된다.2. 문제풀이 재귀 함수와 반복문의 활용으로 간단하게 구현할 수 있다.3. 코드 import java.io.*;import java.util.*;public class Main { private static final StringBuilder sb = new StringBuilder(); private static int[] arr; private static int[] sel; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new .. 2025. 1. 11.
[백준] 15654번 - N과 M (5) [Java] https://www.acmicpc.net/problem/15654 1.  아이디어 배열의 순열을 구하면 된다.2. 문제풀이 재귀 함수와 반복문의 활용으로 간단하게 구현할 수 있다.3. 코드 import java.io.*;import java.util.*;public class Main { private static final StringBuilder sb = new StringBuilder(); private static int[] arr; private static boolean[] visited; private static int[] sel; public static void main(String[] args) throws IOException { Buffer.. 2025. 1. 11.
[백준] 15652번 - N과 M (4) [Java] https://www.acmicpc.net/problem/15652 1.  아이디어 1부터 N까지의 중복 조합을 구하면 된다.2. 문제풀이 재귀 함수와 반복문의 활용으로 간단하게 구현할 수 있다.3. 코드 import java.io.*;import java.util.*;public class Main { private static final StringBuilder sb = new StringBuilder(); private static int[] arr; private static int[] sel; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedRea.. 2025. 1. 11.
[백준] 15651번 - N과 M (3) [Java] https://www.acmicpc.net/problem/15651 1.  아이디어 1부터 N까지의 중복 순열을 구하면 된다.2. 문제풀이 재귀 함수와 반복문의 활용으로 간단하게 구현할 수 있다.3. 코드 import java.io.*;import java.util.*;public class Main { private static final StringBuilder sb = new StringBuilder(); private static int[] arr; private static int[] sel; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedRea.. 2025. 1. 11.
[백준] 15650번 - N과 M (2) [Java] https://www.acmicpc.net/problem/15650 1.  아이디어 1부터 N까지의 조합을 구하면 된다.2. 문제풀이 재귀 함수와 반복문의 활용으로 간단하게 구현할 수 있다.3. 코드 import java.io.*;import java.util.*;public class Main { private static final StringBuilder sb = new StringBuilder(); private static int[] arr; private static int[] sel; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader.. 2025. 1. 11.
[백준] 15649번 - N과 M (1) [Java] https://www.acmicpc.net/problem/15649 1.  아이디어 1부터 N까지의 순열을 구하면 된다.2. 문제풀이 재귀 함수와 반복문의 활용으로 간단하게 구현할 수 있다.3. 코드 import java.io.*;import java.util.*;public class Main { private static final StringBuilder sb = new StringBuilder(); private static int[] arr; private static boolean[] visited; private static int[] sel; public static void main(String[] args) throws IOException { B.. 2025. 1. 11.
[백준] 18809번 - Gaaaaaaaaaarden [Java] https://www.acmicpc.net/problem/18809 1.  아이디어 조합과 BFS 알고리즘으로 해결할 수 있었다.2. 문제풀이 조합을 두번 사용해서 배양액이 들어갈 수 있는 곳을 선택했다.먼저 황토색 칸 중 초록색 배양액이 들어갈 수 있는 곳을 조합으로 뽑은 후 남은 황토색 칸 중 빨간색 배양액이 들어갈 수 있는 곳을 조합으로 뽑았다. 이후 BFS에서 문제 조건에 맞춰 시뮬레이션을 돌리는 방식으로 구현했다.시간 초과로 고생을 많이 했는데 알고보니 코드 성능 문제가 아니라 BFS 무한 삽입 이슈가 있어서 꼼꼼한 구현이 필요했던 문제였다.3. 코드 import java.io.*;import java.util.*;public class Main { // 각 땅의 위치 및 색 class .. 2025. 1. 11.
[백준] 1941번 - 소문난 칠공주 [Java] https://www.acmicpc.net/problem/1941 1.  아이디어 조합 + BFS 알고리즘으로 해결할 수 있다.2. 문제풀이 반의 크기가 5 * 5로 아주 작다는 점에서 완전탐색으로 해결할 수 있을 것으로 생각했다.풀이는 조합으로 25명 중 7명을 뽑고 이 7명이 가로세로로 연결되었는지 BFS로 탐색하는 방법으로 구현했다.이 과정에서 이다솜파가 더 많아야 하는 조건을 조합 과정에서 백트래킹으로 처리했고 조합에서 뽑은 수를 따로 방문체크를 해서 BFS에서 Queue에 넣을 학생이 조합에서 뽑힌 학생인지 체크하는 과정이 추가됐다.3. 코드 import java.io.*;import java.util.*;public class Main { private static final int[] .. 2025. 1. 11.
[백준] 16987번 - 계란으로 계란치기 [Java] https://www.acmicpc.net/problem/16987 1.  아이디어 중복 순열을 응용한 재귀 함수 + 백트래킹으로 시뮬레이션을 돌려 해결했다.2. 문제풀이 중복 순열 기반의 solve 메서드를 먼저 작성했다. selIdx는 현재 손에 들 계란, for문의 i는 손에 든 계란으로 칠 계란을 의미한다.그러면 재귀 함수는 selIdx를 파라미터로 들고 다니며 selIdx가 오른쪽 끝 계란까지 다 선택했을 때 종료되게 되고 이때 깨진 계란의 수를 세는 방식으로 구현했다. 다만 마지막 계란이 칠 수 있는 계란이 없을 경우 재귀 함수가 추가로 실행되지 않아서 cnt == egg.length - 1 이라는 조건을 추가했다. solve 메서드는 문제 조건에 맞춰 현재 손에 들 계란이 깨진 계란이면 다음.. 2025. 1. 11.