[코딩테스트/프로그래머스/Python]큰 수 만들기

Enter·2021년 7월 16일
0

코딩테스트

목록 보기
16/68

💡생각

  1. number의 길이에서 K만큼 뺀 것을 count변수에 넣는다.
  2. number에서 [0]부터 [-count]까지의 수중에 max값을 구하고 count에 -1을 해준다.
  3. max값 인덱스 부터 [-count]까지의 수 중에 max값을 또 구하고 count에 -1을 해준다.
  4. count가 0이 될 때까지 반복한다.



❓잘못된 코드1

최댓값이 중복될 경우 잘못된 인덱스가 가져와질 수 있다는 생각을 하지 못했음.


해결: number_list에서 사용했던 숫자들과 필요없는 숫자들은 제거하기로 함.



❓잘못된 코드2

테스트9,10번이 시간초과로 통과하지 못함.

number: 문자열 형식으로 숫자
k: 제거할 수의 개수
answer: number에서 k 개의 수를 제거했을 때 만들 수 있는 수 중 가장 큰 숫자
number_list : number을 list형식으로 바꾼 것
maxnum: 정해진 index사이에서 가장 큰 숫자
count: number의 길이에서 k만큼 뺀 수


count가 0이 될 때까지 while문을 반복한다.
만약 count가 1이 아니라면 number_list에서 자릿수를 보장할 수 있는 수(count)까지의 인덱스 안에서 max값을 뽑아 maxnum에 넣어준다.
그리고 answer에 maxnum을 문자열로 바꿔 넣어 더해주고 count에 -1을 해준뒤 number_list에서 사용했던 숫자들과 필요없는 숫자들은 제거한다.
만약 count가 1이라면 전체 number_list에서 max값을 뽑아 maxnum에 넣어주고 answer에 maxnum을 문자열로 바꿔 넣어 더해주다.
그리고 count에 -1을 해주면 count가 0이되어 반복문을 빠져나온다.


해결: 시간이 너무 많이 걸려서 해결하려면 max함수를 사용하지말고 그리디하게 풀라고 하게 풀어야한다고 한다. 테스트 6,7,8,9,10 시간이 답이 없는걸보니...다음에 풀어야겠다...



💡테스트 통과한 코드



⏬다른사람의 코드










🔗프로그래머스 - 큰 수 만들기
https://programmers.co.kr/learn/courses/30/lessons/42883

profile
Cherish the moment :)

0개의 댓글