[Python] 코딩테스트 연습 Lv0

NAYOUNG KIM·2023년 10월 10일
0

코딩테스트

목록 보기
6/13
post-thumbnail
# 1.연속된 수의 합
def solution(num, total):
    answer = []
    var = sum(range(num+1))
    diff = total - var
    start_num = diff // num
    answer = [i+1+start_num for i in range(num)]
    return answer

# 2.문자 정렬하기
def solution(my_string):
    answer = ''.join(sorted(my_string.lower()))
    return answer

# 3.유한소수 판별하기
def solution(a, b):
    # 기약분수 만들기
    for i in range(a, 0, -1):
        if (a % i == 0) and (b % i == 0):
            a = int(a/i)
            b = int(b/i)

    while True:
        if b % 5 == 0:
            b /= 5
        else:
            break

    while True:
        if b % 2 == 0:
            b /= 2
        else:
            break
    
    answer = 1 if b == 1 else 2
    return answer

# 4.가장 큰 수 찾기
def solution(array):
    return [max(array), array.index(max(array))]
    
# 5.인덱스 바꾸기
def solution(my_string, num1, num2):
    s = list(my_string)
    s[num1], s[num2] = s[num2], s[num1]
    return ''.join(s)

# 6.숨어있는 숫자의 덧셈 (2)
def solution(my_string):
    answer = 0    
    for i in my_string:
        if i.isalpha():
            my_string = my_string.replace(i, ' ')
    
    my_string = my_string.split()
    
    return sum(list(map(int, my_string)))

# 7.구슬을 나누는 경우의 수
def solution(balls, share):
    import math  
    return math.comb(balls, share)

# 8.최빈값 구하기
def solution(array):
    answer = 0
    set_array = list(set(array))
    max_cnt = 0
    
    for num in set_array:
        count = array.count(num)
        if max_cnt < count:
            max_cnt = count
            answer = num
        elif max_cnt == count:
            answer = -1
    return answer

# 9.소인수분해
def solution(n):
    answer = []
    d = 2
    while d <= n:
        if n % d == 0:
            n /= d
            if d not in answer:
                answer.append(d)
        else:
            d += 1
    return answer
    
# 10.저주의 숫자 3
def solution(n):
    answer = 0
    for i in range(n):
        answer += 1
        while ('3' in str(answer)) or (answer % 3 == 0):
            answer += 1
    return answer
    
# 11.삼각형의 완성조건 (2)
def solution(sides):
    return min(sides) * 2 - 1
    
# 12.등수 매기기
def solution(score):
    avg = [sum(i)/2 for i in score]
    s_avg = sorted(avg, reverse=True)
    
    answer = []
    for i in avg:
        answer.append(s_avg.index(i)+1)
    return answer
    
# 13.팩토리얼
from math import factorial

def solution(n):
    k = 10
    while n < factorial(k):
        k -= 1
    return k
    
# 14.진료 순서 정하기
def solution(emergency):
    s_emergency = sorted(emergency, reverse=True)
    rank_list = []
    for i in emergency:
        rank_list.append(s_emergency.index(i)+1)
    return rank_list
profile
21세기 주인공

0개의 댓글