구현/시각

sea·2022년 10월 8일
0

알고리즘

목록 보기
1/14

문제 조건

  • 여행가 A는 NxN 크기의 정사각형 공간 위에 서있다. 이 공간은 1x1 크기의 정사각형으로 나누어져있다.
  • 가장 왼쪽 위 좌표는 (1, 1) 이며, 가장 오른쪽 아래 좌표는 (N,N) 에 해당한다.
  • 여행가 A는 상하좌우 방향으로 이동할 수 있고, 시작 좌표는 항상 (1, 1)이다.
  • 여행가 A가 NxN 크기의 정사각형 공간을 벗어나는 움직임은 무시된다.
  • 계획서가 주어졌을 때 여행가 A가 최종적으로 도착할 지점의 좌표를 출력하는 프로그램을 작성하라.

계획서
L: 왼쪽으로 한 칸 이동
R: 오른쪽으로 한 칸 이동
U: 위쪽으로 한 칸 이동
D: 아래로 한 칸 이동

NOTE

NxN 크기 입력
시작 좌표 x = 1, y = 1
주변 노드 탐색: (x + kx , y + ky)상하좌우 좌표 설정해서 for 문으로 인덱스로 불러오기
범위를 벗어나면 안되니까 (x + kx) > n or (y + ky) > n or (x + kx) < 0 1 or (y + ky) < 0 1 인 경우 예외처리
주변 노드 True 일 때 마다 result = 0 에 += 1 해주기? X

n = int(input())
x, y = 1, 1 # (1, 1) 시작점 선언
plans = input().split() #계획서 입력 # R R R U D D

# 탐색 방향 설정
dx = [0, 0, -1, 1]
dy = [-1, 1, 0, 0]
move_types = ['L', 'R', 'U', 'D'] # index 맞춰주기

# 1, 1부터 이동 계획서에 맞게 탐색

for plan in plans:
    for i in range(len(move_types)):
        if plan == move_types[i]:
            nx = x + dx[i]
            ny = y + dy[i] # 얘까지는 plan 에 있는 각 원소랑 탐색 방향으로 나아가는 좌표 방향을 추가해주는 것 # 그러니까 위치를 옮기는 코드

    # NxN 공간을 벗어나는 움직임의 경우 예외처리
    if nx > n or ny > n or nx < 1 or ny < 1: # 0이 아닌 1보다 작을 경우를 말하는 이유는 시작 노드가 (1, 1) 이기 때문? ##
        continue

    x, y = nx, ny

print(x, y) # 최종적으로 도착할 지점의 좌표 (X, Y) 를 공백으루 구분하여 출력한다.
 

구현 파트가 bfsdfs 앞에 있던 이유가 있었다
먼저 볼걸 괜히 헷갈려했다
그리디 구현 bfsdfs 만 우선 빡세게 준비하장

profile
달려가는중

0개의 댓글