[프로그래머스] 큰 수 만들기(JavaScript)

2022. 10. 24. 15:45·Algorithm/Solution
728x90

코딩테스트 연습 - 큰 수 만들기 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


난이도 : Level 2

 

풀이 과정 :

제거하려는 수가 k개라면 제거한 후 남는 문자열 길이는 문자열.length - k 이다.

 

나는 제거하려는 수를 기준으로 안두고 length-k로 만들 수 있는 최대 수를 기준으로 하였다.

 

제거 하여 가장 큰 수가 되기 위해서는

length-k (제거후 남는 문자열 길이) 가 남는 한에서 처음으로 오는 수가 가장 커야한다.

예를들어 본 예제인 1924에서 가장 처음으로 오는 수는 9 여야 하는 것

 

이러한 방식으로 반복문을 돌려주며 큰 수를 맞춰나가면 된다.

글로 설명하니 복잡한 느낌인데 코드를 보면 이해 갈 듯?

 

그리고 맨 처음에는 slice 메서드를 이용해서 배열을 잘라 최대값을 찾아주었는데

위와 같이 할 시 테스트케이스 10번에서 시간초과가 난다..

배열의 크기가 백만이고, k도 최소 1이라서 최대 연산개수가 백만*백만이라 꽤 많은 시간을 잡아먹는 것 같다.

그리고 자연수가 최대 9이기 때문에 효율성을 위해 최대 값이 9가나오면 반복문을 바로 종료시켜주었음

 

++ 추가로 다른 분 코드 보면서 알게 된점

배열이 비어있어도 pop()이 가능함 (에러나는 줄 알았음)

배열의 유효하지 않은 인덱스의 값을 반환하면 undefined

예를들어 arr[-1] 은 에러가 나는게 아니라 undefiend임..

 

 

 

 

코드 :

// 가장 큰 수가 되려면
// k의 개수가 남는 한에서 첫 숫자가 제일 커야됨
// 그다음 k-1이 남는 한에서 두번째 숫자가 제일 커야됨
// ...
function solution(number, k) {
    var answer = '';
    
    number = number.split("");
    
    let idx = 0;
    k = number.length - k;
    while(k--){                
        let max_num = -1;
        
        for(let i=idx;i<number.length-k;i++){
            if(number.length - (i+1) < k) break;
            if(max_num < number[i]) {
                max_num = number[i];
                idx = i+1;        
                if(max_num == 9) break;
            }
        }        
        answer += max_num;
  		// 큰 수가 더해지는 방식
    }
    return answer;
}

 

 

 

728x90
저작자표시 비영리

'Algorithm > Solution' 카테고리의 다른 글

[프로그래머스] 여행 경로  (0) 2022.10.27
[프로그래머스] 입국심사 (Javascript)  (0) 2022.10.21
[프로그래머스] 가장 큰 수 (JavaScript)  (0) 2022.10.21
[프로그래머스] 가장 먼 노드(JavaScirpt)  (0) 2022.10.21
[프로그래머스] 베스트앨범 (JavaScript)  (0) 2022.10.20
'Algorithm/Solution' 카테고리의 다른 글
  • [프로그래머스] 여행 경로
  • [프로그래머스] 입국심사 (Javascript)
  • [프로그래머스] 가장 큰 수 (JavaScript)
  • [프로그래머스] 가장 먼 노드(JavaScirpt)
BeNI
BeNI
코딩하는 블로그
  • BeNI
    코딩못하는컴공
    BeNI
  • 전체
    오늘
    어제
    • Menu (253)
      • My profile (1)
      • 회고 | 후기 (8)
      • Frontend (65)
        • Article (11)
        • Study (35)
        • 프로그래머스 FE 데브코스 (19)
      • Backend (0)
      • Algorithm (58)
        • Solution (46)
        • Study (12)
      • Major (111)
        • C&C++ (23)
        • Java (20)
        • Data Structure (14)
        • Computer Network (12)
        • Database (15)
        • Linux (6)
        • Architecture (3)
        • Lisp (15)
        • OS (1)
        • Security (2)
      • etc (2)
  • 링크

    • 깃허브
    • 방명록
  • 인기 글

  • 최근 댓글

  • 최근 글

  • 태그

    react
    자료구조
    백준
    리팩토링
    lisp
    프로그래머스
    C++
    Algorithm
    데브코스
    파일처리
  • hELLO· Designed By정상우.v4.10.2
BeNI
[프로그래머스] 큰 수 만들기(JavaScript)
상단으로

티스토리툴바