Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- enumerate
- 부등호
- 함수화
- 매직 넘버
- 가이드
- 중첩
- 변수명
- 그리디
- 힙
- min heap
- 대소 비교
- 코딩테스트
- boolean
- 프로그래머스
- 가독성
- John Sonmez
- 임시 변수
- max-heap
- ZIP
- 중간 변수
- 2020 채용
- 중첩문
- 조합
- permutations
- 파이썬
- deque
- 함수
- 커리어
- 스택/큐
- 탈출 조건
Archives
- Today
- Total
Better Code, Better Life
큰 수 만들기 - 프로그래머스 - 파이썬 풀이 본문
문제 풀이
-
주어진 number 에서 순차적으로 각 숫자가 넣을만한 숫자인지 비교해봅니다.
- 앞으로 넣어야 할 숫자가 스택에 있는 마지막 숫자보다 크다면 마지막 숫자를 pop 해줍니다.
- 이 때 k(제거해야 할 숫자의 수)가 0보다 커야 합니다.
- 또한 스택이 비어있다면 넘어갑니다.
- 이 로직을 pop_until_condition 에 구현합니다.
-
1번에서 넣을만한 숫자는 다 candidates에 넣었습니다. 이제 k가 0이 될 때까지 숫자를 제거해주어야 합니다.
pop_until_zero
-
candidates 안의 숫자들을 하나의 문자열로 합치면 정답을 구할 수 있습니다.
클린 코드 작성법
- stack 과 같은 자료구조를 명시하는 변수명 대신 candidates 처럼 구체적으로 변수가 의미하는 바가 드러나게 변수명을 짓습니다.
- number_str 처럼 변수가 특이한 경우 자료형을 변수명 뒤에 붙여줍니다.
- 최대한 for문 중첩을 줄이기 위해 함수를 이용합니다.
- 함수명을 통해 주석을 대신합니다.
해답 코드
def solution(numbers, k):
candidates = []
for number_str in numbers:
candidates, k = pop_until_condition(candidates, k, number_str)
candidates.append(number_str)
candidates = pop_until_zero(candidates, k)
answer = "".join(candidates)
return answer
def pop_until_condition(candidates, k, number_str):
while True:
if k <= 0 or is_not_bigger_than_last(candidates, number_str):
break
else:
k -= 1
candidates.pop()
return candidates, k
def is_not_bigger_than_last(candidates, number_str):
is_not_bigger = False
if not candidates:
is_not_bigger = True
elif number_str <= candidates[-1] :
is_not_bigger = True
return is_not_bigger
def pop_until_zero(candidates, k):
while k != 0:
k -= 1
candidates.pop()
return candidates
도움이 됐다면 공감버튼을 눌러주세요! 질문이 있다면 댓글 달아주세요!
코딩테스트 연습 - 큰 수 만들기 | 프로그래머스
programmers.co.kr
'Coding Test > Programmers' 카테고리의 다른 글
구명보트 - 프로그래머스 - 파이썬 풀이 (0) | 2020.08.08 |
---|---|
조이스틱 - 프로그래머스 - 파이썬 풀이 (0) | 2020.08.05 |
체육복 - 프로그래머스 - 파이썬 풀이 (0) | 2019.10.11 |
카펫 - 프로그래머스 - 파이썬 풀이 (0) | 2019.08.26 |
숫자 야구 - 프로그래머스 - 파이썬 풀이 (0) | 2019.08.22 |