Lv. 1 🌱
https://school.programmers.co.kr/learn/courses/30/lessons/12933
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.
제한 조건
- n은 1이상 8000000000 이하인 자연수입니다.
입출력 예
n | return |
118372 | 873211 |
해결방법
c++ 로 알고리즘을 푸는게 오랜만이라서 기본적인 문제를 풀면서 문법을 익히는중이다. 이 문제는 n의 자릿수를 구해서 vector를 만들어 넣고, 내림차순으로 정렬한다. sort를 쓸 때, 기본은 내림차순이지만 sorting해주는 함수를 만들 수 있다. return i < j 이면 뒤에 있는걸 더 크게 만들겠다(오름차순), return i > j 이면 앞에 있는걸 더 크게 만들겠다(내림차순) 으로 이해하면 쉽다.
코드
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool compare(int i, int j)
{
return i > j;
}
long long solution(long long n) {
long long answer = 0;
vector<int> v;
while (n != 0)
{
v.push_back(n % 10);
n /= 10;
}
sort(v.begin(), v.end(), compare);
for (int i = 0; i < v.size(); i++)
answer = answer * 10 + v[i];
return answer;
}
'컴퓨터과학 > 알고리즘' 카테고리의 다른 글
[알고리즘] 백준 1620 - 나는야 포켓몬 마스터 이다솜 (0) | 2023.01.20 |
---|---|
[알고리즘] 백준 10814 - 나이순 정렬 (0) | 2023.01.19 |
[알고리즘] 백준 11650 - 좌표 정렬하기 (0) | 2023.01.18 |
[알고리즘] 백준 11478 - 서로 다른 부분 문자열의 개수 (0) | 2023.01.18 |
[알고리즘] 프로그래머스 - 문자열을 정수로 바꾸기 (0) | 2023.01.18 |