[프로그래머스 Python] 코딩테스트 입문 Day 12 - 문자열, 정렬, 사칙연산, 수학
코딩테스트 입문 Day 12 문자열, 정렬, 사칙연산, 수학
1. 모음 제거
영어에선 a, e, i, o, u 다섯 가지 알파벳을 모음으로 분류합니다. 문자열 my_string
이 매개변수로 주어질 때 모음을 제거한 문자열을 return하도록 solution 함수를 완성해주세요.
제한사항
my_string
은 소문자와 공백으로 이루어져 있습니다.- 1 ≤
my_string
의 길이 ≤ 1,000
(1) 코드 작성
import re
def solution(my_string):
return re.sub("[aeiou]", "", my_string)
(2) 코드 리뷰 및 회고
re
모듈을 사용하여 쉽게 특정 문자열을 제거했다.- 특정문자들을 제거할 때 [] 안에 넣으면 안에 포함되어있는 문자를 ““로 제거할 수 있다.
- EASY 😎
2. 문자열 정렬하기 (1)
문자열 my_string
이 매개변수로 주어질 때, my_string
안에 있는 숫자만 골라 오름차순 정렬한 리스트를 return 하도록 solution 함수를 작성해보세요.
제한사항
- 1 ≤
my_string
의 길이 ≤ 100 my_string
에는 숫자가 한 개 이상 포함되어 있습니다.my_string
은 영어 소문자 또는 0부터 9까지의 숫자로 이루어져 있습니다.
(1) 코드 작성
import re
def solution(my_string):
answer = map(int, re.sub("[^0-9]", "", my_string))
return sorted(answer)
(2) 코드 리뷰 및 회고
re
모듈을 사용하여 쉽게 특정 문자열을 제거했다.- 특정문자들을 제거할 때 [] 안에 넣으면 안에 포함되어있는 문자를 ““로 제거할 수 있다.
- 특히 [^문자열]을 사용하면 문자열에 해당하는 것이 아닌 것을 ““로 대체할 수 있다.
그리고 숫자만 남은 문자열을
map
으로int
처리 했다. - 한 자료형에 대해 두 함수를 적용하고싶을 때
map
을 사용하면 된다. - 마지막으로
sorted
함수를 적용하여 내림차순으로 정렬했다. - EASY 😎
3. 숨어있는 숫자의 덧셈 (1)
문자열 my_string
이 매개변수로 주어집니다. my_string
안의 모든 자연수들의 합을 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤
my_string
의 길이 ≤ 1,000 my_string
은 소문자, 대문자 그리고 한자리 자연수로만 구성되어있습니다.
(1) 코드 작성
import re
def solution(my_string):
answer = map(int, re.sub("[^0-9]", "", my_string))
return sum(answer)
(2) 코드 리뷰 및 회고
re
모듈을 사용하여 쉽게 특정 문자열을 제거했다.- 특정문자들을 제거할 때 [] 안에 넣으면 안에 포함되어있는 문자를 ““로 제거할 수 있다.
- 특히 [^문자열]을 사용하면 문자열에 해당하는 것이 아닌 것을 ““로 대체할 수 있다.
그리고 숫자만 남은 문자열을
map
으로int
처리 했다. - 한 자료형에 대해 두 함수를 적용하고싶을 때
map
을 사용하면 된다. - 마지막으로
sum
함수를 적용하여 리스트 내에 있는 숫자 요소들의 합을 구했다. - EASY 😎
4. 소인수분해
소인수분해란 어떤 수를 소수들의 곱으로 표현하는 것입니다. 예를 들어 12를 소인수 분해하면 2 * 2 * 3 으로 나타낼 수 있습니다. 따라서 12의 소인수는 2와 3입니다. 자연수 n
이 매개변수로 주어질 때 n
의 소인수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요.
제한사항
- 2 ≤
n
≤ 10,000
(1) 코드 작성
def solution(n):
"""
12 = 2*2*3 => 2가 두번 들어갈 수 있음
특정 숫자에 대해 2회 이상
"""
answer = []
num = n
for i in range(2, n+1):
for j in range(num//i):
if num % i == 0:
answer.append(i)
num = int(num / i)
# sorted 함수 사용안하면 특정 테스트에서 오답 뜬다.
# 오답 : 테스트 6, 8, 12, 24
return sorted(list(set(answer)))
(2) 코드 리뷰 및 회고
- 소수들의 곱을 표현하기 위해 고민을 많이 했었다.
- 고민한 부분은 range()만큼 반복문을 돌려도 1부터 2 ~.. 순으로 한 숫자가 반복되지 않는 다는점이었다.
- 12(223)의 소인수는 2, 3이다.
- 예시 적용
- n = 8
- for i in range(2, 9) > [2, 3, 4, 5, 6, 7, 8]
- i가 2일 때, for j in range(4) > [0, 1, 2, 3]만큼 반복
- 8%2 == 0 -> answer에 2추가, num에 8을 2로 나눈 값을 할당
- 4%2 == 0 -> answer에 2추가, num에 4를 2로 나눈 값을 할당
- 2%2 == 0 -> answer에 2추가, num에 2를 2로 나눈 값을 할당
- 1%2 != 0 (조건문 만족 X)
- num이 2보다 작으면 break 걸어주면 더 좋을 것 같다!
- EASY 😎
👩🏻💻개인 공부 기록용 블로그입니다
오류나 틀린 부분이 있을 경우 댓글 혹은 메일로 따끔하게 지적해주시면 감사하겠습니다.
댓글남기기