본문 바로가기
Programming/Python

[프로그래머스 Python] 없는 숫자 더하기, 크기가 작은 부분 문자열

by 용스토리랜드 2024. 7. 1.

 

1. 없는 숫자 더하기.

✅  <문제 설명>  

0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.

 <문제 풀이> 

  • 0~9 를 포함한 리스트를 만들기
  • 입력받은 numbers 를 순회하며 0~9를 포함한 리스트에서 일치하면 제거
  • 결국, numbers 에 없는 값들만 남게 되고, 이를 모두 더해줌으로써 Solve!
def solution(numbers):
    zero_to_nine = [x for x in range(0,10)]
    
    for e in numbers :
        if e in zero_to_nine : 
            zero_to_nine.remove(e)
            
    answer = sum(zero_to_nine)
                
    return answer

 

크기가 작은 부분문자열

✅  <문제 설명> 

숫자로 이루어진 문자열 t와 p가 주어질 때, t에서 p와 길이가 같은 부분문자열 중에서, 이 부분문자열이 나타내는 수가 p가 나타내는 수보다 작거나 같은 것이 나오는 횟수를 return하는 함수 solution을 완성하세요.

예를 들어, t="3141592"이고 p="271" 인 경우, t의 길이가 3인 부분 문자열은 314, 141, 415, 159, 592입니다. 이 문자열이 나타내는 수 중 271보다 작거나 같은 수는 141, 159 2개 입니다.

 

✅  <입출력 예시>

 

 

 <문제 풀이> 

  • p 길이 만큼의 sub string 을 뽑아야 하기 때문에 len_p 변수에 p의 길이를 저장 ! 
  • sub_t = [] 빈 리스트를 만들어 p 길이 만큼의 sub string 을 담을 준비
  • 문자열의 첫 인덱스부터 p 길이 만큼 잘라서 sub_t 리스트에 append 후, 문자열 t 범위를 벗어나면 break ! 
  • 이후, 저장된 sub string 을 p 와 비교하며, 작거나 같은 값들의 개수 구하기.
def solution(t, p):
    len_p = len(p)
    sub_t = [] 
    for idx in range(len(t)) : # len(t) : 7, 0~6
        if idx+len_p <= len(t) : 
            sub_t.append(t[idx:idx+len_p])
        else : 
            break
    answer = 0 
    print(sub_t)
    for st in sub_t : 
        if int(st) <= int(p) : 
            answer += 1
    return answer
반응형