본문 바로가기

Algorithm/BOJ

[프로그래머스/python] 외계어 사전

문제 해결 방법은 크게 2가지로 생각이 됐다

 

<방법1>
spell의 dict를 만들어서 dic와 비교하기
-> bad : 공간 낭비 발생
-> good : 알고리즘이 단순하다

<방법2>
dict의 원소 하나하나를 가지고 spell에 있는 걸로 만들 수 있는지 검사하기
spell 에 담긴 알파벳을 한번씩만 모두 사용한 단어를 모은 spell_dict 만들기
-> good : 연산횟수를 줄일 수 있다(필요한 연산만 가능 & dic의 앞쪽에 원하는 값이 있으면 프로그램 종료 가능)
-> bad : 코드가 조금 복잡해보인다

나는 방법2를 택했다.

 

def solution(spell, dic):
    answer = 2
    # spell이 사용된 횟수 확인용 리스트
    check = []
    char = ''
    
    # 연산 횟수 줄이기 1) dic의 문자열 중 문자 개수가 spell 문자 개수랑 갖지 않으면 패스
    for i in range(len(dic)):
        if len(dic[i]) == len(spell):
            # dic에 있는 문자열의 문자 하나하나를 검사
            for j in range(len(dic[i])):
                char = dic[i][j]
                print(char)
                # 문자가 spell에 없으면 패스
                if char in spell:
                    check.append(spell.index(char))
                    print(check)
                else:
                    break
                    
            check.sort() 
            if check == [i for i in range(0,len(spell))]:
                return 1
            else:
                check = []
        else:
            continue
          

    return 2

+2 받았다.

 

너무 절차지향적인 코드 같다.

python 기본 내장 함수를 바로바로 떠올려서 사용하기가 능수능란하지 않다.