반응형
https://www.acmicpc.net/problem/3649
3649번: 로봇 프로젝트
각 테스트 케이스마다 한 줄에 하나씩, 구멍을 완벽하게 막을 수 있는 두 조각이 없다면 'danger'를 출력한다. 막을 수 있는 경우에는 'yes ℓ1 ℓ2'를 출력한다. (ℓ1 ≤ ℓ2) 정답이 여러 개인 경우에
www.acmicpc.net
[ 문제풀이 ]
1. arr 배열에 수들을 입력받고, 오름차순으로 정렬합니다.
2. while문을 통해 l < r 일 때 arr[ l ] + arr[ r ] 의 값이 x와 같다면 출력하고, x보다 작다면 l++, x보다 크다면 r--를 통해 x와 같을 때까지 반복해 줍니다.
3. x와 같은 경우가 없다면 danger를 출력합니다.
[ 소스코드 ]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | #include<iostream> #include<algorithm> using namespace std; int x, n; int arr[1000000]; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); while (cin >> x) { x *= 10000000; cin >> n; for (int i = 0; i < n; i++) { cin >> arr[i]; } sort(arr, arr + n); int l = 0; int r = n - 1; bool flag = false; while (l < r) { if (arr[l] + arr[r] == x) { cout << "yes " << arr[l] << ' ' << arr[r]; flag = true; break; } else if (arr[l] + arr[r] < x) { l++; } else if (arr[l] + arr[r] > x) { r--; } } if (flag == false) { cout << "danger"; } cout << '\n'; } } | cs |
반응형
'백준' 카테고리의 다른 글
[ 백준 ] 1963번 - 소수 경로 (C++) (0) | 2023.06.26 |
---|---|
[ 백준 ] 5052번 - 전화번호 목록 (C++) (0) | 2023.06.25 |
[ 백준 ] 14940번 - 쉬운 최단거리 (C++) (0) | 2023.06.22 |
[ 백준 ] 17071번 - 숨바꼭질 5 (C++) (0) | 2023.06.21 |
[ 백준 ] 2830번 - 행성 X3 (C++) (0) | 2023.06.20 |