본문 바로가기

Python(알고리즘,문제풀이)/프로그래머스(입문100제)

코딩테스트입문 / 숨어있는 숫자의 덧셈(2)(isalpha())

728x90

📚문제

출처 : 프로그래머스 / 숨어있는 숫자의 덧셈(2) (https://school.programmers.co.kr/learn/courses/30/lessons/120864)

 

📝풀이

def solution(my_string):
    
    for i in my_string:
        if i.isalpha():
            my_string = my_string.replace(i,' ')
    my_string = my_string.split()
    
    return sum(list(map(int,my_string)))

얼핏 봤을 때 쉽다고 생각했는데 잘 보니 연속된 숫자가 등장한다

한참 생각해보고 문제를 봐도 막막하고

도저히 답이 안나올 것 같아서 구글링해봤다

 

isdigit() 메서드는 이전 문제들을 풀면서 알게 되었다

해당 문자열이 숫자형인지 아닌지 판별해주는 메서드이다

 

이번에는 isalpha() 메서드를 적용하여 문제를 풀어보았다 

기능은 반대로 해당 문자열이 알파벳(대,소문자 구분x)인지 아닌지 판별한다

 

isalpha()를 사용하여 알파벳을 다 공백으로 바꿔준 후에

split()하여 리스트로 변환 후 합계(sum)를 구해주면 된다

 

 

+ split() 개념 헷갈려서 기록

위의 5번째 코드
my_string = "aAb1B2cC34oOp"
my_string.replace(i,' ')
-------------------------------------
'   1 2  34   '  # 알파벳을 제외하고 이대로 출력

my_string() => 매개변수 미지정 => 문자열에서 공백 기준으로 분리 
               이 때 연속된 공백은 하나의 공백으로 간주하며,
               ['1', '2', '34'] 와 같이 공백을 제외하고
               한 개 or 연속된 문자열들을 담는다            
               
my_string('') => 매개변수로 빈 문자열 사용 시, 문자열의 각 문자마다 분리
                 빈 문자열도 리스트에 포함
                 이 코드에서는 에러 발생
                 split()메서드의 구분자는 문자열이어야함(어떤 기준에 따라 문자열 나눌 지 결정)
                 여기서는 빈 문자열('')이 없기 때문에 오류 발생
                 
my_string(' ') => 매개변수로 공백 사용 시, 공백도 한 문자열로 간주하여
                  공백 개수 만큼 리스트의 원소개수로 들어감
                  ['', '', '', '1', '2', '', '34', '', '', '']

 

728x90