본문 바로가기
코드카타/코딩테스트

정수 내림차순으로 배치하기

by WaDDak 2024. 8. 19.

https://school.programmers.co.kr/learn/courses/30/lessons/12933

 

프로그래머스

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

programmers.co.kr

 

 

C++ 풀이 :

#include <string>
#include <vector>


long long solution(long long n) 
{
    std::string Str = std::to_string(n);
    std::vector<int> Vec;
    
    int A = '9';
    int B = 9;

    while (0 <= B)
    {
        for (size_t i = 0; i < Str.size(); i++)
        {
            if (Str.c_str()[i] == A)
            {
                Vec.push_back(B);
            }

        }

        A -= 1;
        B -= 1;
    }

    long long answer = 0;

    for (size_t i = 0; i < Vec.size(); i++)
    {
        answer = answer * 10 + static_cast<long long>(Vec[i]);
    }


    return answer;
}

이전에 풀었던 방식이다.

새롭게 다시한번 풀어보자.

 

새로운 풀이 : 

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

long long solution(long long n) 
{
    long long answer = 0;
    
    string Strnum = to_string(n);
    sort(Strnum.begin(), Strnum.end(), greater<int>());
    
    answer = stol(Strnum);
        
    return answer;
}

 

코드 설명 :

  1. Strnum = to_stirng(n) => n을 문자열로 변환한 값을 Strunm에 할당. 
  2. sort를 사용하여 Strnum을 크기가 큰 순서로 나열 => 아스키코드로 비교하기 때문에 문자열도 크기 비교가 가능.
  3. 정렬된 문자를 다시 숫자형으로 변환. 여기서 stoi를 사용하게되면 long long의 데이터를 전부 담지 못해서 에러가 발생했었는데 string to long long 이라는 stol 함수가 있어서 그것을 사용했다.

 

JS 풀이 :

function solution(n) {
    let answer = 0;
    
    let Strnum = n + "";
    answer = Strnum;
    answer = Strnum.split('');
    answer.sort((a, b) => b - a);
    answer = answer.join("");
    answer = parseInt(answer);
    
    
    return answer;
}

 

코드 설명 : 

  1. 숫자인 n을 + "" 를 통해 문자열로 변환해주고, split을통해 각 숫자마다 끊어 배열로 만들어준다.
  2. sort를 통해 a,b를 비교하여 b가 a보다 앞에 오는 경우로 정렬해준다.
  3. join("") 사용하면 배열의 모든 요소를 구분자 없이 연결할 수 있다. join() 만을 사용하면 구분자로 쉼표가 들어간다.
  4. 그렇게 합친문자를 parseInt를 통해 숫자로 되돌려주면 끝

'코드카타 > 코딩테스트' 카테고리의 다른 글

서울에서 김서방 찾기  (0) 2024.08.20
하샤드 수  (0) 2024.08.20
정수 제곱근 판별  (0) 2024.08.19
문자열을 정수로 바꾸기  (0) 2024.08.19
도둑질  (0) 2024.08.16