반응형

🗓️ 문제 설명

  • 동일한 키를 여러번 누르면 입력되는 휴대폰 자판과 같은 원리로 만든 자판이 존재합니다.
  • 특정 키를 눌렀을 때, 입력되는 문자도 무작위로 배열되어 있습니다.
  • 같은 문자가 여러번 할당된 경우도 있고, 키 하나에 같은 문자가 여러번 할당된 경우도 있으며, 할당되지 않은 경우도 있습니다.
    (몇몇 문자열은 작성할 수 없을 수 있습니다.)
  • 각 키에 할당된 문자들이 담긴 keymap과 입력하려는 문자열들이 담긴 targets가 주어질 때, targets를 만들 수 있는 최소한의 횟수를 반환하세요.
  • 제한 사항
    • 1 ≤ keymap, targets의 길이 ≤ 100
    • 1 ≤ keymap, targets의 원소 길이 ≤ 100
    • keymap의 원소 길이는 서로 다를 수 있으며, 원소는 대문자로만 이루어져 있음
    • targets의 원소는 대문자로만 이루어져 있음
  • 입출력 예시
keymap targets result
['ABACD', 'BCEFD'] ['ABCD', 'AABB'] [9, 4]
['AA'] ['B'] [-1]
['AGZ', 'BSSS'] ['ASA', 'BGZ'] [4, 6]

 

💻 코드

최종 코드

1)

  • 수정 사항
    >> 6번줄 조건문에서 idx → idx + 1 로 수정
    >> 13번줄 아래의 불필요한 조건문 통합 및 삭제

2)

  • 수정사항 
    >> 2차시도에서 8번줄 아래의 조건문을 통합 및 삭제
  • 1번 풀이보다 실행시간이 오래 걸림

 

코드 풀이 1)

코드 풀이 2)

 

 

⚙️ 시행착오

1차 시도

더보기
  • 테스트 14 ~ 23번 긴 실행시간 및 테스트 실패

 

2차 시도

더보기
  • 수정사항 
    >> min_num 의 리스트 부분에서 if문 추가 
    >> min_num이 비어있을 경우, break로 반복문 탈출
  • 테스트 14 ~ 23에서 시간단축, 테스트 실패

 

3차 시도

더보기
  • 수정 사항
    >> 리스트에서 모든 값을 한번씩 비교하는 방식에서 딕셔너리를 사용하여 철자에 클릭 횟수를 key-value 형태로 추가하여 철자를 찾는 방식으로 변경
    >> targets값을 딕셔너리에서 확인
  • 테스트 케이스 14 ~ 23번 시간 대폭 감소 및 테스트 실패
반응형

+ Recent posts