STUDY/Algorithm

[백준] 3649 로봇 프로젝트 python

sinawi95 2022. 5. 23. 20:20
728x90

https://www.acmicpc.net/problem/3649

 

3649번: 로봇 프로젝트

각 테스트 케이스마다 한 줄에 하나씩, 구멍을 완벽하게 막을 수 있는 두 조각이 없다면 'danger'를 출력한다. 막을 수 있는 경우에는 'yes ℓ1 ℓ2'를 출력한다. (ℓ1 ≤ ℓ2) 정답이 여러 개인 경우에

www.acmicpc.net

투 포인터 문제이고 어렵진 않았다.

다만, try except를 사용해서 에러를 캐치해야하는게 별로 좋지 않은 문제인듯 하다.

import sys; input = sys.stdin.readline

def main():
    while(1):
        try:
            # 0 input
            x = int(input()) * 10**7
            n = int(input())
            nums = [int(input()) for _ in range(n)]
            # 1 sort
            nums.sort()
            # 2 two pointer
            i = 0
            j = n - 1
            flag = False
            while (i < j):
                if nums[i] + nums[j] == x:
                    flag = True
                    break
                elif nums[i] + nums[j] < x:
                    i+=1
                else:
                    j-=1;
            # 3 output
            if flag:
                print("yes", nums[i], nums[j])
            else:
                print("danger")
        except:
            break
    return 

if __name__ == "__main__":
    main()