[코딩테스트] 알고리즘 기초 다지기(6)

윤재환·2025년 1월 1일

def solution(n):
    answer = 0
    for i in range(1, n + 1):
        if (n % i == 0):
            answer += i
    return answer

약수는 어떤 수를 나눴을때 나머지가 0인 수이니 if조건문으로 n % i 가 0 일때 answer에 + i 를 해주었습니다.


def solution(n):
    answer = 0
    for i in str(n):
        answer += int(i)
    return answer

n을 각 자리수 별로 쉽게 하기 위해 str값으로 바꿔주고 답에 넣을때는 int로 바꿨습니다.



실패 코드

def solution(wallet, bill):
    answer = 0
    while True:
        if wallet[0] >= bill[0] and wallet[1] >= bill[1]:
            break
        
        if wallet[0] < bill[0]:
            bill[0] = int(bill[0] / 2)
            answer += 1
            
        elif wallet[1] < bill[1]:
            bill[1] = int(bill[1] / 2)

            answer += 1
            
    return answer

처음에 이코드로 실행시 위에 입출력 예는 맞았지만 아마 90도로 회전했을떄를 고려하지 않다 정답이 안나왓습니다.

두번째 실패 코드

def solution(wallet, bill):
    answer = 0
    tb1 = 0
    tb2 = 0
    while True:
        if wallet[0] >= bill[0] and wallet[1] >= bill[1]:
            break
        
        if wallet[0] < bill[0]:
            bill[0] = int(bill[0] / 2)
            answer += 1
            
        if wallet[1] < bill[1]:
            bill[1] = int(bill[1] / 2)
            answer += 1
        tb1 = bill[1]
        tb2 = bill[0]
        
        if wallet[0] >= tb1 and wallet[1] >= tb2:
            break
            
    return answer

혹시 몰라서 따로 bill을 90도로 돌렸을때 계산을 하기위해
tb1, tb2를 추가로 넣어줫지만 아직도 10개중 2개는 실패한다.

성공 코드

def solution(wallet, bill):
    answer = 0
    tb1 = 0
    tb2 = 0
    while max(bill) > max(wallet) or min(bill) > min(wallet):
        
        if bill[0] > bill[1]:
            bill[0] = int(bill[0] / 2)
            answer += 1
            
        else:
            bill[1] = int(bill[1] / 2)
            answer += 1
            
        tb1 = bill[1]
        tb2 = bill[0]
        
        if wallet[0] >= tb1 and wallet[1] >= tb2:
            break 

    return answer

그양 문제를 잘못 읽었습니다..

문제대로 푸니깐 잘됩니다

잘못된점 첫번째는 반복문의 조건문을 잘못 적었고

두번쨰는 bill을 접는 수가 wallet에 대비해서 하는게 아니라 bill과 비교해서 하는거였습니다.

profile
백엔드 개발에 관심있는 1인

0개의 댓글