[7/16] 상하좌우

구현 (110)

내 코드

n = int(input())
arr = list(input().split())
location = [1, 1]

# 입력값에 따라 이동
for move in arr:
    if (move == 'L'):
        location[1] -= 1
    elif (move == 'R'):
        location[1] += 1
    elif (move == 'U'):
        location[0] -= 1
    elif (move == 'D'):
        location[0] += 1
        
    # 밖으로 나간 위치 교정
    if (location[0] < 1):
        location[0] += 1
    elif (location[1] < 1):
        location[1] += 1
    
#마지막 위치 출력
print(*location)

로직

  1. 입력값을 arr 리스트로 받는다.
  2. location을 [1, 1]로 설정한다.
  3. arr 만큼 for문을 돌려서 LRUD에 따라 1씩 이동시켜준다. (if문을 이용하여, 좌표 밖으로 나갈 경우 다시 안으로 넣어준다.)
  4. 마지막 위치를 출력한다.

효율적인 코드

n = int(input())
arr = list(input().split())
x, y = 1, 1

# 입력값에 따라 이동
for move in arr:
    if (move == 'L'):
        y -= 1
    elif (move == 'R'):
        y += 1
    elif (move == 'U'):
        x -= 1
    elif (move == 'D'):
        x += 1
        
    # 밖으로 나간 위치 교정
    if (x < 1):
        x += 1
    elif (x > n):
        x -= 1
    elif (y < 1):
        y += 1
    elif (y > n):
        y -= 1
    
#마지막 위치 출력
print(x, y)

피드백

  • 2차원 배열은 함수와 x, y가 거꾸로 되어있다. 다음에 다른 문제를 구현할때 주의하자.
  • 내가 짠 코드는 왼쪽과 위쪽을 넘어가는 것은 고려했지만, 오른쪽과 아래를 넘어가는 것은 고려하지 않았다.
  • split() 함수는 리스트로 만들어 주는 함수이므로, list를 중복으로 사용하지 않아도 된다. (int형은 써줘야한다.)
  • 좌표도 2개의 변수로 처리하는 것이 공간 복잡도에 도움이 된다.

좋은 웹페이지 즐겨찾기