본문 바로가기

알고리즘

프로그래머스 - [3차] 압축(Python)

반응형

문제 설명

알고리즘 고민

알파벳을 키로 두고 인덱스를 값으로 하는 딕셔너리를 우선 만든다. 이 경우에 하나의 알파벳은 이미 딕셔너리에 존재하므로 길이가 2인 문자를 확인하고 만약 딕셔너리에 없으면 해당 문자열을 키로, 마지막 인덱스를 값으로 하여 딕셔너리에 추가하고 시작 인덱스를 옮긴다. 만약 해당 문자열이 딕셔너리에 있으면 확인하는 인덱스 값을 하나 늘려서 확인한다. 이 경우에 마지막 인덱스가 남는 경우, 혹은 끝까지 확인했을 때 해당 문자열이 이미 존재하는 경우에 확인을 못한다. 따라서 이를 처리할 수 있는 조건문을 선언하여 처리하였다. 여기까지 풀고 채점했는데 9번 케이스를 통과하지 못했다. 좀 더 고민해봤는데 만약 msg의 길이가 1일 경우에는 이 while문을 애초에 돌지 않는 것을 확인하였다. 그래서 조건문을 추가하여 예외 처리를 하였다. 좀 깔끔하게 풀진 못해도 시간 내에 풀었다는 거에 의의를 두었다.. 다른 사람의 풀이를 봤을 때 while문 안에 for문을 두어서 좀 더 깔끔하게 해결하는 풀이도 있었다. 해당 풀이도 같이 첨부하겠다.

코드

 

다른 사람 풀이

 

 

반응형