문제 (https://www.acmicpc.net/problem/1253)
처음엔 검사하는 숫자보다 작은 수들로만 검사하는 숫자가 만들어진다고 생각했다. 하지만 음수도 가능하기 때문에 -4 -2 -2 같은 케이스가 존재한다. (-4가 좋은 수)
또한 자기 자신은 서로 다른 두 수에 해당하면 안 되므로 예외 처리를 해주어야 한다. 나는 그냥 for문을 돌 때마다 원본 벡터를 복사한 벡터에 해당 숫자를 erase로 제거하여 사용했다.
- n이 2보다 작거나 같으면 다른 수 두 개의 합으로 나타낼 수 없으므로 0을 출력하고 종료한다.
- 입력받은 수들을 오름차순 정렬한다.
- 복사본 벡터에서 i번째 숫자를 제거한다. (erease 함수)
- 투 포인터로 i번째 숫자가 좋은 수가 될 수 있는지 확인한다.
[소스코드]
'ALGORITHM > BOJ' 카테고리의 다른 글
[BOJ] 16398번 행성 연결 (C++) (0) | 2022.03.03 |
---|---|
[BOJ] 14621번 나만 안되는 연애 (C++) (0) | 2022.03.03 |
[BOJ] 3078번 좋은 친구 (C++) (0) | 2022.01.19 |
[BOJ] 2096번 내려가기 (C++) (0) | 2022.01.19 |
[BOJ] 2211번 네트워크 복구 (C++) (0) | 2022.01.17 |