Thief of Wealth

https://programmers.co.kr/learn/courses/30/lessons/42883

 

코딩테스트 연습 - 큰 수 만들기

 

programmers.co.kr

 

핵심은

 

최종적으로 출력해야할 (문자열의 길이-1) 만큼 뒷문자열을 남겨두고,

 

앞의 문자열에서 최대값을 찾아 하나씩 넣어주는 것이다.

입력값이 "4177252841", 4 이면,

 

최종적으로 출력해야할 길이는 10-4 = 6이다.

 

1. (1)6-1=5 만큼 뒤에 남겨둔다. (6의자리를 찾는것)

1. (2) 41772 52841

1. (3) 앞의 문자열에서 최대값을 찾는다.

1. (4) 첫번째 "7" (answer = "7")

1. (5) 찾은 인덱스의 앞까지 버린다. (찾을 필요없음) => 7252841

1. (6) 최종적으로 출력해야할값을 -1해준다 => 5

 

2. (1) 5-1 = 4만큼 뒤에 남겨둔다. (5의 자리를 찾는것)

2. (2) 725 2841

2. (3) 앞의 문자열에서 최대값을 찾는다. 

2. (4) "7" (answer = "77")

2. (5) 찾은 인덱스의 앞까지 버린다. (찾을 필요없음) => 252841

2. (6) 최종적으로 출력해야할값을 -1해준다 => 4

 

3. (1) 4-1 = 3만큼 뒤에 남겨둔다. (4의 자리를 찾는것)

3. (2) 252 841

3. (3) 앞의 문자열에서 최대값을 찾는다. 

3. (4) "5" (answer = "775")

3. (5) 찾은 인덱스의 앞까지 버린다. (찾을 필요없음) => 2841

3. (6) 최종적으로 출력해야할값을 -1해준다 => 3

 

4. (1) 3-1 = 2만큼 뒤에 남겨둔다. (3의 자리를 찾는것)

4. (2) 28 41

4. (3) 앞의 문자열에서 최대값을 찾는다. 

4. (4) "8" (answer = "7758")

4. (5) 찾은 인덱스의 앞까지 버린다. (찾을 필요없음) => 41

4. (6) 최종적으로 출력해야할값을 -1해준다 => 2

 

5. (1) 2-1 = 1만큼 뒤에 남겨둔다. (2의 자리를 찾는것)

5. (2) 4 1

5. (3) 앞의 문자열에서 최대값을 찾는다. 

5. (4) "4" (answer = "77584")

5. (5) 찾은 인덱스의 앞까지 버린다. (찾을 필요없음) => 1

5. (6) 최종적으로 출력해야할값을 -1해준다 => 1

 

6. (1) 1-1 = 0만큼 뒤에 남겨둔다. (1의 자리를 찾는것)

6. (2) 1

6. (3) 앞의 문자열에서 최대값을 찾는다. 

6. (4) "1" (answer = "775841")

6. (5) 찾은 인덱스의 앞까지 버린다. (찾을 필요없음) => ""

6. (6) 최종적으로 출력해야할값을 -1해준다 => 0 => 종료

 

정답: "775841"

 

 

function solution(number, k) {
  let answer = "";
  let fin_len = number.length - k;
  while (fin_len) {
    let target = number.slice(0, number.length - (fin_len - 1));
    for (let i = 9; i >= 0; i--) {
      let idx = target.indexOf(`${i}`);
      if (idx !== -1) {
        answer += `${i}`;
        number = number.slice(idx + 1);
        fin_len--;
        break;
      }
    }
  }

  return answer;
}

'개발 > 알고리즘' 카테고리의 다른 글

[Programmers] H-index  (0) 2020.09.11
[백준] 계단 오르기  (0) 2020.09.05
[Programmers] 스킬트리  (0) 2020.09.01
[Programmers] 다리를 지나는 트럭  (0) 2020.08.31
[Programmers] 문자열 내림차순으로 정렬하기  (0) 2020.08.30
profile on loading

Loading...