-
백준 2230 수 고르기 | C++[백준 알고리즘]/[C++] 2021. 3. 24. 10:41728x90반응형
이번 포스팅은 백준 2230번 수 고르기입니다.
아래 url를 클릭하시면 백준 사이트에서 문제를 볼 수 있습니다.
기본 알고리즘
투 포인터
셸 정렬 사용함
벡터와 sort 함수를 사용하면 코드의 길이와 실행 시간을 단축할 수 있다.
전체 코드
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263//백준2230 수 고르기#include <iostream>using namespace std;void sortGapInsertion(int list[], int first, int last, int gap) {int i, j, key;for (i = first + gap; i <= last; i += gap) {key = list[i];for (j = i - gap; j >= first && list[j] < key; j -= gap) {list[j + gap] = list[j];}list[j + gap] = key;}}void shellSort(int list[], int n) {int gap;for (gap = n / 2; gap > 0; gap /= 2) {if (gap % 2 == 0) {gap++;}for (int i = 0; i < gap; i++) {sortGapInsertion(list, i, n - 1, gap);}}}int main() {int N, M;const int SIZE = 100000;int list[SIZE];cin >> N >> M;for (int i = 0; i < N; i++) {cin >> list[i];}/*셸 정렬 - 내림차순으로 구현*/shellSort(list, N);/*투 포인터*/int left = 0;int right = 0;int ans = 2000000000;while (right<N&&left<N) {int temp = list[left] - list[right];if (temp > M) {ans = min(ans, temp);left++;}else if (temp < M) {right++;}else if (temp == M) {ans = min(ans, temp);right++;}}cout << ans;return 0;}cs 728x90반응형'[백준 알고리즘] > [C++]' 카테고리의 다른 글
백준 1516 게임 개발 | C++ (0) 2021.03.26 백준 2437 저울 | C++ (0) 2021.03.25 백준 14567 선수과목 (Prerequisite) | C++ (0) 2021.03.23 백준 2109 순회강연 | C++ (0) 2021.03.18 백준 1744 수 묶기 | C++ (0) 2021.03.17