본문 바로가기

프로그래머스 퀴즈(Python)/level 1

23.04.14 파이썬 코딩 퀴즈#219 대충 만든 자판 (프로그래머스 스쿨)

이번 문제는 대충 만든 자판 문제이다.

이 대충 만든 휴대폰 자판의 키의 개수가 1개 부터 최대 100개까지 존재하며, 특정 키를 눌렀을 때 입력되는 문자들도 무작위로 배치되어 있다. 또 한 같은 문자가 자판 전체에 여러 번 할당된 경우도 있으며, 키 하나에 같은 문자가 여러 존재할 수도 있다. 심지어 아예 할당되지 않은 문자열도 있다.

만약 목표 문자열을 작성할 수 없을 때는 -1을 저장한다.

특별한 제한 사항은 없다. keymap 의 길디ㅗ 100 정도이고 원소의 길이도 길어야 100 이며, target 도 동일하게 100, 100 이다.

입출력 예에서 알 수 있는점은 keymap으로 해당 targets을 만들 수 없을 때에는 -1을 배열에 넣어 반환해야 한다는 점이다.

만약 keymap의 요소가 2개 이고 그 중 [0]만 만들 수 있다면, [최소값, -1] 이런 식으로 결과를 만들어야 한다.

레벨 1 문제이기에 굉장히 많은 풀이가 가능하다.

내가 선택한 풀이는 먼저 key_map 이라는 dict 를 생성하여, 각 키를 누르는 최소값을 저장해 준다.

이제 targets을 돌면서 각 단어들을 알파벳으로 쪼개서 확인하고, 만약 해당 알파벳 't' 가 key_map 에 존재하지 않을때는 cnt 값을 -1 로 돌리고 과감하게 break로 해당 단어의 탐색을 종료해 주면 된다.