[Python] BOJ 3649 - 로봇 프로젝트
728x90
반응형
https://www.acmicpc.net/problem/3649
# 문제푸는 것보다 입출력받는게 더 까다로웠다..
입력이 여러 테스트 케이스로 이루어져 있는데, 테스트케이스가 몇개인지 알려주지 않는다.
따라서 '그대로 출력하기'문제처럼 try, except구문을 통해 EOF가 나올때까지 입력을 계속 받아야한다.
1. while True를 통해 EOF가 입력될때까지 계속 try문을 실행해준다.
x를 입력받아서 1000만을 곱해준다. (1cm는 1000만 나노미터이기 때문)
n을 입력받고, 각 레고조각의 길이를 lego에 넣고 정렬해준다.
레고 길이는 -10억 ~ 10억이기 때문에 ans에 [-10억-1, -10억-1]을 넣어준다.
(중간에 답이 될수 없는 아무 숫자나 넣어주면 된다.)
2. 이제 투포인터를 사용해 완벽하게 구멍을 막을 수 있는 두 레고를 찾아주면 된다.
마지막까지 ans가 초기값과 같다면 두 레고조각을 찾지 못한 것이므로 "danger"출력
찾았으면 "yes" + 두 레고 조각 길이를 출력해준다.
import sys
input = sys.stdin.readline
while True:
try:
x = int(input()) * 10000000
n = int(input())
lego = []
for _ in range(n):
lego.append(int(input()))
lego.sort()
ans = [-1000000001, -1000000001]
i, j = 0, n-1
while i < j:
if lego[i] + lego[j] == x:
ans = lego[i], lego[j]
break
elif lego[i] + lego[j] > x:
j -= 1
else:
i += 1
if ans == [-1000000001, -1000000001]:
print("danger")
else:
print("yes", ans[0], ans[1])
except:
break
(solved.ac 티어: 골드 4)
728x90
반응형
'문제풀이 > BaekjoonOnlineJudge' 카테고리의 다른 글
[Python] BOJ 17140 - 이차원 배열과 연산 (0) | 2021.09.14 |
---|---|
[Python] BOJ 12100 - 2048(Easy) (0) | 2021.09.07 |
[Python] BOJ 1561 - 놀이공원 (0) | 2021.09.04 |
[Python] BOJ 21924 - 도시건설 (0) | 2021.09.02 |
[Python] BOJ 5525 - IOIOI (0) | 2021.09.01 |
TAGS.