본문 바로가기

알고리즘풀이/프로그래머스

외계어 사전

👉 사용 언어 : PYTHON3

 

✅ Solution

def solution(spell, dic):
    answer = 2
    spell = sorted(spell)
    for i in dic:
        if spell == sorted(i):
            answer -= 1
    return answer

 

👉 아이디어

  • spell에 있는 문자를 모두 한 번씩 사용하여 만들 수 있는 문자열을 찾는 문제
  • 따라서, spell 문자열을 정렬시켜놓고 이를 dic 각각의 원소를 정렬한 값과 비교한다.
  • 동일한 값이 있으면 1을, 동일한 값이 없으면 2를 반환한다.
  • 시간 복잡도 줄이기 위해 spell은 반복문 전에 정렬하고 spell 변수에 재할당하였다.
    • 병합 정렬을 기반, 병합 정렬은 일반적으로 퀵 정렬보다 느리지만 최악의 경우에도 시간 복잡도 O(NlogN)을 보장한다.

 다른 사람 풀이 참고

def solution(spell, dic):
    for d in dic:
        if sorted(d) == sorted(spell):
            return 1
    return 2

 

👉 깨달은 것 / 알게된 것

  • 같은 방식으로 풀었으나,
    • spell 정렬을 반복문 밖에서 했느냐 안에서 했느냐 차이가 있고
    • answer 변수 없이 조건문 안에서는 1을 리턴하고 그 밖의 경우에는 2를 리턴하도록 코드를 작성하였다.

'알고리즘풀이 > 프로그래머스' 카테고리의 다른 글

[1/28] Kakao Internship 기출문제 풀이  (0) 2024.01.26
합성수 찾기  (0) 2024.01.24
약수의 개수와 덧셈  (0) 2024.01.20
바탕화면 정리  (0) 2024.01.19
삼각형의 완성조건(2)  (0) 2024.01.18