[프로그래머스] 기능개발 (Python) - 스택/큐

Yebin Lee·2022년 7월 10일
0

코테준비

목록 보기
8/12

주말이라 본가에 왔다. 이사갈 날이 한달도 채 남지 않아 조금은 설렌다. 어차피 나는 자취러지만 ... 이번 주말은 특히 좀 바쁘다. 계절학기 기말고사를 앞두고 있어 시험공부도 해야 하고 발표과제도 2개 남았으며 다음주 수요일에는 한자 3급 자격증 시험이 있다 ..... 😥

그래도 코딩 공부를 막 놓을 수는 없어 오늘 코딩테스트 문제 하나를 풀었다.


프로그래머스 [기능개발] 문제 보기


긴 문제만 보면 괜히 긴장하고 겁을 먹곤 하는데 계속해서 도전하는 습관을 들여야 한다. Level1도 풀기 어려울 것 같다는 겁쟁이 생각으로 처음 프로그래머스에 입문했지만 며칠이 지나지 않은 시점, Level2 문제를 열심히 도전한다. 언젠가는 어떠한 구글링 없이도 Level2를 척척 풀어내고 Level3까지 거침없이 풀어내는 코딩 실력자가 되고 싶다 ..!

매번 블로그 글을 쓸 때마다 내 다짐을 자꾸만 적게 되는 것 같은데 뭐, 내 공간이니까 ㅎㅎ
결론적으로 하고 싶었던 말은, 이 문제도 읽기 전에는 어려워 보였지만 읽고 나면 코드가 점점 떠오르고 결국엔 해낼 수 있다는 말이다. 도전은 계속되어야 한다 ... 는 뜻 .. ㅎㅎ ...


프로그래머스 [기능개발] 문제 풀이


def solution(progresses, speeds):
    answer = []
    stack = []
    temp = 0
    for i, value in enumerate(progresses):
        check = int((100-value)/speeds[i])
        if check > temp:
            temp = check
            answer.append(0)
        else:
            check = temp
        stack.append(check)
        answer[-1] += 1
    return answer

처음에 제출한 코드는 위와 같다. 그런데 모두 통과하나 싶더니 테스트 케이스 11에서 오류가 나더라ㅠㅠ

고민해보다가 도저히 모르겠어서 [질문하기]를 살펴봤는데 math 모듈을 사용하면 된다는 가이드를 찾게 되었다. 프로그래머스는 테스트 케이스 통과 여부만 알려줄 뿐, 예시를 정확히 알려주지 않으니 실패 문구가 뜨면 오류를 고치느라 매번 고생하게 된다. 그게 공부겠지만...


import math

def solution(progresses, speeds):
    answer = []
    stack = []
    temp = 0
    for i, value in enumerate(progresses):
        check = math.ceil((100-value)/speeds[i])
        if check > temp:
            temp = check
            answer.append(0)
        else:
            check = temp
        stack.append(check)
        answer[-1] += 1
    return answer

math.ceil을 썼더니 바로 통과했다. 알고보니 내가 올림 / 내림 여부를 잘못 생각했던 것이었다... 수학도 못하는 바보 같으니 ....


간단하게 개념을 짚고 넘어가자면,

math 모듈 중 올림/내림 함수

  1. math.ceil()
    math.ceil 함수는 괄호 안에 실수를 입력하면 올림 하여 정수를 반환해준다.
  2. math.floor()
    math.floor 함수는 괄호 안에 실수를 입력하면 내림 하여 정수를 반환해준다.

말고도 math 모듈에는 정말 많은 함수가 있었다. 파이썬은 참 기적같은 언어다..❗


안녕 !

0개의 댓글