본문 바로가기
반응형

PS 문제 풀이/Baekjoon446

[BOJ] 백준 1316 그룹 단어 체커 출처: https://www.acmicpc.net/problem/1316 Approach # 완전탐색 단어 속에 특정문자가 연속되지 않게 재등장하는지 확인해야 한다. ① 주어지는 단어에서 문자 하나하나 확인해도 된다. ② 시작되는 문자를 기준(pivot)으로 잡는다. ③ pivot을 기준으로 남은 문자를 탐색하면 같은 문자가 있는지 확인한다. ④ 같은 문자인데, pivot과 거리가 있는 경우에는 직전에 위치한 문자와 비교해서 연속 여부를 판별한다. ex) "aaaya" 라는 단어가 있다고 가정해보자. word[0] "a"를 기준으로 남은 문자열 "aaya"를 탐색한다. word[1] "a"가 word[0]이지만 거리가 1 이므로 연속된다. word[2] "a"도 word[0]와 같은데, 연속여부를 판단하.. 2021. 9. 13.
[BOJ] 백준 1292 쉽게 푸는 문제 출처: https://www.acmicpc.net/problem/1292 Approach for 문을 연습하기 좋은 문제라고 생각한다. 주어지는 A, B의 범위가 1000 이하이므로 배열 크기 = 1000으로 만들어서 arr = [1 2 2 3 3 3 4 4 4 4 ...45, 45]와 같이 원소를 채워넣는다. 입력으로 받은 구간 [A, B] 합을 for문으로 탐색한 후 출력한다. O(N)의 시간으로 실행시간은 충분하다 ▶ 알고리즘 문제에서 시간 복잡도는 어떻게 하는걸까? ▶ 코딩 테스트 문제 풀 때, 시간 복잡도 계산해보기 C++ #include const int MAX_N = 1e3 + 5; int arr[MAX_N]; int A, B, ans, cnt, val; int main() { // freo.. 2021. 9. 3.
[BOJ] 백준 1157 단어 공부 출처: https://www.acmicpc.net/problem/1157 Approach 해당 문제는 alphabet[26]을 이용하면 해결할 수 있는 문제이다. ex) alphabet[0] = 3; // 'A' or 'a'가 3번 나타남. ex) alphabet[2] = 5; // 'C' or 'c'가 5번 나타남. ① 입력받는 문자열에 소문자/대문자가 모두 포함되는데 출력시에는 대문자로 하므로 대문자로 처리할 수 있도록 한다. * 아스키 코드 이용 아스키(Ascii) 코드 활용 아스키(Ascii) 코드 활용 프로그래밍 문제를 풀 때(PS)는 0 ~ 9 숫자를 문자로 표현하는 경우도 있고, 반대로 "A ~ Z" 혹은 "a ~ z" 문자를 정수형으로 이용하는 경우가 있다. 이때 이용하는 것이 아스키( z.. 2021. 8. 31.
[BOJ] 백준 1152 단어의 개수 출처: https://www.acmicpc.net/problem/1152 Approach getline(cin, str);을 통해 공백을 포함한 문자열을 입력받는다. 처음과 끝이 공백이 아닌 문자가 주어지고, 단어의 개수를 세는 것이라면 공백을 기준으로 구할 수 있다. 해당 문제에서는 공백으로 문자열을 시작할 수도 있고 끝날 수도 있기 때문에 이에 대한 처리가 필요하다. C++ #include #include using namespace std; string str; int ans; int main() { // freopen("input.txt", "r", stdin); getline(cin, str); // 공백만 주어지는 경우 제외 if (!str.empty()) { ans = 1; for (int .. 2021. 8. 27.
[BOJ] 백준 1094 막대기 출처: https://www.acmicpc.net/problem/1094 Approach 문제에서는 아래와 같이 정의하였다. 1. 가지고 있는 막대 중 길이가 가장 짧은 것을 절반으로 자른다. 2. 만약, 위에서 자른 막대의 절반 중 하나를 버리고 남아있는 막대의 길이의 합이 X보다 크거나 같다면, 위에서 자른 막대의 절반 중 하나를 버린다. 이제, 남아있는 모든 막대를 풀로 붙여서 Xcm를 만든다. 64 길이의 막대기가 주어지고 가장 짧은 막대의 길이는 점차 반으로 줄어들어 나갈 때, 32 → 16 → 8 → 4 → ... 해당 조합(?)으로 목표 길이를 구성하는 것이다. 23 = 16 + 4 + 2 + 1 인데, 아래와 같이 계산할 도 있다. #include int X, ans, len = 64; i.. 2021. 8. 26.
[BOJ] 백준 1085 직사각형에서 탈출 출처: https://www.acmicpc.net/problem/1085 Approach 직사각형 내부에서 경계선으로 가는 최단거리가 무엇일지 알면 쉽게 구현할 수 있는 문제이다. 좌표 (x, y)가 주어졌을 때 상 / 하 / 좌 / 우 움직여서 그 중 최소 거리를 구하면 된다. 상: h - y 하: y 좌: x 우: w - x C++ #include inline int min(int A, int B) { return A < B ? A : B; } int x, y, w, h, ans; int main(void) { // freopen("input.txt", "r", stdin); scanf("%d %d %d %d", &x, &y, &w, &h); ans = min(min(w - x, x), min(h -.. 2021. 8. 25.
[BOJ] 백준 1037 약수 출처: https://www.acmicpc.net/problem/1037 Approach 진짜 약수 의미를 고려하면 쉽게 구현할 수 있다. ex) A = 20 일 때, 20의 약수는 [1, 2, 4, 5, 10, 20] 이다. 이때, 진짜 약수는 [2, 4, 5, 10]인데 → (2 × 10) 혹은 (4 × 5) 여러 약수 조합 중에서 최소값과 최대값에 해당되는 원소로 곱해주면 된다. 주어지는 진짜 약수를 배열에 저장해서 정렬한 뒤, → sort() 이용 첫번째/마지막 원소가 최소값/최대값에 해당된다. 구현할 때, 진짜 약수가 1개인 경우도 주의해야 한다. ex) 9의 진짜약수는 [3] 이기 때문에 최소/최대값이 동일하다. (32비트 부호있는 정수 조건이므로 int 표현이 가능하다.) C++ #inclu.. 2021. 8. 24.
[BOJ] 백준 1032 명령 프롬프트 출처: https://www.acmicpc.net/problem/1032 Approach 문자열의 길이가 모두 동일하며 asterisk(*) 같은 특수문자가 없어서 어렵지 않게 구현할 수 있는 문제이다. N개의 문자열이 주어질 때, 첫번째 문자열을 기준으로 다른 문자열에서 특정 위치의 문자가 - 모두 같다면 → '해당 문자' - 한개라도 다른 경우 → '?' C++ #include #include using namespace std; int N, len; string pivot, tmp; int main(void) { // freopen("input.txt", "r", stdin); cin >> N >> pivot; string ans = pivot; len = pivot.length(); while (.. 2021. 8. 23.
[BOJ] 백준 1026 보물 출처: https://www.acmicpc.net/problem/1026 Approach S = (A[0] × B[0]) + ... + (A[N-1] × B[N-1]) A가 배치될 수 있는 모든 경우의 수에 대해 A[i] × B[i] 합(=S)의 최소값을 구하면 되는 문제이다. 문제 조건을 잘 이용하면 A가 재배치 될 수 있는 모든 Case를 탐색할 필요 없다. (조건) A, B 각 원소는 100보다 작은 양수 때문에 A[i] × B[i] 합이 최소가 되려면 어느 한쪽(A)은 작은 순서, 다른 한쪽(B)은 큰 순서로 곱해지면 된다. A = [ 1 , 1 , 1 , 6 , 0 ] → 오름차순 → [ 0 , 1 , 1 , 1 , 6 ] B = [ 2 , 7 , 8 , 3 , 1 ] → 내림차순 → [ 8 ,.. 2021. 8. 22.
[BOJ] 백준 12101 1, 2, 3 더하기 2 출처: https://www.acmicpc.net/problem/12101 Approach [BOJ] 9095 1, 2, 3 더하기와 다르게 정수 N에 대해 1, 2, 3 합으로 이루어진 것을 찾는 문제이다. [BOJ] 백준 9095 1, 2, 3 더하기 출처: https://www.acmicpc.net/problem/9095 Approach n이 크지 않아서 중복조합을 사용할 수 있지만 테스트 케이스 T가 주어지지 않아서 T의 크기에 따라서 결과가 다를 수 있습니다. DP 점화식을 이용한다. D zoosso.tistory.com 오름차순으로 K번째 수식을 찾아야 하는데 DFS로 1→2→3 순으로 수식을 채워가면 오름차순 구성이 가능하다. 순열과 조합을 구하는 문제와 유사하다. → N과 M (4) 순열과.. 2021. 8. 10.
반응형