#6 [Codewars] Directions Reduction (Python)
Task:
전체 경로에서 현재 경로와 다음 경로가 서로 정반대이면 경로에서 현재와 다음 경로를 제거해나가는 문제.
예를 들어 전체 경로에서 현재 경로가 NORTH인데 다음 경로가 SOUTH이면 현재 경로인 NORTH와 다음 경로인 SOUTH를 전체 경로에서 제외한다. 이 과정을 계속해서 수행해서 인접한 경로가 서로 정반대의 경로가 아닌 것만 남도록 하는 문제. (난 분명 한국말을 하고 있는데....무슨 말이지)
경로는 NORTH, SOUTH, EAST, WEST 네 가지가 있다.
아래는 예시. 왼쪽이 전체 경로, 오른쪽이 경로 수정 과정을 거친 최종 경로.
['EAST','NORTH', 'NORTH', 'SOUTH', 'SOUTH','WEST','WEST] → ['WEST']
즉... 괄호 문제인거지. EAST, WEST를 각각 [ , ] 에 대응시키고 NORTH, SOUTH를 ( , ) 에 대응시킨다고 하면
[ ( ( ) ) ] ] → ]
이렇게 되는 셈. 짝이 맞는 괄호들을 제거하는 문제.
My Solution:
아쉬운 점이 있다면, dictionary를 함수 안에 선언한 것. 함수를 콜 할때마다 생성되잖아!! 밖에다 선언할 걸.
그리고 다른 분의 풀이를 보고 깨달은 건데 if len(stack) == 0 이렇게 말고
if stack and stack[len(stack)-1] == opposite[i] 이렇게 짰으면 if 문을 덜 중첩시킬 수 있었겠구나.
배운 점:
list에 원소가 아무것도 없으면 boolean으로 false 값이라는 것.