[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)
로직
- 입력값을 arr 리스트로 받는다.
- location을 [1, 1]로 설정한다.
- arr 만큼 for문을 돌려서 LRUD에 따라 1씩 이동시켜준다. (if문을 이용하여, 좌표 밖으로 나갈 경우 다시 안으로 넣어준다.)
- 마지막 위치를 출력한다.
효율적인 코드
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개의 변수로 처리하는 것이 공간 복잡도에 도움이 된다.
Author And Source
이 문제에 관하여([7/16] 상하좌우), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kj313903/716-상하좌우저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)