이코테 예제 4-1 : 상하좌우 (python)

Maru·2022년 7월 19일
0

1. 문제

  • N*N 크기의 행렬
  • (1,1) -> (N,N)

2. 나의 아이디어

1) 데이터 입력 받기
2) i와 j로 좌표 표현
3) if 문으로 i와 j를 감소/증가 시키는데, 케이스에 따라 무시하는 경우 고려

3. 나의 코드

  • 나는 단순하고 간단하게 구현했다.

N = int(input())
move = list(input().split())

i = 1
j = 1


for _ in range(len(move)):
    if move[_] == 'R':
        if j == N:
            continue
        j += 1
    elif move[_] == 'U':
        if i == 1:
            continue
        i -= 1
    elif move[_] == 'D':
        if i == N:
            continue
        i += 1
    else: 
        if j == 1:
            continue
        j -= 1

print(i, j)

2. 교재 코드

  • 굳이 이렇게 복잡하게 구현해야되나 싶긴 한데... 그래도 공부해야겠지...
n = int(input())
x, y = 1, 1
plans = list(input().split())

dx = [0,0,-1,1]
dy = [-1,1,0,0]
move_type = ['L','R','U','D']

for plan in plans:
    for i in range(len(move_type)):
        if plan == move_type[i]:
            nx = x + dx[i]
            ny = y + dy[i]
    if nx < 1 or ny <1 or nx > n or ny >n:
        continue
    x, y = nx, ny

print(x, y)
profile
함께 일하고 싶은 개발자

0개의 댓글