[프로그래머스] k의 개수

융쬬·2024년 5월 15일

Algorithm

목록 보기
19/24

문제 바로가기

https://school.programmers.co.kr/tryouts/85901/challenges

 

💡 문제 요약

1부터 13까지의 수에서, 1은 1, 10, 11, 12, 13 이렇게 총 6번 등장합니다. 정수 ijk가 매개변수로 주어질 때, i부터 j까지 k가 몇 번 등장하는지 return 하도록 solution 함수를 완성해주세요.

ex)

ijkresult
11316
105055
31020

 

💡 알고리즘 설계

  • i~j까지 반복하면서 k가 있는지 확인한다. → 바깥 for문
  • k가 있는 경우, 해당 숫자에 있는 k의 갯수를 세어서 answer에 더해준다. → 안쪽 for문

💡 내 코드

def solution(i, j, k):
    answer = 0
    k = str(k)
    
    for n in range(i, j+1):
        n = str(n)
        if k in n:
            for m in n:
                if k == m:
                    answer+=1
    return answer

 

💡 다른 풀이

from collections import Counter

def solution(i, j, k):
    answer = 0
    k = str(k)
    
    for n in range(i, j+1):
		    n = str(n)
		    if k in n:
		        count = Counter(str(n))
		        answer += count[k]
        
    return answer

 

💡 오답노트

  • 시간복잡도로 봤을 때 둘 사이에 큰 차이는 없지만, Counter 함수로 푸니까 코드가 훨씬 깔끔해졌다. 코드의 가독성을 고려했을 때 Counter 함수를 사용하는게 좋아보인다.
profile
영어공부 하는 Computer Scientist

0개의 댓글