728x90
반응형
https://www.acmicpc.net/problem/3649
문제 해결
- 전형적인 투포인터 문제
- n==0일 때와 n==1일 때 불가능하므로 danger 출력하고 다음 테스트케이스 출력
- n>=2일 때부터 올림차순으로 정렬된 리스트에서 start =0 end = n-1을 잡고 두 원소의 합이 x가 될 때까지 숫자를 조절하여 찾는다.
- start>=end가 되면 찾을 수 없는 것이므로 danger 출력하고 다음 테스트 케이스 출력
CODE
while True:
try:
L = []
x = int(input())*10000000
n = int(input())
if n==0:
print("danger")
continue
elif n==1:
input()
print('danger')
continue
for _ in range(n):
L.append(int(input()))
L.sort()
start = 0
end = n-1
while True:
if L[start] + L[end] == x:
print('yes', L[start], L[end])
break
elif L[start] + L[end] > x:
end -= 1
elif L[start] + L[end]<x:
start += 1
if start >= end:
print('danger')
break
except EOFError:
break
728x90
반응형
'알고리즘 > [python] 백준 BOJ' 카테고리의 다른 글
[python] 백준 2295 세 수의 합 (1) | 2023.04.23 |
---|---|
[python] 백준 17609 회문 (0) | 2023.04.23 |
[python] 백준 2589 보물섬 (1) | 2023.04.22 |
[python] 백준 2621 카드게임 (0) | 2023.04.21 |
[python] 백준 1799 비숍 (0) | 2023.04.20 |
댓글