[6/2] 스킬트리

이경준·2021년 6월 2일
0

코테

목록 보기
28/140
post-custom-banner

문제

내 코드

def solution(skill, st):
    answer = []
    skill = list(skill)
    for i in range(len(st)):
        st[i] = list(st[i])

        temp = []
        for j in st[i]:
            if (j in skill):
                temp.append(j)
        answer.append(temp)

    cnt = len(answer)
    for i in answer:

        temp_skill = skill[:]
        for j in i:
            if (j == temp_skill[0]):
                del temp_skill[0]
            else:
                cnt -= 1
                break
    return cnt

풀이

  1. skill 문자열을 하나하나 리스트로 분리
  2. for문
    a) skill_tree에 있는 문자열을 하나하나 리스트로 분리
    b) skill 안에 있는 skill_tree의 문자 모음 리스트를 answer에 추가한다.
  3. for문
    if문
    a) answer와 skill[0]을 비교해서 같으면 skill[0]을 삭제한다.
    b) 다르면 cnt를 1 감소시킨다.
  4. cnt를 리턴한다.

효율적인 코드

def solution(skill, skill_tree):
    answer = 0
    for i in st:
        basket = ''

        for z in i:
            if z in skill:
                basket = basket + z
        if (basket == skill[0: len(basket)] ):
            answer += 1
    return answer

피드백

  • 나는 중복되지 않는 문자를 제거하고, skill과 skill_tree를 하나하나 비교해야 해서 2중 for문을 두번 썼다.
  • 하지만 위 코드에서는 동일한 문자를 basket에 담고 basket과 skill을 비교해서 2중 for문을 1번만 썼다. 길이가 다름을 고려해 basket의 길이까지만 비교했다.
profile
The Show Must Go On
post-custom-banner

0개의 댓글