반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 카카오
- 배열
- 자바스크립트
- dp
- C++
- 동적계획법
- 웹프로그래밍
- sql
- python
- 프로그래밍
- 리액트
- Medium
- Level3
- Level2
- LeetCode
- Level1
- CS
- web
- react
- 고득점Kit
- VUE
- 코테연습
- javascript
- 백준
- OS
- 파이썬
- Doitvue.js입문
- typescript
- 프로그래머스
- 리트코드
Archives
- Today
- Total
[프로그래머스] 방문 길이 - python 본문
반응형
방문 길이
문제 설명
게임 캐릭터를 4가지 명령어를 통해 움직이려 합니다. 명령어는 다음과 같습니다.
- U: 위쪽으로 한 칸 가기
- D: 아래쪽으로 한 칸 가기
- R: 오른쪽으로 한 칸 가기
- L: 왼쪽으로 한 칸 가기
명령어가 매개변수 dirs로 주어질 때, 게임 캐릭터가 처음 걸어본 길의 길이를 구하여 return 하는 solution 함수를 완성해 주세요
제한 사항
- dirs는 string형으로 주어지며, 'U', 'D', 'R', 'L' 이외에 문자는 주어지지 않습니다.
- dirs의 길이는 500 이하의 자연수입니다.
풀이
방문 길이를 구할 때 출발점과 도착점이 반대로 되어 있어도 같은 경로로 계산해야한다.
예를 들어 (0, 0) -> (1, 0) 다음에 (1, 0) -> (0, 0)로 움직였다면 이미 한번 간 길을 다시 간 것이기 때문에 방문 길이는 1이다.
각 좌표를 정렬하여 저장하면 항상 최소 값이 왼쪽으로 오도록 저장되기 때문에 중복을 신경쓰지 않아도 된다.
단 출발점의 x,y 와 다음 지점의 x,y는 구별되어야하기 때문에 각각 튜플로 묶어준다.
def solution(dirs):
answer = 0
command_dict = {
"U": (-1, 0),
"D": (1, 0),
"R": (0, 1),
"L": (0, -1),
}
check = set()
position = (0, 0)
for d in dirs:
direction = command_dict[d]
next_position = tuple(map(sum, zip(position, direction)))
nx, ny = next_position
if -5 <= nx <= 5 and -5 <= ny <= 5:
check.add(tuple(sorted([position, next_position])))
position = next_position
return len(check)
반응형
'코테 문제 풀이' 카테고리의 다른 글
[프로그래머스] N- Queen - python (0) | 2022.03.24 |
---|---|
[프로그래머스] 짝지어 제거하기 - python (0) | 2022.03.24 |
[프로그래머스] 자물쇠와 열쇠 - python (0) | 2022.03.23 |
[프로그래머스] 문자열 압축 - python (0) | 2022.03.23 |
[백준] 3190 - 뱀 (0) | 2021.02.26 |
Comments