https://school.programmers.co.kr/learn/courses/30/lessons/49994
나의 풀이
def solution(dirs):
j={'R':0, 'L':0, 'U':0, 'D':0}
location=[]
count=0
for i in dirs:
j[i]+=1
if (j['R']-j['L'], j['U']-j['D']) not in location and (abs(j['R']-j['L'])<6 and abs(j['U']-j['D'])<6):
location.append((j['R']-j['L'], j['U']-j['D']))
else:
count+=1
return len(location)+1
모범 답안
def solution(dirs):
s = set()
d = {'U': (0,1), 'D': (0, -1), 'R': (1, 0), 'L': (-1, 0)}
x, y = 0, 0
for i in dirs:
nx, ny = x + d[i][0], y + d[i][1]
if -5 <= nx <= 5 and -5 <= ny <= 5:
s.add((x,y,nx,ny))
s.add((nx,ny,x,y))
x, y = nx, ny
return len(s)//2
나는 중복되는 좌표를 걸러내기 위해 리스트에 값을 넣어 조건문으로 처리했는데 이 문제에서도 set()을 이용하여 처리할 수 있었다. 또한 나의 코드로는 좌표점만 비교하여 중복되는 경로가 처리되어서 실패하였다. 좌표점이 아닌 시작점과 끝점을 같이 확인하여 이미 방문한 경로인지 확인하여야 하고 위 답안에서처럼 시작점과 끝점이 바뀌어도 같은 길을 나타낸다는 점을 고려하여 최종적으로 2로 나누어야 한다.
참조
https://www.ai-bio.info/programmers/49994
[프로그래머스] 방문 길이 Python 파이썬 해설 (Level 2) - 이도훈
프로그래머스 Level 2 문제 [방문 길이]의 풀이를 정리합니다.
www.ai-bio.info
'코딩테스트 > programmers (python)' 카테고리의 다른 글
Programmers / DFS / BFS 문제 모음 (0) | 2024.03.08 |
---|---|
Programmers / 2단계 / 주차 요금 계산 / python / 2022 KAKAO BLIND RECRUITMENT (0) | 2024.03.06 |
Programmers / 2단계 / [3차] n진수 게임 / python / 2018 KAKAO BLIND RECRUITMENT (1) | 2024.03.05 |
Programmers / 2단계 / 다리를 지나는 트럭 / python (0) | 2024.02.24 |
Programmers / 2단계 / [3차] 압축 / python / 2018 KAKAO BLIND RECRUITMENT (0) | 2024.02.23 |