알고리즘 문제 풀이: 파이썬/Programmers

[프로그래머스] 키패드 누르기

hueco 2022. 10. 28.

 

📌 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/67256

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

내 풀이(Success) :

 

🧐 Review:

 키패드의 가운데 열인 [2, 5, 8, 0]을 누르는 경우를 어떻게 구현하느냐가 중요한 문제였다. 거리를 계산하기 위해서 어떻게 해야 될지 고민을 잠깐 해봤는데, 2차원 배열의 좌표 쌍(x, y)을 이용하면 쉽게 구현할 수 있을 것 같다는 생각이 들었다. 하지만 2차원 배열에서 숫자에 해당하는 좌표 쌍을 찾기까지 배열을 탐색하는 과정이 필요할 것 같았다. 입력값 numbers의 크기가 최대 1000으로 이중 for 문까지는 시간 복잡도에서 안정권이지만 3중 for문의 경우는 시간 초과가 발생할 수 있을 것 같다는 생각이 들었다. 그래서 키패드를 배열로 구현하는 것이 아닌 딕셔너리를 이용해서 구현해야겠다는 생각에 위와 같이 코드를 작성했고, 그 아이디어를 바탕으로 나머지 코드를 구현하는 것은 어렵지 않았다.

 

 문제를 풀고 나서 바로 프로그래머스에서 제공하는 '다른 사람의 풀이'를 확인해봤는데, 가장 많은 좋아요를 받은 풀이가 내 풀이와 정말 많이 비슷했다. 변수명과 변수의 개수 빼고는 완전히 같은 코드라고 말할 수 있을 것 같다. 이 문제를 처음 본 것이 언제인지도 기억이 나질 않는데 매번 어떻게 풀어야 할지 감이 오질 않았지만, 다른 사람의 코드를 확인하지 않고 그냥 포기했었던 문제였다. 그런데 오늘 내가 떠올린 아이디어로 코드를 구현해보니 의외로 쉽게 풀리는 것을 보고 그동안 문제 경험이 나를 조금씩이라도 성장시켰다는 생각이 들었다. 속도는 조금 느릴지 모르지만 올바른 방향으로 나아가고 있다는 생각이 든다. 앞으로 더 열심히 해야겠다.

 
 
 

댓글