본문 바로가기
알고리즘/[python] 백준 BOJ

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

by Alan_Kim 2023. 4. 22.
728x90
반응형

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

 

3649번: 로봇 프로젝트

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

www.acmicpc.net

 

문제 해결

  • 전형적인 투포인터 문제
  • 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

댓글