def solution(my_string):

    answer = ''.join(i if i.isdigit() else ' ' for i in my_string)
    # my_string에서 isdigit() 함수를 통해, 숫자를 ''에 기입
    # 숫자가 아닐 경우 공백으로 ''에 기입
    return sum(int(i) for i in answer.split())
    # 공백으로 나눈 answer를 split()으로 구분하여 숫자를 sum
    # i는 ''문자열화이기 때문에 int로 변환


🤔 문제 풀이

  • answer = ''.join(i if i.isdigit() else ' ' for i in my_string)
    • ''.join() 함수를 써서, ()에 바로 조건을 적어주었어요
    • 뒤에서부터 해석할게요
      • for i in my_string
        • my_string을 i로 돌릴 겁니다.
      • if i.isdigit()
        • 만약 i가 숫자라면 i값 그대로 join 해줄 거예요
      • else ' '
        • 아니라면 '' 공백으로 join 해줄게요
    • 이 모든 걸 answer에 담아냈어요
  • return sum(int(i) for i in answer.split())
    • 궁극적인 목표는 문자열에 있는 숫자들의 합이었어요
    • 그래서 return으로 sum을 해줄 거예요
      • for i in answer.split()
        • 아까 my_string을 숫자인 값을 answer에 join 해주고, 문자면 ''공백으로 기입했죠?
        • answer을 공백으로(.split) 구분한 것을 i에 넣어줄게요
      • sum(int(i))
        • 그 i를 int형으로 변환하여 sum 해주면 문제 해결!

함수 설명
isdigit() 숫자가 있는지 판별하는 함수 (True, False로 반환)
isalpha() 문자가 있는지 판별하는 함수 (True, False로 반환)

 

isdigit() 

Ex1 = '010-1234-5678'
Ex2 = '123456'
Ex3 = "R4R3"
 
print(Ex1.isdigit())   #False
print(Ex2.isdigit())   #True
print(Ex3.isdigit())   #False

 

isalpha()

Ex1 = 'A'
Ex2 = 'ABC'
Ex3 = "앱피아"
Ex4 = "Hello Appia"
Ex5 = "100Appia"
 
#print the is the result for isalpha()
 
print(Ex1.isalpha())  #True
print(Ex2.isalpha())  #True
print(Ex3.isalpha())  #True
print(Ex4.isalpha())  #False
print(Ex5.isalpha())  #False

후기

앞서 모스부호 문제에도 1시간을 썼는데,

이번에도 1시간을 써서 문제를 푸니까 에너지 소모가 크네요,,

과거에 비해서 지금의 제가, 본 것도 많고 아는 것도 많아져서 머리가 더 복잡해졌어요

그래서 이것도 해보고 저것도 해봤는데 다 안 돼서 ㅠㅠ 하

 

초반에 ''.join()함수, isdigit() 함수로 시작했거든요

그걸로 다시 돌아가서 문제를 천천히 풀어봤어요

해냈으니 됐어요,,

생각했던 걸 코드화 시킬 수 있어서 다행이었던 문제였습니다.

 

 

+ Recent posts