[프로그래머스/C++] ㅡ LV1 - 정수 내림차순으로 배치하기

2021. 3. 27. 17:31·dev/코딩테스트(프로그래머스)

문제

programmers.co.kr/learn/courses/30/lessons/12933

 

코딩테스트 연습 - 정수 내림차순으로 배치하기

함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다. 제한 조건 n은 1이

programmers.co.kr

풀이

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

using namespace std;

long long solution(long long n) {
    string s = to_string(n);
    vector<int> a;
    for (int i=0; i<s.size(); i++) {	// vector a 에 대입
        a.push_back(s[i]-'0');
    }
    sort(a.begin(), a.end(), greater<int>());	// 내림차순으로 sort
    s = "";
    for (int i=0; i<a.size(); i++) {	// string에 대입
        s+=to_string(a[i]);
    }
    long long answer = stoll(s);	// long long으로 형변환
    return answer;
}

개념

to_string()은 숫자타입(int, long 등)의 데이터를 string으로 바꾸는 함수이다.

stoll()은 string을 long long으로 바꿔주는 함수이다.


 

풀이

처음 문제를 봤을 때, 바로 생각나는 방법으로 문제를 풀었다.

 

숫자 -> 문자열

이유 : 자릿수 별로 값을 옮기기 위해

 

문자열 -> 숫자(vector)

이유 : 숫자를 통해 sort 하기 위해

 

숫자 -> 문자열

이유 : 자릿수 별로 값을 옮기기 위해

 

문자열 -> 숫자

이유 : 출력을 위해

 

그 과정에서 s는 초기화한뒤 한번 더 사용했다.

 


+a

위 방식은 형변환이 너무 많아 번거롭다.

사실 숫자가 아니여도 sort 할 수 있다.

이 경우 아스키코드에 따라 사전순 나열이 되는데, 이렇게 하면 vector를 사용하지 않아도 된다.

그리고 문자열-> 숫자, 숫자-> 문자열의 과정을 없애도 된다.

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

using namespace std;

long long solution(long long n) {
    string s = to_string(n);
    sort(s.begin(), s.end(), greater<char>());
    long long answer = stoll(s);
    return answer;
}

'dev > 코딩테스트(프로그래머스)' 카테고리의 다른 글

[프로그래머스/C++] ㅡ LV1 - 콜라츠 추측  (0) 2021.04.04
[프로그래머스/C++] ㅡ LV1 - 정수 제곱근 판별  (0) 2021.04.03
[프로그래머스/C++] ㅡ LV1 - 이상한 문자 만들기  (0) 2021.03.27
[프로그래머스/C++] ㅡ LV1 - 시저암호  (0) 2021.03.27
[프로그래머스/C++] ㅡ LV1 - 수박수박수박수박수박수?  (0) 2021.03.24
'dev/코딩테스트(프로그래머스)' 카테고리의 다른 글
  • [프로그래머스/C++] ㅡ LV1 - 콜라츠 추측
  • [프로그래머스/C++] ㅡ LV1 - 정수 제곱근 판별
  • [프로그래머스/C++] ㅡ LV1 - 이상한 문자 만들기
  • [프로그래머스/C++] ㅡ LV1 - 시저암호
dev_dev
dev_dev
C++, Python, ML, Vue
  • dev_dev
    develop about develop
    dev_dev
  • 전체
    오늘
    어제
    • 카테고리 (145) N
      • dev (144) N
        • C++ (44)
        • ML DL (1)
        • on-device AI (5) N
        • AIOT (9)
        • IOT (1)
        • 코딩테스트(백준) (49)
        • 코딩테스트(프로그래머스) (25)
        • 전자공학 (7)
        • 창업 (1)
        • 웹 (1)
        • 자격증 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    머신러닝
    decltype
    uniform initialization
    auto
    데이터 분석
    Template
    경사하강법
    COLAB
    인공지능
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
dev_dev
[프로그래머스/C++] ㅡ LV1 - 정수 내림차순으로 배치하기
상단으로

티스토리툴바