2 분 소요

영어가 싫어요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은 소문자로 이루어져 있습니다.
  • num1num2

입출력 예

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]

업데이트:

댓글남기기