늦은 프로그래밍 이야기

알고리즘 타임어택 오답노트 본문

내일배움캠프/자료구조 알고리즘

알고리즘 타임어택 오답노트

한정규 2022. 11. 16. 15:46

알고리즘 타임어택은 프로그래머스의 코딩테스트를 사용하여 진행하였다.

옷가게 할인 받기

문제 설명

머쓱이네 옷가게는 10만 원 이상 사면 5%, 30만 원 이상 사면 10%, 50만 원 이상 사면 20%를 할인해줍니다.
구매한 옷의 가격 price가 주어질 때, 지불해야 할 금액을 return 하도록 solution 함수를 완성해보세요.

 

제한사항

  • 10 ≤ price ≤ 1,000,000
    • price는 10원 단위로(1의 자리가 0) 주어집니다.
  • 소수점 이하를 버린 정수를 return합니다.

 

문제 풀이

오답

def solution(price):
    discount = 0
    
    if price >= 500000:
        discount = 0.2
    elif price >= 300000:
        discount = 0.1
    elif price >= 100000:
        discount = 0.05
    
    return price * (1 - discount)

 - 위 코드를 작성하여 문제를 풀었지만, 정확성이 90퍼센트로 오답이었다.

 

정답

 - 제한사항의 "소수점 이하를 버린 정수를 return합니다."의 문구를 간과하여 틀렸다.

 - 일부 소수점이 나오는 계산은 소수점이 있는 수로 return 하여 정확도가 90퍼센트인 것이었다.

def solution(price):
    discount = 0
    
    if price >= 500000:
        discount = 0.2
    elif price >= 300000:
        discount = 0.1
    elif price >= 100000:
        discount = 0.05
    
    return int(price * (1 - discount))

 - 마지막 return 부분의 값을 int()로 감싸주어 정수만 반환하게끔 하였다.

 

369 게임

문제설명

머쓱이는 친구들과 369게임을 하고 있습니다. 369게임은 1부터 숫자를 하나씩 대며 3, 6, 9가 들어가는 숫자는 숫자 대신 3, 6, 9의 개수만큼 박수를 치는 게임입니다. 머쓱이가 말해야하는 숫자 order가 매개변수로 주어질 때, 머쓱이가 쳐야할 박수 횟수를 return 하도록 solution 함수를 완성해보세요.

 

제한사항

  • 1 ≤ order ≤ 1,000,000

 

문제풀이

오답

def solution(order):
    a = list(map(int,str(order)))
    count = 0
    
    for i in a:
        if i % 3 == 0:
            count += 1
        
    return count

 - 구글링을 통해 숫자의 각 자리수를 리스트로 변환하는 법까지는 구현을 했고 샘플 테스트를 통과해서 정답인 줄 알았지만, 채점해보니 테스트에 실패해서 정확도가 88.9퍼센트였다.

 - i가 0인 경우를 고려하지 않아 틀렸다.

 

정답

def solution(order):
    a = list(map(int,str(order)))
    count = 0
    
    for i in a:
        if i == 0:
            continue
        if i % 3 == 0:
            count += 1
        
    return count

 - i가 0인 경우를 고려해주었다. if i == 0 : continue를 추가하여 i가 0이면 다음 조건문을 진행하게끔 하였다.

'내일배움캠프 > 자료구조 알고리즘' 카테고리의 다른 글

[Java] int형 숫자 각각의 자릿수 구하기  (0) 2022.12.20
자바 알고리즘 (2차원 배열)  (0) 2022.12.06
그래프, DFS & BFS, Dynamic Programming  (1) 2022.11.14
해쉬  (0) 2022.11.14
스택, 큐  (0) 2022.11.11
Comments