# 로봇 프로젝트
while True:
try:
x = int(input())*10000000
n = int(input())
arr = [int(input()) for _ in range(n)]
arr.sort()
answer = []
left, right = 0, n-1
while left < right:
if arr[left]+arr[right] < x:
left += 1
elif arr[left]+arr[right] > x:
right -= 1
else:
answer = [arr[left], arr[right]]
break
if answer:
print('yes {0} {1}'.format(answer[0], answer[1]))
else:
print('danger')
except:
break
투포인터
1. while문 안에 try-except 구조를 넣는다.
- 테스트 케이스가 존재 하지만 개수는 알려주지 않음
- 무한반복으로 입력을 받다가 EOF일 경우 break 하도록
2. x, n, arr을 입력받고, arr 정렬
3. 투포인터
- 합이 x보다 작으면 left 증가
- 합이 x보다 크면 right 감소
- 합이 x이면 answer에 넣고 break (문제에서 '답이 여러 개일 때 차가 가장 큰 값'이라고 명시)
4. answer가 있으면 'yes answer[0] answer[1]' 출력 없으면 'danger' 출력
'Algorithm > BOJ' 카테고리의 다른 글
[백준] 16434번 - 드래곤 앤 던전 (파이썬) (1) | 2022.03.28 |
---|---|
[백준] 2022번 - 사다리 (파이썬) (0) | 2022.03.27 |
[백준] 3079번 - 입국심사 (파이썬) (0) | 2022.03.25 |
[백준] 2343번 - 기타 레슨 (파이썬) (0) | 2022.03.25 |
[백준] 2467번 - 용액 (파이썬) (0) | 2022.03.25 |