본문 바로가기

알고리즘

파이썬) 로봇 프로젝트 - BOJ

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

 

import sys
input = sys.stdin.readline

while True:
    try:
        x = int(input()) * 10000000
        n = int(input())
        lego = [int(input()) for _ in range(n)]
        lego.sort()
        i, j = 0, n-1
        flag = True
        while i < j:
            if lego[i] + lego[j] == x:
                print('yes %d %d' %(lego[i], lego[j]))
                flag = False
                break

            elif lego[i] + lego[j] < x:
                i += 1
            else:
                j -= 1
        if flag:
            print('danger')
    except:
        break

 

투포인터를 이용했다.

리스트를 정렬한 이후, 각각 0번째와 -1번째부터 시작한다.

만약 arr[start] + arr[end]가 x와 같다면, 그보다 더 큰 abs값은 없으니 그대로 while문을 종료한다.

'알고리즘' 카테고리의 다른 글

파이썬) 시험 감독 -BOJ  (0) 2023.11.28
파이썬) 일곱 난쟁이 - BOJ  (0) 2023.11.23
파이썬) 최대 힙 - BOJ  (0) 2023.11.20
파이썬) 회전초밥 - BOJ  (0) 2023.11.20
파이썬) 비슷한 단어 - BOJ  (0) 2023.11.19