[BOJ] 3649 - 로봇 프로젝트

김우경·2021년 6월 20일
0

알고리즘

목록 보기
68/69

문제 링크

3649 - 로봇 프로젝트

문제 설명

x 센치의 너비를 가진 구멍을 채우기 위해서 길이의 합이 구멍의 너비와 정확하게 일치하는 두 개의 레고 조각이 필요하다.
각 테스트 케이스마다

  • 구멍의 크기
  • 레고조각의 개수
  • 각 조각마다의 길이

가 주어질때, 구멍을 완벽하게 막을 수 있는 두 조각을 구하시오.

문제 풀이

EZ한 투포인터 문제였다,,~ 근데 테스트케이스가 몇개인지 주어지지 않기 때문에 try except를 이용해서 풀어야 한다.

각 테스트 케이스마다
1. 레고 조각의 길이를 정렬
2. 투포인터를 사용해서 구멍과 일치하는 두조각 찾기
로 풀면 된다.

import sys 

input = sys.stdin.readline

while True:
    try:
        x = int(input())* pow(10,7)
        n = int(input())
        lego = []
        for _ in range(n):
            lego.append(int(input()))

        # 1. 정렬하기
        lego.sort()

        # 2. 투포인터로 탐색
        left, right = 0, len(lego)-1
        flag = False

        while left < right :
            if lego[left] + lego[right] == x:
                flag = True
                print("yes", str(lego[left]), str(lego[right]))
                break
            elif lego[left] + lego[right] > x:
                right -= 1
            else:
                left += 1

        if flag == False:
            print("danger")
    except:
        break
profile
Hongik CE

0개의 댓글