코드 복사/붙여넣기 하는 당신이 아름답습니다.

8094 : Canoes

풀이

투포인터(?) 같은 느낌으로 그리디하게 풀어주자.

각 카누들의 용량(?)을 정렬해주자.

정렬 후 배열의 양 끝에는 min, max 값이 들어있으므로

양 사이드에서 가운대로 포인터를 옮기며 매칭할 수 있다면 매칭해주자.

코드

#include <cstdio>
#include <algorithm>
int n, w, i, j, a[30003];
int main() {
    scanf("%d %d", &w, &n);
    for (; j<n; j++) scanf("%d", &a[j]);
    std::sort(a, a+n);
    for (j = n-1; j && i<j; j--) if (a[i]+a[j]<=w) i++;
    printf("%d", n-i);
    return 0;
}

아무말

백준, 백준 온라인 저지, BOJ, Baekjoon Online Judge, C, C++, 씨, 씨쁠쁠, JAVA, algorithm, 자바, 알고리즘, 자료구조, 문제, 문제 풀이, 풀이

wookje.kwon's profile image

wookje.kwon

2018-09-27 13:29

Read more posts by this author