본문 바로가기

알고리즘24

[Java]백준 10973번 :: 이전 순열 백준 온라인 저지 10973번 - 이전 순열 Java 알고리즘 문제풀이 풀이 완전탐색(BP)에 속하는 순열문제이다. 다음 순열 문제와 유사한 문제이다. 다음 순열 문제보기 다음 순열에서 부등호만 바꿔주면 되는 문제다. 1. A[i-1] > A[i]를 만족하는 가장 큰 i를 찾는다. 2. j >= i이면서 A[j] 1, i = 6 2. 다시 오른쪽부터 확인해서 4보다 첫 번째로 작은 수를 찾는다. -> 1 3. 4와 1의 자리를 바꾼다. -> 7 2 3 6 5 1 4 4. 바꾼 숫자의 오른쪽 .. 2019. 3. 1.
[Java]백준 10972번 :: 다음 순열 백준 온라인 저지 10972번 - 다음 순열 Java 알고리즘 문제풀이 풀이 완전탐색(BP)에 속하는 순열문제이다. 푸는 방법은 아래와 같다. 1. A[i-1] = i 이면서 A[j] > A[i-1]를 만족하는 가장 큰 j를 찾는다. 3. A[i-1]과 A[j]를 swap한다. 4. A[i]부터 순열을 뒤집는다. ex) 7 2 3 6 5 4 1 1. 오른쪽부터 왼쪽이 작은 수를 찾는다. 3 4 3. 3과 4를 자리를 바꾼다 -> 7 2 4 6 5 3 1 4. 바꾼 숫자의 오른쪽 전부를 뒤집는다. -> 7 2 4 1 3 5 6 import java.ut.. 2019. 3. 1.
[Java]백준 1978번 :: 소수 찾기 백준 온라인 저지 1978번 '소수 찾기' Java 알고리즘 문제풀이 풀이 소수찾기 문제이다. 이 문제는 입력한 숫자가 소수인지를 판단하는데 각각의 수가 소수인지 판단을 하고 소수이면 count값을 증가시키면 된다. 소수의 특징은 1과 자신만을 약수로 가진다는 점이다. 간단하게 풀 수 있는데 입력받은 숫자가 만약에 자신의 수 이외에 나머지 값을 0으로 가진다면 소수가 아니다. 이 점을 이용하면 된다. 이런 부류의 문제의 심화버전은 에라토스테네스의 체 알고리즘을 이용해야한다. import java.io.*; import java.util.*; public class Beak1978 { public static void main(String[] args) throws IOException { Buffered.. 2018. 12. 27.
[Java]백준 2775번 :: 부녀회장이 될테야 백준 온라인 저지 2775번 '부녀회장이 될테야' Java 알고리즘 문제풀이 풀이 문제를 보고 연습장에 써보면 피보나치 수열문제와 유사하다는 것을 눈치챌 수 있다. 바로 재귀함수를 이용하면 쉽게풀리는 문제다. 만약 2층 2호를 구한다면 2층 2호의 값은 2층 1호의 값과 1층 2호 값을 더한 것이라는 것을 알 수 있다. import java.util.Scanner; public class java_2775 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = sc.nextInt(); for (int i = 0; i < num; i++) { int k = sc.nextInt(); int n = sc... 2018. 12. 27.
[Java]백준 1157번 :: 단어 공부 백준 온라인 저지 1157번 '단어 공부' Java 알고리즘 문제풀이 풀이 이 문제에서는 아스키코드의 int값을 이용하면 빠르게 해결할 수 있다. 그리고 이 문제에서 처음 전제조건에 대문자와 소문자를 구별하지 않는다. 그리고 출력때 가장 많이 사용된 알파벳은 대문자로 출력하므로 사용자가 소문자로 입력을 하던지 대문자를 입력을 하던지에 관계없이 string에 모두 대문자로 변환하여 저장해야한다. 반복문에서 cnt라는 배열을 생성했다. 이 배열에 각 알파벳이 문장에 몇개 있는지에 대해 count값을 저장하고, max값과 비교하여 가장 많이 포함하는 문자를 result에 담는다. 그런데, 2개의 알파벳의 max값이 같다면 '?' 물음표를 출력한다. import java.util.Scanner; public c.. 2018. 12. 25.
[Java]백준 2675번 :: 문자열 반복 백준 온라인 저지 2675번 '문자열 반복' Java 알고리즘 문제풀이 풀이 이 문제 역시 문자열을 사용하는 함수를 연습한다는 점에 의미를 두는 문제이다. 정말 쉬운 문제다. import java.util.Scanner; public class java_2675 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = sc.nextInt(); for (int i = 0; i < num; i++) { int cnt = sc.nextInt(); String str = sc.nextLine(); String result = ""; for (int j = 0; j < str.length(); j++) { fo.. 2018. 12. 25.