1. 프로그래머스 python 코딩테스트 입문
Level 0. 숨어있는 숫자의 덧셈(2)
문자열 my_string이 매개변수로 주어집니다. my_string은 소문자, 대문자, 자연수로만 구성되어있습니다. my_string안의 자연수들의 합을 return하도록 solution 함수를 완성해주세요.
정답 확인
1. i.isdigit()
을 사용하여 풀어쓰기
def solution(my_string):
num = '' # 임시로 숫자를 이어 붙이기 위해 사용
nums = [] # 숫자들을 저장할 리스트
for i in my_string:
if i.isdigit(): # 숫자라면
num += i # 계속 이어 붙이기 (문자열로)
else: # 문자가 나오면 지금까지 모은 숫자를 리스트에 추가
if num: # 만약 숫자가 저장돼 있다면
nums.append(int(num)) # 리스트에 추가 (정수로 변환)
num = '' # 숫자 초기화
if num: # 마지막에 남은 숫자가 있다면 추가
nums.append(int(num))
return sum(nums) # 숫자 리스트의 합을 반환
+=연산자
활용
str
+=str
문자 붙이기 '1' + '23' = '123'list
+=list
리스트 확장 [1,2] += [3,4] = [1,2,3,4]list
+=[int(i)]
는 타입이 달라서 안됨.- 숫자 += 숫자 a = 5, a += 3 , 5+3 = 8
if - else
구문에서 else
굳이 안써도 됨.else
가 없으면 그냥 아무일 없이 넘어감.map(int, nums)
: 각 문자열을 int로 바꿔줌.sum(map(int,리스트))
: 나중에 한번에 숫자로 바꾸고 싶다.append(int(num))
: 한개씩 바로 바로 바꾸고 싶다.num += i
로 숫자를 하나씩 모아, [123] 이런식으로 모아서 뭉쳐짐.int()
하나씩 해서 넣어주어야함.int()
는 리스트 전체에 적용을 못하기 때문.map함수
를 써야함.)
.append()
vsadd()
차이!
2. map 함수
사용하기
def solution(my_string):
num = ''
nums = []
for i in my_string:
if i.isdigit():
num += i
else:
if num:
nums.append(num) # ❗여기선 문자열로 저장!
num = ''
if num:
nums.append(num)
return sum(map(int, nums))
map함수
map(int, nums)
: 각 문자열을 int로 바꿔줌.
['1', '34'] -> [1, 34]sum(map(int,리스트))
: 나중에 한번에 숫자로 바꾸고 싶다.append(int(num))
: 한개씩 바로 바로 바꾸고 싶다.
3. 발상의 전환!!!
def solution(my_string):
s = ''.join(i if i.isdigit() else ' ' for i in my_string)
return sum(int(i) for i in s.split())
''.join()
함수와.split()
함수 사용
''.join()
숫자는 join함수를 쓸 수 없음. '문자'만 사용 가능!
(join할때, int(i)를 사용하지 못한 이유.)문자열.split()
: 문자열을 특정 문자로 잘라서, 결과로 리스트를 만들어냄. 따라서리스트.split()
라는건 없음..split()
인 경우 : ()공백이라 공백 기준으로 자르는것.
2. 프로그래머스 python 코딩테스트 입문
Level 0. 접미사 배열
어떤 문자열에 대해서 접미사는 특정 인덱스부터 시작하는 문자열을 의미합니다. 예를 들어, "banana"의 모든 접미사는 "banana", "anana", "nana", "ana", "na", "a"입니다.
문자열 my_string이 매개변수로 주어질 때, my_string의 모든 접미사를 사전순으로 정렬한 문자열 배열을 return 하는 solution 함수를 작성해 주세요.
정답 확인
def solution(my_string): a = [] for i in range(len(my_string)): a.append(my_string[i:]) return sorted(a)
append()
와+=
연산자를 사용할 때 결과 차이: