👉 오늘 한 일
- 프로그래머스 문제풀이(level 0)
- 책 집필 스터디
프로그래머스 문제풀이
1. 영어가 싫어요
- 정답률 78%
- 문자열을 돌면서 숫자에 해당하는 문자가 완성되면 딕셔너리에서 해당 수를 가져옴
def solution(numbers):
result = []
num = ""
num_dict = {"one" : 1, "two" : 2, "three" : 3, "four" : 4,
"five": 5, "six" : 6, "seven" : 7, "eight" : 8,
"nine" : 9, "zero" : 0}
for s in numbers:
num += s
for n in num_dict:
if num == n:
result.append(str(num_dict[n]))
num = ""
return int(''.join(result))
- 다른 사람 풀이
- 딕셔너리의 키를 돌면서 replace 해주면 내 코드보다 훨씬 깔끔하게 구현할 수 있다!
def solution(numbers):
r = {'zero': '0', 'one': '1', 'two': '2', 'three': '3', 'four': '4',\
'five': '5', 'six': '6', 'seven': '7', 'eight': '8', 'nine': '9'}
for k in r.keys():
numbers = numbers.replace(k, r[k])
return int(numbers)
2. 잘라서 배열로 저장하기
- 정답률 78%
- 문자열의 길이를 n으로 나눈 것에 올림한 수만큼 반복. 슬라이싱을 통해 n만큼 가져오며 슬라이싱은 초과하는 부분이 생겨도 에러가 나지 않고 나머지만 잘라서 가져옴
import math
def solution(my_str, n):
result = []
i = 0
for _ in range(math.ceil(len(my_str)/n)):
result.append(my_str[i:i+n])
i += n
return result
- 다른 사람 풀이
- range를 n만큼 자르면 쉽게 풀 수 있다!
def solution(my_str, n):
return [my_str[i: i + n] for i in range(0, len(my_str), n)]