본문 바로가기
[스파르타코딩클럽]데이터분석 과정/PYTHON

[Python 코드카다] 31~35번 (프로그래머스)

by doo_ 2024. 1. 10.

31번 수박수박수박수?

def solution(n):
    answer = ''
    for i in range(1,n+1):
        if i%2 == 1 :
            answer += '수'
        else :
            answer += '박'
    return answer

> 창의적인 답

def solution(n):
	str = "수박"*n
    return str[:n]

 

32번 내적

def solution(a, b):
    answer = 0
    for i in range(len(a)):
        answer += a[i]*b[i]
    return answer

> 다른 해답 : zip 활용

def solution(a, b):
	n = 0
    for i, j in zip(a,b):
    	n += i*j
    return n

 

33번 약수의 개수와 덧셈

> 약수의 개수를 구해서 푼 답

def solution(left, right):
	# 기본값 세팅
    answer = 0
    x = 0
    y = 1
    # left ~ right 판단
    for j in range(left, right+1) :
        # while문 거친 i와 n을 다시 기본값 세팅
        i = y
        n = x
        # 약수의 개수 구하기
        while i <= j :
            if j%i == 0:
                i += 1
                n += 1
            else :
                i += 1
        # 약수의 개수가 짝수일 때 홀수일 때,
        if n%2 == 0 :
            answer += j
        else :
            answer -= j
    return answer

> 약수의 개수를 구하는 공식 또는 약수의 그 원리를 생각해서 푼 방식..

def solution(left, right):
    answer = 0
    for i in range(left,right+1):
        if int(i**0.5)==i**0.5:
            answer -= i
        else:
            answer += i
    return answer

 

34번 문자열 내림차순

def solution(s):
    a = list(s)
    a.sort(reverse = True)
    return ''.join(a)

> sorted 활용 : ( )안에 리스트 딕셔너리 외에 문자열도 가능

def solution(s):
    return ''.join(sorted(s, reverse=True))

 

35번 부족한 금액 계산하기

def solution(price, money, count):
	# 얼마를 초과하는지 값 구하기
    for i in range(1,count+1) :
        money = money - price * (i)
    # 만약 초과하지 않는다면
    if money >= 0 :
        return 0
    else :
        answer = abs(money)
        return answer

> 창의적인 답 : price(1부터 count까지의 합) 활용..👏

def solution(price, money, count):
    return int(price*count*(count+1)//2-money)