프로그래머스(Programmers) 코딩테스트 연습
Level2 그리디 큰 수 만들기 파이썬(Python) 풀이
문제풀이
총 두가지의 방법으로 문제를 풀었는데 모두 테스트케이스 10에서 시간 초과로 인해 풀지 못하였다… 그래서 정답 코드를 가지고 와서 공부를 하는 것으로 대신하겠다. 파이썬에는 스택 자료구조가 따로 없고 리스트로 스택을 흉내내서 사용할 수 있다. 정답 코드는 스택의 성질을 사용하여서 문제를 해결했다.
맞는 풀이 solution3
- stack을 흉내내는 리스트(stack이라 부르겠다.)에 number의 첫번째 값을 넣어준다(push).
- number의 두번째 값부터 반복문을 돈다.
- while문을 도는데, 조건은 세가지다.
- stack에 값이 있어야한다.
- stack의 마지막 값(stack.top)이 num보다 작아야한다.
- k가 0보다 커야한다.
- 위에 해당하지 않으면 stack에 값을 추가해준다(push).
- 조건이 해당하면, 반복문을 돌면서 stack.pop()과 k를 1씩 줄여준다.
- 반복문이 끝나고도 k가 0이 아니면 stack을 뒤에서 k만큼 slicing해준다.
- '’으로 join하여 문자열로 return한다.
틀린 풀이 solution1
- numbur의 i와 i+1을 비교한다.
- i가 i+1보다 작으면 i를 pop해준다.
- 다시 첫번째 index로 돌아가 1-2번을 반복한다.
- 남아있는 값이 len(number)-k의 길이가 아니면, 뒤에서 k만큼 slicing 해준다.
- '’으로 join하여 문자열로 return한다.
틀린 풀이 solution2
- number의 i와 j를 비교한다.
- i가 j보다 작으면 i의 인덱스를 새로운 배열에 저장한다.
- 모두 저장된 배열에 포함된 인덱스를 number에서 제거해준다.
- 남아있는 값이 len(number)-k의 길이가 아니면, 뒤에서 k만큼 slicing 해준다.
- '’으로 join하여 문자열로 return한다.
댓글남기기