[파이썬] 백준 3089 : 네잎 클로버를 찾아서 (골드2)
3089번: 네잎 클로버를 찾아서
숭이는 지구에 놀러온 외계인에게 조정당하고 있다. 외계인은 숭이를 이용해서 네잎 클로버를 찾은 뒤, 숭이를 그 자리에 놔두고 다시 자기들의 행성으로 떠나려고 한다. 숭이가 있는 곳은 2차
www.acmicpc.net
문제
풀이
방향성 생각
- 명령이 주어진 방향에는 항상 네잎클로버가 존재한다.
- UD 입력이 주어지면 x좌표를 고정시키고 y좌표에 대해서 이분탐색을 진행한다.
- LR 입력이 주어지면 y좌표를 고정시키고 x좌표에 대해서 이분탐색을 진행한다.
- 숫자가 커지는 방향으로 갈 때는 bisect_right을 써서 이동하려는 인덱스 반환받아서 업데이트.
- 숫자가 작아지려는 방향으로 갈 때는 bisect_left를 써서 인덱스에 -1 해주고 업데이트.
전체코드
from bisect import bisect_left as bl, bisect_right as br
from collections import defaultdict as dd
import sys
input = lambda : sys.stdin.readline().rstrip()
n,m = map(int,input().split())
X,Y = dd(list),dd(list)
for _ in range(n):
x,y = map(int,input().split())
X[y].append(x)
Y[x].append(y)
cmds = input()
for x in X:
X[x].sort()
for y in Y:
Y[y].sort()
x,y = 0,0
for cmd in cmds:
if cmd == 'L': x = X[y][bl(X[y],x)-1]
elif cmd == 'R': x = X[y][br(X[y],x)]
elif cmd == 'U': y = Y[x][br(Y[x],y)]
elif cmd == 'D': y = Y[x][bl(Y[x],y)-1]
print(x,y)
코멘트
모듈쓰니까 간결하고 좋음
'Algorithm > etc' 카테고리의 다른 글
[파이썬] 프로그래머스 : 여행경로 (Lv.3) (0) | 2024.03.25 |
---|---|
[파이썬] 백준 2632 : 피자판매 : (골드2) (0) | 2024.02.25 |
[파이썬] 1484 : 다이어트 (골드5) (0) | 2024.01.16 |
[파이썬] 백준 1035 : 조각 움직이기 (골드1) (0) | 2023.12.16 |
[파이썬] 백준 22945 : 팀 빌딩 (골드4) (0) | 2023.12.12 |
[파이썬] 프로그래머스 : 모음사전 (Lv.2) (0) | 2023.11.30 |
[파이썬] 프로그래머스 : 타겟 넘버 (Lv.2) (0) | 2023.11.10 |
댓글