본문 바로가기
반응형

전체 글147

PS 풀이결과 표기 방법 (◎ / ○ / △ ) ◎ : 문제의 이해부터 폴이 과정, 알고리즘 구현까지 완벽하게 혼자 힘으로 해결한 문제 → 다시 풀어볼 필요 없음. ○ : 문제는 풀었지만 반례를 통과 못하거나, 구글링을 통해 약간의 도움을 받아서 해결한 문제 → 다시 풀어보고 혼자 풀었으면 큐에서 삭제. △ : 어떻게 풀어야 할지 감도 못잡아서 구글링을 통해서야 이해한 문제 → 적어도 2번은 더 풀어볼 것. 2022. 12. 22.
[백준] 1525번 - 퍼즐 (Java)(△) https://www.acmicpc.net/problem/1525 1525번: 퍼즐 세 줄에 걸쳐서 표에 채워져 있는 아홉 개의 수가 주어진다. 한 줄에 세 개의 수가 주어지며, 빈 칸은 0으로 나타낸다. www.acmicpc.net 1. 숫자가 이동하는 것이 아니라 0번이 이동하는 것으로 바꿔서 생각하자. 2. 0의 좌표를 이동하면 그 위치의 숫자를 원래 0의 위치로 옮긴다. 3. 메인함수에서 0의 위치를 찾아서 DFS()를 호출한다. 4. DFS 함수 구성 (int count, int x, int y) - count : 0의 이동 횟수 - x, y : 0이 이동한 위치 - 종료조건 : 0이 (2, 2)의 위치로 이동 - 퍼즐의 유효성 검사를 수행하는 함수를 실행 - 재귀호출은 0을 하나 이동 시키고 .. 2022. 12. 20.
[백준] 6603번 - 로또 (Java) 1. 줄의 첫 숫자가 N이고, 뒤부터 로또에 사용될 정수들이 배열이 입력된다. 2. 중복방문을 허용하지 않는다. (방문배열 사용) 3. 순서가 바꾸어도 동일 조합으로 인정한다. (i=start부터 시작) 4. 종료조건은 level == N이다. import java.util.Scanner; import java.util.Arrays; import java.lang.StringBuilder; import java.util.HashSet; public class Main { static int N, S; static int sum = 0, count = 0; static int A[]; static int Ans[]; static boolean visited[]; void DFS(int start, int .. 2022. 12. 11.
[백준] 1182번 - 부분수열의 합 (Java) https://www.acmicpc.net/problem/1182 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 1. 종료조건은 tree level이 N까지 진행될 때이다. 2. 합이 S가 되면 count +1을 한다. - 합이 S가 되더라도 탐색은 계속 진행한다. 3. 모든 탐색이 끝나면 count를 출력한다. 4. 부분집합을 구하는 것이기 때문에 지금 수(A[i])를 더하거나 더하지 않는 수, 2가지 경우의 수로 나뉜다. - 현재 수(A[level])를 더하고 다음 l.. 2022. 12. 11.
[백준] 15666번 - N과 M(12) (Java) https://www.acmicpc.net/problem/15666 15666번: N과 M (12) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 1. 중복방문 허용함. (방문배열 사용X) 2. 순서다른 조합 허용안함. (i = start부터 시작) 3. 중복 조합 허용안함. (HashSet으로 포함 확인 후 제거) import java.util.Scanner; import java.util.Arrays; import java.lang.StringBuilder; import java.util.HashSet; public class Mai.. 2022. 12. 10.
[백준] 15665번 - N과 M(11) (Java) https://www.acmicpc.net/problem/15665 15665번: N과 M (11) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 1. 중복방문 허용함 (방문배열 사용X) 2. 순서다른 조합 허용함 (i = 0 부터 시작) 3. 중복 조합 허용안함 (HashSet으로 체크 후 제거) import java.util.Scanner; import java.util.Arrays; import java.lang.StringBuilder; import java.util.HashSet; public class Main { static.. 2022. 12. 10.
[백준] 15664번 - N과 M(10) (Java) https://www.acmicpc.net/problem/15664 15664번: N과 M (10) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 1. 입력받은 정수배열만 사용해야 함. 2. 중복수열 허용안함 (방문배열 사용함) 3. 순서 바뀌면 다른 조합으로 인정안함(i = start 부터 시작) 4. 입력 배열 중 같은 숫자가 있으면 중복 방문은 아니지만 같은 조합이므로 한번만 출력해야 함. - HashSet을 사용해서 중복 문자열이 있으면 머지하지 않고 스킵하도록 구현함. import java.util.Scanner; import .. 2022. 12. 10.
[백준] 15663번 - N과 M(9) (Java) https://www.acmicpc.net/problem/15663 15663번: N과 M (9) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 1. 입력받은 정수배열만 사용해야 함. 2. 중복수열 허용안함 (방문배열 사용함) 3. 순서 바뀌면 다른 조합으로 인정(i = 0 부터 시작) 4. 입력 배열 중 같은 숫자가 있으면 중복 방문은 아니지만 같은 조합이므로 한번만 출력해야 함. - HashSet을 사용해서 중복 문자열이 있으면 머지하지 않고 스킵하도록 구현함. import java.util.Scanner; import java.ut.. 2022. 12. 10.
[백준] 15657번 - N과 M(8) (Java) https://www.acmicpc.net/problem/15657 15657번: N과 M (8) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 www.acmicpc.net 1. 입력받은 정수 배열을 사용해야 한다. 2. 중복방문 허용함. (방문배열 사용X) 2. 순서 바뀌어도 다른 조합인정 안함(i=start로 시작함) import java.util.Scanner; import java.util.Arrays; import java.lang.StringBuilder; public class Main { static int N, M; static int A[].. 2022. 12. 10.
반응형