개발/코테

[6일차] 프로그래머스 - 옷가게 할인 받기, 문자 반복 출력하기, 대문자와 소문자, 자릿수 더하기

su-mmer 2023. 10. 31. 16:29
728x90

옷가게 할인 받기


풀이

def solution(price):
    if 500000 <= price:
        return int(price*0.8)
    elif 300000 <= price:
        return int(price*0.9)
    elif 100000 <= price:
        return int(price*0.95)
    else:
        return price

다른 풀이

def solution(price):
    discount_rates = {500000: 0.8, 300000: 0.9, 100000: 0.95, 0: 1}
    for discount_price, discount_rate in discount_rates.items():
        if price >= discount_price:
            return int(price * discount_rate)

딕셔너리를 사용한 방식

 

문자 반복 출력하기


풀이

def solution(my_string, n):
    strli = list(map(lambda x: x*n, my_string))
    return ''.join(strli)

my_string을 하나씩 떼서 labmda로 문자열 3개씩 출력해서 리스트로 저장하고 join으로 다시 붙여서 출력하는 방식

 

다른 풀이

def solution(my_string, n):
    return ''.join(i*n for i in my_string)

아 그냥 for문으로 문자 하나씩 접근할 수있구나,,

 

대문자와 소문자


풀이

def solution(my_string):
    return ''.join([i.upper() if i.islower() else i.lower() for i in my_string])

리스트 컴프리헨션에서 else가 필요할 경우 for문보다 앞에 써주어야 한다.

join 문을 익혀두니 편하다.

 

다른 풀이

def solution(my_string):
    return my_string.swapcase()

아놔 swapcase() 함수가 있네

 

자릿수 더하기


풀이

def solution(n):
    return sum([int(i) for i in str(n)])

n을 문자열로 바꿔서 하나씩 접근하여 int로 다시 변환한 후 sum 함수로 합산

728x90