본문 바로가기
반응형

알고리즘 PS/백준 알고리즘31

[백준] 14490번 - 백대열 (Java) 문자열을 split 해서 분리하는 것과 최대공약수를 구하는 법을 알아야 한다. 최대공약수는 유클리드 호제법을 이용해서 구현했다. import java.util.*; import java.io.*; /* [백준] 14490번 - 백대열 (Java) */ public class Main { static int N, number; static int A[]; void InputData() { Scanner in = new Scanner(System.in); //N = in.nextInt(); String str = in.next(); String s[] = str.split(":"); A = new int[2]; for (int i=0; i 2022. 9. 21.
[백준] 11720번 - 숫자의 합 (Java) (방법 #1) 숫자가 문자열 한개로 입력된다. 입력 받은 문자열을 char 배열로 잘라서 정수형 배열에 나눠 담아야 한다. 나눠담은 정수형 배열을 순차적으로 더하면 된다. (방법 #2) 정수 하나로 받아서 MOD를 사용해서 각 자리수를 계산할 수 있다. import java.util.*; import java.io.*; /* [백준] 11720번 - 숫자의 합 (Java) */ public class Main { static int N, number; static int A[]; void InputData() { Scanner in = new Scanner(System.in); N = in.nextInt(); String str = in.next(); A = new int[N]; for (int i=0; i 2022. 9. 21.
[백준] 1436 - 영화감독 숌 (Java) https://www.acmicpc.net/problem/1436 1436번: 영화감독 숌 666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타 www.acmicpc.net 1. 부르트포스 알고리즘을 이용해서 한자리씩 수를 증가시키면서 "666"이 포함되었으면 count++한다. 2. if (count == N)이면 그 때의 수를 리턴한다. 3. 문자열 체크는 정수를 String으로 바꾼다면 contains(문자)로 검색하면 된다. import java.util.*; import java.io.*; /* [백준] 1436 - 영화감독 숌 (Java) */ publi.. 2022. 9. 19.
[백준] 10872번 - 팩토리얼 (Java) https://www.acmicpc.net/problem/10872 10872번: 팩토리얼 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오. www.acmicpc.net 팩토리얼은 그 수 보다 작은 모든 정수의 곱이다. 5! = 5 x 4 x 3 x 2 x1이다. 즉, n! = n x (n-1)!과 동일하다. 이를 재귀함수로 구성하자. import java.util.*; import java.io.*; /* [백준] 10872번 - 팩토리얼 (Java) */ public class Main { static int N; void InputData() { Scanner in = new Scanner(System.in); N = in.nextInt(); } // 재귀함수로.. 2022. 9. 19.
[백준] 1541번 - 잃어버린 괄호 (Java) 1. 첫번째 수는 무조건 양수가 온다고 했으니 그 수에서 뺀값이 가장 작으려면 뒤에 -가 붙는 수가 가장 큰수여야 한다. 2. - 기호가 나오면 그 뒤로 나오는 수들을 모두 더해서 음수로 된 최대값을 만들어야 한다. 3. - 기호가 나오기 전까지의 숫자는 계속 더해주다가 - 기호가 나오면 거기서 괄호를 쳐서 모두 더해서 빼면 된다. ex) 55-50+40 = 55 - (50 + 40) = 55 - 90 = -35 10+55-50+40 = 10+55 - (50+40) = 65 - 90 = -25 1. 3개의 구현이 필요하다. 1-1. 입력 받은 문자열을 -를 기준으로 잘라서 문자열 배열에 담는 작업 1-2. 자른 문자열을 +를 기준으로 수를 뽑아내어서 더하는 작업 1-3. 각 취합된 수를 빼는 작업 2. .. 2022. 9. 19.
[백준] 1753번 - 최단경로 (Java) https://www.acmicpc.net/problem/1753 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가 www.acmicpc.net 1. 다익스트라 알고리즘을 사용 2. 정점은 인접행렬로 구성하고, 방향이 있는 그래프이니 s -> e만 배열에 저장할 것. import java.util.*; /* [백준] 1753번 - 최단경로 (Java) */ public class Main { static int V, E, K; static int[][] map; static int[] visited; .. 2022. 9. 14.
[백준] 2839번 - 설탕 배달 (Java) https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 재귀나 반복문으로 푸는 문제가 아니다. 따라서 수들을 늘어서놓고 법칙을 찾아야 한다. N 3 4 5 6 7 8 9 10 11 12 봉지수 1 2 N / 5 1 2 N % 5 3 4 0 1 2 3 4 0 1 2 N 13 14 15 16 17 18 19 봉지수 3 N / 5 2 3 N % 5 3 4 0 1 2 3 4 1. 법칙성을 찾기 위해 N/5와 N%5의 값들을 구해본다. N 3 4 5 6 7 8 9 10 .. 2022. 9. 14.
[백준] 1707번 - 이분 그래프 (Java) https://www.acmicpc.net/problem/1707 1707번: 이분 그래프 입력은 여러 개의 테스트 케이스로 구성되어 있는데, 첫째 줄에 테스트 케이스의 개수 K가 주어진다. 각 테스트 케이스의 첫째 줄에는 그래프의 정점의 개수 V와 간선의 개수 E가 빈 칸을 사이에 www.acmicpc.net 1. 먼저 이분그래프에 대해 알아보자. 2. 인접한 정점은 다른 색상으로 저장하자. (1 or 2) 3. 방문하려는데 동일한 색상이 이미 칠해져 있으면 이분그래프가 아니다. 4. DFS(정점번호, 색상)을 넘겨주자. import java.util.*; /* [백준] 1707번 - 이분 그래프 (Java) */ public class Main { static int K, V, E; static in.. 2022. 9. 13.
[백준] 7562번 - 나이트의 이동 (Java) https://www.acmicpc.net/problem/1707 1707번: 이분 그래프 입력은 여러 개의 테스트 케이스로 구성되어 있는데, 첫째 줄에 테스트 케이스의 개수 K가 주어진다. 각 테스트 케이스의 첫째 줄에는 그래프의 정점의 개수 V와 간선의 개수 E가 빈 칸을 사이에 www.acmicpc.net 1. BFS 탐색으로 최소이동거리를 구하는 문제이다. 2. TC가 여러개이므로 매번 맵을 초기화 해야 한다. 3. 누적거리는 map[][]에 탐색하면서 업데이트 한다. 4. 8방향으로 탐색이 가능하다. import java.util.*; /* [백준] 7562번 - 나이트의 이동 (Java) */ public class Main { static int N, M; static int map[][];.. 2022. 9. 13.
반응형