코딩테스트

프로그래머스 입문 Day 15 파이썬

피갓자 2025. 5. 11. 13:00

프로그래머스
프로그래머스

영어가 싫어요

문제 설명

영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다.

문자열 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

입출력 예 설명

입출력 예 #1

  • "onetwothreefourfivesixseveneightnine"를 숫자로 바꾼 123456789를 return합니다.

입출력 예 #2

  • "onefourzerosixseven"를 숫자로 바꾼 14067를 return합니다.

solution.py

def solution(numbers):
    answer = {
        "zero": "0", "one": "1", "two": "2", "three": "3",
        "four": "4", "five": "5", "six": "6",
        "seven": "7", "eight": "8", "nine": "9"
    }
    
    for i, j in answer.items():
        numbers = numbers.replace(i, j)
    
    return int(numbers)

인덱스 바꾸기

문제 설명

문자열 my_string과 정수 num1num2가 매개변수로 주어질 때, my_string에서 인덱스 num1과 인덱스 num2에 해당하는 문자를 바꾼 문자열을 return 하도록 solution 함수를 완성해보세요.

제한사항

  • 1 < my_string의 길이 < 100
  • 0 ≤ num1num2 < my_string의 길이
  • my_string은 소문자로 이루어져 있습니다.
  • num1 ≠ num2

입출력 예

my_string num1 num2 result
"hello" 1 2 "hlelo"
"I love you" 3 6 "I l veoyou"

입출력 예 설명

입출력 예 #1

  • "hello"의 1번째 인덱스인 "e"와 2번째 인덱스인 "l"을 바꾸면 "hlelo"입니다.

입출력 예 #2

  • "I love you"의 3번째 인덱스 "o"와 " "(공백)을 바꾸면 "I l veoyou"입니다.

solution.py

def solution(my_string, num1, num2):
    answer = list(my_string)
    answer[num1], answer[num2] = answer[num2], answer[num1]
    return ''.join(answer)

한 번만 등장한 문자

문제 설명

문자열 s가 매개변수로 주어집니다.

s에서 한 번만 등장하는 문자를 사전 순으로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요. 한 번만 등장하는 문자가 없을 경우 빈 문자열을 return 합니다.

제한사항

  • 0 < s의 길이 < 1,000
  • s는 소문자로만 이루어져 있습니다.

입출력 예

s result
"abcabcadc" "d"
"abdc" "abcd"
"hello" "eho"

입출력 예 설명

입출력 예 #1

  • "abcabcadc"에서 하나만 등장하는 문자는 "d"입니다.

입출력 예 #2

  • "abdc"에서 모든 문자가 한 번씩 등장하므로 사전 순으로 정렬한 "abcd"를 return 합니다.

입출력 예 #3

  • "hello"에서 한 번씩 등장한 문자는 "heo"이고 이를 사전 순으로 정렬한 "eho"를 return 합니다.

solution.py

def solution(s):
    answer = {}
    
    for i in s:
        if i in answer:
            answer[i] += 1
        else:
            answer[i] = 1
            
    temp = [m for m, n in answer.items() if n == 1]
    temp.sort()
    
    return ''.join(temp)
# 성능 O(n log n)
def solution(s):
    return ''.join(sorted([i for i in s if s.count(i) == 1]))
# 성능 O(n^2)

약수 구하기

문제 설명

정수 n이 매개변수로 주어질 때, n의 약수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요.

제한사항

  • 1 ≤ n ≤ 10,000

입출력 예

n result
24 [1, 2, 3, 4, 6, 8, 12, 24]
29 [1, 29]

입출력 예 설명

입출력 예 #1

  • 24의 약수를 오름차순으로 담은 배열 [1, 2, 3, 4, 6, 8, 12, 24]를 return합니다.

입출력 예 #2

  • 29의 약수를 오름차순으로 담은 배열 [1, 29]를 return합니다.

solution.py

def solution(n):
    answer = []
    
    for i in range(1, int(n ** 0.5) + 1):
        if n % i == 0:
            answer.append(i)
            if i != n // i:
                answer.append(n // i)
    
    return sorted(answer)
def solution(n):
    answer = []
    
    for i in range(1, n + 1):
        if n % i == 0:
            answer.append(i)
    
    return sorted(answer)