순열, 중복순열, 조합, 중복조합, 부분집합
2024. 6. 15. 20:46
Algorism/개념
package main;import java.io.BufferedReader;import java.io.FileInputStream;import java.io.InputStreamReader;import java.util.Arrays;public class CompleteSearch { private static int m = 3; private static int[] arr = {1, 3, 5, 7}; private static boolean[] select; private static int[] num; public static void main(String[] args) throws Exception { System.setIn(new FileInputStream("./input.txt")); ..
[백준] 1515번 : 수 이어 쓰기 - JAVA [자바]
2024. 6. 5. 15:05
Algorism/백준
https://www.acmicpc.net/problem/1515 문제 약간의 그리디 알고리즘을 가미한 구현문제이다. 입력으로 주어지는 수는 3000자리이고 0~9까지는 10개이다. 3000 * 10 = 30000 이내에서 2초동안 모두 찾을 수 있다. 입력값 290119으로 예시를 들겠다. 이 문자열의 문자마다 위치를 가르키는 index가 있다. 그리고 1 부터 시작하는 값 Num의 각자리수와 비교를 해준다. Num이 2일때를 생각해보자. 이때의 index는 0이다. 290119의 0의 인덱스 위치는 2이다. Num과 인덱스 위치의 값이 같기 때문에 index를 증가시킨다. (index = 1) 이후 Num이 9일때도 마찬가지로 index를 증가시킨다. (index = 2) 그다음 Num이 10일때는..
[백준] 21921번 : 블로그 - JAVA [자바]
2024. 6. 4. 16:33
Algorism/백준
https://www.acmicpc.net/problem/21921 문제 위 문제는 N이 250,000 이하의 값을 가지기 때문에 O(N*N) 형식의 완전탐색으로 푼다면 시간 초과가 걸릴 것이다.X의 기간은 항상 값을 유지하기 때문에 이를 슬라이딩 윈도우 아이디어로 풀면 되겠다는 생각을 했다. X의 값만큼의 윈도우를 설정하고 한칸씩 밀어버리는 방법이다.이렇게 푼다면 O(N)으로 풀 수 있다. 윈도우 범위와 인덱스의 위치등 값만 신경써서 해주면 된다. 전체 코드public class Main { public static void main(String[] args) throws Exception { System.setIn(new FileInputStream("./input.txt")); ..