본문 바로가기
반응형

PS 문제 풀이/Baekjoon446

[BOJ] 백준 10211 Maximum Subarray 출처: https://www.acmicpc.net/problem/10211 Input 2 5 1 2 3 4 5 5 2 1 -2 3 -5 Output 15 4 연속된 부분 합 (연속합) 내용 참고 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int T = Integer.parseInt(sc.next()); while(T-- > 0) { int N = Integer.parseInt(sc.next());; int[] arr = new int[N]; for(int i=0; i 2021. 2. 20.
[BOJ] 백준 1914 하노이 탑 출처: https://www.acmicpc.net/problem/1914 Input 3 Output 7 1 3 1 2 3 2 1 3 2 1 2 3 1 3 Sample Output을 분석하면 어떻게 옮겨지는지 알 수 있습니다. 이를 재귀적으로 해결할 수 있습니다. 1. 제일 큰 원반을 제외한 N-1개의 원반들을 A 기둥에서 B 기둥으로 이동시킵니다. 2. 제일 큰 원반 한개를 A 기둥에서 C 기둥으로 이동시킵니다. 3. 1번에서 옮겨진 원반들을 B기둥에서 C 기둥으로 이동시킵니다. : 시작점과 도착점이 있고, 도달하기 위한 중간점을 이용해야만 합니다. 문제조건상 N > 20인 경우는 원반들이 옮겨지는 횟수만 구하면 되는데 결국 (2N - 1)을 출력하면 됩니다. ← 수학적으로 증명 하지만 2100은 lon.. 2021. 2. 20.
[BOJ] 백준 1159 농구 경기 출처: https://www.acmicpc.net/problem/1159 Input 18 babic keksic boric bukic sarmic balic kruzic hrenovkic beslic boksic krafnic pecivic klavirkovic kukumaric sunkic kolacic kovacic prijestolonasljednikovi Output bk 만약 선수 3명의 이름이 아래와 같을 때, cnt[name[0] - 97]++; 처리 → babic, keksic, boric cnt['b' - 97] = 2 cnt['k' - 97] = 1 → cnt[] ≥ 5 인 경우 출전가능한 첫 글자에 해당됩니다. #include int N, cnt[26], idx, i; char nam.. 2021. 2. 20.
[BOJ] 백준 1004 어린 왕자 출처: https://www.acmicpc.net/problem/1004 Input 2 -5 1 12 1 7 1 1 8 -3 -1 1 2 2 2 5 5 1 -4 5 1 12 1 1 12 1 2 -5 1 5 1 1 0 0 2 Output 3 0 문제조건에서 원의 경계가 맞닿거나 교차하는 경우는 주어지지 않습니다. 두 점의 상태는 아래의 경우로 나눌 수 있습니다. ① 두 개 모두 원 안에 있는 경우 → +0 : 원의 교차 없이 두 점을 이을 수 있습니다. ② 두 개 모두 원 밖에 있는 경우 → +0 : 원의 바깝 부분을 돌아가서 교차 없이 두 점을 이을 수 있습니다. ③ 둘 중 한 개만 원 안에 있는 경우 → +1 : 하나의 원을 교차할 수 밖에 없습니다. [빨간색 점을 기준] ▶ d1 < r1 이므로, 원.. 2021. 2. 20.
[BOJ] 백준 2042 구간 합 구하기 출처: https://www.acmicpc.net/problem/2042 Input Output 구간합을 처리하는 코드는 아래와 같이 구현할 수 있습니다. 하지만 배열 원소값을 변경과 구간 합을 구하는 것이 여러번 일어나기 때문에 이에 대한 효율적인 처리가 필요합니다. 세그먼트 트리(Segment Tree) #include #include #include typedef long long ll; using namespace std; int N, M, K; vector arr, tree; vector cmdList; void input() { int i, a, b, c; cin >> N >> M >> K; for (i = 0; i > a; arr.push_back(a); } f.. 2021. 2. 20.
[BOJ] 백준 10989 수 정렬하기 3 출처: https://www.acmicpc.net/problem/10989 Input 10 5 2 3 1 4 2 3 5 1 7 Output 1 1 2 2 3 3 4 5 5 7 N이 크기 때문에 제한시간을 만족시키기 어렵다. 정렬기법을 사용하지 않고 배열 원소 index 이용 중복되어 입력될 수 있으므로 원소값은 중복 개수 할당. ex) arr[5] = 3 / arr[8] = 2 라면 출력결과는 다음과 같다. ▶ 5 5 5 8 8 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; public class Main { publi.. 2021. 2. 20.
[BOJ] 백준 10868 최솟값 출처: https://www.acmicpc.net/problem/10868 Input 10 4 75 30 100 38 50 51 52 20 81 5 1 10 3 5 6 9 8 10 Output 5 38 20 5 배열의 특정 구간이 자주 변경되므로 세그먼트 트리(Segment Tree)를 이용합니다. 단말 노드를 제외한 세그먼트 트리에서는 자식 노드들의 최솟값들이 저장됩니다. 인덱스 범위를 벗어나는 경우에는 INF(큰 수)를 반환하게 합니다. (특정 범위에서 최솟값을 query하기 때문에 INF를 반환해도 상관 없습니다.) #include #include #include #define INF 2e9 #define endl "\n" using namespace std; inline int min(int A,.. 2021. 2. 20.
[BOJ] 백준 2357 최솟값과 최댓값 출처: https://www.acmicpc.net/problem/2357 Input 10 4 75 30 100 38 50 51 52 20 81 5 1 10 3 5 6 9 8 10 Output 5 100 38 100 20 81 5 81 배열의 특정 구간이 자주 변경되므로 세그먼트 트리(Segment Tree)를 이용합니다. #include #include #define LM 100000 #define INF 2e9 using namespace std; int N, M, a, b; int maxTree[4 * LM], minTree[4 * LM]; int maxUpdate(int pos, int val, int node, int start, int end) { if (pos < start || end < p.. 2021. 2. 20.
[BOJ] 백준 11505 구간 곱 구하기 출처: https://www.acmicpc.net/problem/11505 Input 5 2 2 1 2 3 4 5 1 3 6 2 2 5 1 5 2 2 3 5 Output 240 48 배열의 특정 구간이 자주 변경되므로 세그먼트 트리(Segment Tree)를 이용합니다. 곱셈의 특성상 구간의 곱을 가지고 있으면 무수히 커질 수 있기 때문에 문제에서 모듈러연산을 요구합니다. 최종 결과에만 모듈러연산을 해준다면 노드가 가지고 있는 값이 Overflow 될 수 있으므로 노드가 가진 값을 갱신할 때도 % 연산 처리 합니다. #include #include #include #define MOD 1000000007 #define LM 1000000 typedef long long ll; using namespace.. 2021. 2. 20.
[BOJ] 백준 13458 시험감독 삼성 SW 코딩 테스트 준비(A형) 삼성 SW 기출 모음 출처: https://www.acmicpc.net/problem/13458 문제에서 제시하는 class의 구성원은 다음과 같다. 응시자 수 A명이 주어졌을 때, 총 감독관 1명과 여러명의 부감독관이 서로 겹치지 않게 수험생을 관리해야 최소 인원으로 구성된 감독관으로 진행될 수 있다. 이때, 총 감독관이 1명이 무조건 있고, 부감독관이 몇 명이 되는지 구해야 한다. Input 3 3 4 5 2 2 Output 7 [0] 수험생 3명 - 총감독관 1명이 2명 mark / 부감독관 1명이 1명 mark [1] 수험생 4명 - 총감독관 1명이 2명 mark / 부감독관 1명이 2명 mark [2] 수험생 5명 - 총감독관 1명이 2명 mark / 부감독관.. 2021. 2. 20.
반응형