본문 바로가기

코딩테스트

[프로그래머스(Programmers) /Level2](Python) 큰 수 만들기



 

 

<내 코드>

 

 

<풀이과정>

문자열의 길이만큼 for문을 돌며 해당 인덱스의 문자가 리스트의 마지막 원소보다 작거나 같으면 리스트에 넣어주고, 

보다 크면 경우를 나눠서 리스트의 마지막 원소부터 역으로 순회하며 리스트의 각 원소보다 크면 해당 원소를 리스트에서 

제거, k를 1감소 시켜준다. 이때, k가 0이되면 break로 탈출시킨다. 만약 answer의 j번째 원소가 number[i]보다 크면 리스트에

number[i]를 추가시키고 break를 걸어준다. flag를 둔 이유는 for문의 끝까지 number[i]가 추가 되지 않았을경우 추가 해

주기 위함이다. 이렇게 이중 포문을 돌게 되면 원하는 결과값인 k개의 수를 제거한 최대값이 나오거나 내림차순으로 정렬된 answer

리스트가 만들어 지는데 마지막으로 k가 0이될때 까지 pop만 해주고 리스트를 문자열로 변환시키면 원하는 결과값이 return된다.

 

<느낀점>

코딩을 시작하기 전에 완벽한 알고리즘을 생각해 놓지 않으면, 계속해 반례가 튀어나와 코드를 계속 수정해야 한다는 사실과,

파이썬에서 리스트는 아주 유용하다는 점(초반에 answer을 빈 문자열로 두고 풀었는데 생각보다 까다로워서 리스트로 바꾸었다.)

을 배운 좋은 문제였다.