본문 바로가기

Java/알고리즘

(4)
[완전 탐색] N과 M(1) - 중복허용(오름차순) 1. 문제 https://www.acmicpc.net/problem/15652 15652번: N과 M (4) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 2. 주의사항 선택된 이전 값(selected[k-1])을 구할때 인덱스의 시작(0, 1)에 따라서 조회하는 법을 다르게 써야한다. 시작인덱스 1 : 0번째 인덱스의 값은 0이므로 0일때 1로만 치환하면 된다. 시작인덱스 0 : -1번째 인덱스는 존재하지 않으므로(인덱스는 0부터 시작) -1인덱스가 조회되지 않도록 조건을 수정해야한다. 3.풀이 import java.io.*; impo..
[완전 탐색] N과 M(1) - 중복제외 1. 문제 https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 2. 주의사항 이중 for문을 이용해서 selected배열을 모두 찾을 수도 있지만, 시간복잡도가 오래 걸리게 된다. 그래서 used라는 배열을 이용해서 선택한 숫자의 사용여부를 판단할 수 있다. used : 사용한 숫자를 인덱스로 하며 사용했다면 "1" 미사용이라면 "0"을 저장한다. selected : 선택한 숫자를 저장하는 배열 최초 호출한 재귀함수의 싸이클이 끝났을 경우 선택한..
[완전 탐색] N과 M(3) - 중복허용 1. 문제 https://www.acmicpc.net/problem/15651 15651번: N과 M (3) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 2. 주의사항 selected배열에 선택한 값 N을 넣을 때 배열의 시작이 0인지, 1인지에 따라서 자연수 N선택하는 for문, 최종적으로 출력하기 위한 비교연산(k ==m)이 달라지므로 을 헷갈리면 안된다. N(자연수)을 선택하는 for문의 시작값은 0이아닌 1로 설정(0으로 해도 되나 추가로 +1을 계산해줘야함) 3.풀이 import java.io.*; import java.uti..
[이분 탐색] 수 찾기 https://www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net import java.io.*; import java.util.*; public class Main { static FastReader scan = new FastReader(); static int N, L, R; static int[] A, B; static void input() { N = scan.nextInt(); A = new int[N]..