[프로그래머스 Python] 코딩테스트 입문 Day 15 - 문자열, 해시, 배열, 수학
1. 영어가 싫어요
영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다. 문자열 numbers
가 매개변수로 주어질 때, numbers
를 정수로 바꿔 return 하도록 solution 함수를 완성해 주세요.
제한사항
numbers
는 소문자로만 구성되어 있습니다.numbers
는 “zero”, “one”, “two”, “three”, “four”, “five”, “six”, “seven”, “eight”, “nine” 들이 공백 없이 조합되어 있습니다.- 1 ≤
numbers
의 길이 ≤ 50 - “zero”는
numbers
의 맨 앞에 올 수 없습니다.
코드 작성 (1)
def solution(numbers):
words_3 = {"one":"1", "two":"2", "six":"6"}
words_4 = {"zero":"0", "four":"4", "five":"5", "nine":"9"}
words_5 = {"three":"3", "seven":"7", "eight":"8"}
num = numbers
answer = ""
for _ in range(len(numbers)//3):
if num[:3] in words_3.keys():
answer += words_3[num[:3]]
num = num[3:]
elif num[:4] in words_4.keys():
answer += words_4[num[:4]]
num = num[4:]
elif num[:5] in words_5.keys():
answer += words_5[num[:5]]
num = num[5:]
return int(answer)
코드 작성 (2)
def solution(numbers):
num_list = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]
for i, n in enumerate(num_list):
numbers = numbers.replace(n, str(i))
return int(numbers)
2. 인덱스 바꾸기
문자열 my_string
과 정수 num1
, num2
가 매개변수로 주어질 때, my_string
에서 인덱스 num1
과 인덱스 num2
에 해당하는 문자를 바꾼 문자열을 return 하도록 solution 함수를 완성해보세요.
제한사항
- 1 <
my_string
의 길이 < 100 - 0 ≤
num1
,num2
<my_string
의 길이 my_string
은 소문자로 이루어져 있습니다.num1
≠num2
코드 작성
def solution(my_string, num1, num2):
# 저장할 최종 문자열
answer = ''
# 변경
for i, s in enumerate(my_string):
if i != num1 and i != num2:
answer += s
elif i == num1:
answer += my_string[num2]
elif i == num2:
answer += my_string[num1]
return answer
3. 한 번만 등장하는 문자
문자열 s
가 매개변수로 주어집니다. s
에서 한 번만 등장하는 문자를 사전 순으로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요. 한 번만 등장하는 문자가 없을 경우 빈 문자열을 return 합니다.
제한사항
- 0 <
s
의 길이 < 1,000 s
는 소문자로만 이루어져 있습니다.
코드 작성
def solution(s):
num_dict = dict()
answer = []
# 문자별로 등장한 횟수가 담긴 사전 생성
for alpha in s:
if alpha in num_dict.keys():
num_dict[alpha] += 1
else:
num_dict[alpha] = 1
# 한 번만 등장한 문자 찾기
for k, v in num_dict.items():
if v == 1:
answer.append(k)
if len(answer) == 0:
answer.append('')
# 정렬
answer.sort()
return ''.join(answer)
4. 약수 구하기
정수 n
이 매개변수로 주어질 때, n
의 약수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤
n
≤ 10,000
코드 작성
def solution(n):
answer = []
for i in range(1, n+1):
if n % i == 0:
answer.append(i)
return answer
👩🏻💻개인 공부 기록용 블로그입니다
오류나 틀린 부분이 있을 경우 댓글 혹은 메일로 따끔하게 지적해주시면 감사하겠습니다.
댓글남기기