[코딩테스트 입문]Day15
영어가 싫어요Permalink
문제 설명
영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다. 문자열 numbers
가 매개변수로 주어질 때, numbers
를 정수로 바꿔 return 하도록 solution 함수를 완성해 주세요.
제한사항
numbers
는 소문자로만 구성되어 있습니다.numbers
는 “zero”, “one”, “two”, “three”, “four”, “five”, “six”, “seven”, “eight”, “nine” 들이 공백 없이 조합되어 있습니다.- 1 ≤
numbers
의 길이 ≤ 50 - “zero”는
numbers
의 맨 앞에 올 수 없습니다.
입출력 예
numbers | result |
---|---|
“onetwothreefourfivesixseveneightnine” | 123456789 |
“onefourzerosixseven” | 14067 |
문제 풀이
def solution(numbers):
english = { "zero": 0, "one": 1, "two": 2, "three": 3, "four": 4, "five": 5, "six": 6, "seven": 7, "eight": 8, "nine": 9}
sol = ""
answer = []
for i in numbers:
sol += i
if sol in english.keys():
answer.append(english[sol])
sol = ""
a = 0
le = len(answer)
print(answer)
for j in answer:
a += int(j)*10**(le-1)
le -= 1
return a
def solution(numbers):
for num, eng in enumerate(["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]):
numbers = numbers.replace(eng, str(num))
return int(numbers)
def solution(numbers):
english = { "zero": 0, "one": 1, "two": 2, "three": 3, "four": 4, "five": 5, "six": 6, "seven": 7, "eight": 8, "nine": 9}
sol = ""
answer = ""
for i in numbers:
sol += i
if sol in english.keys():
answer += str(english[sol])
sol = ""
return int(answer)
효율적인 풀이
def solution(numbers):
num = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]
for i, v in enumerate(num):
numbers = numbers.replace(v, str(i))
return int(numbers)
인덱스 바꾸기Permalink
문제 설명
문자열 my_string
과 정수 num1
, num2
가 매개변수로 주어질 때, my_string
에서 인덱스 num1
과 인덱스 num2
에 해당하는 문자를 바꾼 문자열을 return 하도록 solution 함수를 완성해보세요.
제한사항
- 1 <
my_string
의 길이 < 100 - 0 ≤
num1
,num2
<my_string
의 길이 my_string
은 소문자로 이루어져 있습니다.num1
≠num2
입출력 예
my_string | num1 | num2 | result |
---|---|---|---|
“hello” | 1 | 2 | “hlelo” |
“I love you” | 3 | 6 | “I l veoyou” |
문제 풀이
def solution(my_string, num1, num2):
new_string = [i for i in my_string]
new = []
for i, v in enumerate(new_string):
if i == num1:
new.append(my_string[num2])
elif i == num2:
new.append(my_string[num1])
else:
new.append(v)
return ''.join(new)
def solution(my_string, num1, num2):
return my_string[:num1] + my_string[num2] + my_string[num1+1:num2] + my_string[num1]+ my_string[num2+1:]
이것은 통과는 되지만 오류가 발생할 수 있는 소스 코드 입니다. 그래서 아예 처음에 정렬을 해주고 해야지 오류가 안납니다.
def solution(my_string, num1, num2):
s = list(my_string)
s[num1],s[num2] = s[num2],s[num1]
return ''.join(s)
한 번만 등장한 문자Permalink
문제 설명
문자열 s
가 매개변수로 주어집니다. s
에서 한 번만 등장하는 문자를 사전 순으로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요. 한 번만 등장하는 문자가 없을 경우 빈 문자열을 return 합니다.
제한사항
- 0 <
s
의 길이 < 1,000 s
는 소문자로만 이루어져 있습니다.
입출력 예
s | result |
---|---|
“abcabcadc” | “d” |
“abdc” | “abcd” |
“hello” | “eho” |
문제 풀이
def solution(s):
ss = sorted(list(s))
cnt = []
for i in ss:
cnt.append(ss.count(i))
new = []
for j, v in enumerate(cnt):
if v == 1:
new.append(ss[j])
return ''.join(new)
def solution(s):
answer = "".join(sorted([ ch for ch in s if s.count(ch) == 1]))
return answer
약수 구하기Permalink
문제 설명
정수 n
이 매개변수로 주어질 때, n
의 약수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤
n
≤ 10,000
입출력 예
n | result |
---|---|
24 | [1, 2, 3, 4, 6, 8, 12, 24] |
29 | [1, 29] |
문제 풀이
def solution(n):
return [ i for i in range(1, n+1) if n % i == 0]
댓글남기기