Computer Sciences/Problem Solve(155)
-
[Baekjoon] 1049번: 기타줄
https://www.acmicpc.net/problem/1049 1049번: 기타줄 첫째 줄에 N과 M이 주어진다. N은 100보다 작거나 같은 자연수이고, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에는 각 브랜드의 패키지 가격과 낱개의 가격이 공백으로 구분하여 주 www.acmicpc.net 문제 설명 새로운 기타줄을 사기 위한 가능한 적은 돈을 구해야 한다. 끊어진 기타줄 개수 N개와 브랜드 M개가 주어지고, 각 브랜드에서 파는 기타줄 6개 묶음의 패키지와 낱개로 살 때 가격이 주어진다. 풀이 방법 단순한 그리디 문제이다. 먼저 오름차순 정렬을 하여 패키지에서 최솟값과 낱개의 최솟값을 구한다. 그 다음 패키지로만 샀을 때와 낱개로만 샀을 때의 가격을 비교하여 적은 값을 구한다. ..
2023.03.30 -
[Baekjoon] 2467번: 용액
https://www.acmicpc.net/problem/2467 2467번: 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하의 정수이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 오름차순으로 입력되며, 이 수들은 모두 - www.acmicpc.net 문제 설명 사이트 설명은 길지만 핵심은 오름차순으로 입력되는 수 중 두 수의 합의 절댓값이 0과 가장 가까운 두 수를 찾는 것이다. 풀이 방법 - 투 포인터 어떻게 보면 완전탐색이지만 투 포인터를 활용하면 더 효율적으로 해결할 수 있다. 예제 입력 1로 시나리오를 생각해보자. 먼저 입력 자체가 오름차순이기 때문에 맨 왼쪽은 가장 작은 수이고 맨 오른쪽은 가장 큰 수이다. 따라서 맨 왼쪽이 양..
2023.03.29 -
[Baekjoon] 1806번: 부분합
https://www.acmicpc.net/problem/1806 1806번: 부분합 첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수이다. www.acmicpc.net 문제 설명 10,000 이하 자연수로 이루어진 길이 N의 수열이 주어진다. 이 수열에서 연속된 수들의 부분합 중에 그 합이 S 이상이 되는 것 중 가장 짧은 것의 길이를 구하는 프로그램을 작성해야 한다. 만약 합이 없다면 0을 출력한다. 풀이 방법 - 투 포인터 이 문제는 투 포인터를 활용하여 해결할 수 있다. 예제 입력을 가지고 과정을 살펴보자. N = 수열의 길이이다. S = 비..
2023.03.28 -
[Baekjoon] 6198번: 옥상 정원 꾸미기
https://www.acmicpc.net/problem/6198 6198번: 옥상 정원 꾸미기 문제 도시에는 N개의 빌딩이 있다. 빌딩 관리인들은 매우 성실 하기 때문에, 다른 빌딩의 옥상 정원을 벤치마킹 하고 싶어한다. i번째 빌딩의 키가 hi이고, 모든 빌딩은 일렬로 서 있고 오른쪽으 www.acmicpc.net 문제 설명 빌딩 관리인들은 다른 빌딩의 옥상을 벤치마크하고 싶어 한다. 그래서 자기 빌딩보다 낮은 빌딩들의 옥상 정원을 보며 본인 소유의 빌딩 옥상 정원에 대한 고민을 한다. 모든 빌딩은 일렬로 서 있고 오른쪽으로만 볼 수 있다. 그리고 본인 소유 빌딩과 높이가 같거나 큰 경우엔 옥상을 볼 수 없다. 1번 관리인은 2, 3, 4 번 빌딩의 옥상을 볼 수 있다. 2번 관리인은 다른 빌딩의 옥..
2023.03.27 -
[Baekjoon] 2559번: 수열
https://www.acmicpc.net/problem/2559 2559번: 수열 첫째 줄에는 두 개의 정수 N과 K가 한 개의 공백을 사이에 두고 순서대로 주어진다. 첫 번째 정수 N은 온도를 측정한 전체 날짜의 수이다. N은 2 이상 100,000 이하이다. 두 번째 정수 K는 합을 구하기 www.acmicpc.net 문제 설명 정수 배열이 주어졌을 때, 연속적인 합이 가장 큰 값을 출력해야 한다. 연속되는 범위가 2인 경우는 다음과 같다. 이 경우 최댓값은 21이 된다. 연속되는 범위가 5인 경우는 다음과 같다. 이 경우 최댓값은 31이 된다. 풀이 방법 포인터 변수를 활용하여 해결할 수 있다. 범위가 5인 경우를 예로 들면 과정은 다음과 같다. MAX: 최댓값을 저장해놓기 위한 변수이다. sum..
2023.03.26 -
[Baekjoon] 11728번: 배열 합치기
https://www.acmicpc.net/problem/11728 11728번: 배열 합치기 첫째 줄에 배열 A의 크기 N, 배열 B의 크기 M이 주어진다. (1 ≤ N, M ≤ 1,000,000) 둘째 줄에는 배열 A의 내용이, 셋째 줄에는 배열 B의 내용이 주어진다. 배열에 들어있는 수는 절댓값이 109보다 작거 www.acmicpc.net 문제 설명 정렬된 두 배열이 주어진다. 두 배열을 합친 다음 정렬해서 출력하는 프로그램을 작성하면 된다. 풀이 방법 투 포인터 기초 문제이다. 예제 입력 3을 그림을 통해 보자. 이해를 돕기 위해 A 배열에 10을 추가했다. A: 첫 번째로 주어진 배열이다. B: 두 번째로 주어진 배열이다. ans: 출력할 정답을 저장해놓는 배열이다. 첫째 줄에 입력받은 N과 ..
2023.03.26