๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค/2๋‹จ๊ณ„

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Lv2] : ๊ฐ€์žฅ ํฐ ์ˆ˜

by Jaeguk 2022. 6. 29.
๋ฌธ์ œ ๋งํฌ

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

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๊ฐ€์žฅ ํฐ ์ˆ˜

0 ๋˜๋Š” ์–‘์˜ ์ •์ˆ˜๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ •์ˆ˜๋ฅผ ์ด์–ด ๋ถ™์—ฌ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ์•Œ์•„๋‚ด ์ฃผ์„ธ์š”. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ฃผ์–ด์ง„ ์ •์ˆ˜๊ฐ€ [6, 10, 2]๋ผ๋ฉด [6102, 6210, 1062, 1026, 2610, 2106]๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ , ์ด์ค‘ ๊ฐ€์žฅ ํฐ

programmers.co.kr

์ฃผ์–ด์ง„ ์ •์ˆ˜๋ฅผ ์ด์–ด๋ถ™์—ฌ์„œ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ๋ฌธ์ œ.

 

ํ’€์ด
  • ์ฒซ๋ฒˆ์งธ ์•„์ด๋””์–ด

next_permutation์„ ์ด์šฉํ•ด์„œ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ์ •์ˆ˜ ์กฐํ•ฉ์„ ๋งŒ๋“  ๋’ค์— ์ •๋ ฌ์„ ์ด์šฉํ•ด์„œ ๊ฐ€์žฅ ํฐ ์ •์ˆ˜๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.

๋ฌผ๋ก  ์ด ์•„์ด๋””์–ด๊ฐ€ ํ‹€๋ฆฐ ์•„์ด๋””์–ด๋Š” ์•„๋‹ˆ์ง€๋งŒ, ์ •์ˆ˜๋Š” ์ตœ๋Œ€ 100,000๊ฐœ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์šฐ๋ฆฌ๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ์กฐํ•ฉ์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜๋Š” 100000 ํŒฉํ† ๋ฆฌ์–ผ ๊ฐœ์˜ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ๋„ˆ๋ฌด ๋งŽ๊ธฐ๋•Œ๋ฌธ์— ์‹œ๊ฐ„์ดˆ๊ณผ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

  • ๋‘๋ฒˆ์งธ ์•„์ด๋””์–ด

๋จผ์ € ์ฃผ์–ด์ง„ ์ •์ˆ˜๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊พผ ํ›„์—, ์ •๋ ฌํ•ด์ค€๋‹ค.

๋ฌธ์ž์—ด์„ ์ •๋ ฌํ•˜๊ฒŒ ๋˜๋ฉด ์‚ฌ์ „์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜๊ธฐ ๋•Œ๋ฌธ์—

"5" ์™€ "31"์ด ์žˆ๋‹ค๋ฉด ์ˆซ์ž์ƒ์œผ๋กœ๋Š” 5 < 31 ์ด์ง€๋งŒ ์‚ฌ์ „์ˆœ์œผ๋กœ๋Š” "5" > "31" ์ด๊ธฐ ๋•Œ๋ฌธ์— 5๊ฐ€ ์•ž์„ ๋‹ค.

์ •๋ ฌํ•œ ๋ฌธ์ž์—ด๋“ค์„ ์ˆœ์„œ๋Œ€๋กœ ์ด์–ด ๋ถ™์ธ๋‹ค.

์ด ๊ฒฝ์šฐ์—๋Š” ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

๋งŒ์•ฝ "3" ๊ณผ "30" ์ด ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค๋ฉด, "30" > "3" ์ด๊ธฐ ๋–„๋ฌธ์— ์ •๋ ฌ ํ›„ ์ด์–ด๋ถ™์ด๋ฉด "303"์ด ๋œ๋‹ค.

"303"์€ "330"๋ณด๋‹ค ์ž‘๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฐ ๊ฒฝ์šฐ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

์ด ๋‘ ๊ฐ€์ง€ ์•„์ด๋””์–ด ์™ธ์— ๋„์ €ํžˆ ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ์ง€ ์ƒ๊ฐ์ด ์•ˆ๋‚˜์„œ ๊ณ ๋ฏผ๋์— ๊ฒฐ๊ตญ ๊ตฌ๊ธ€์— ์ฐพ์•„๋ณด๊ฒŒ ๋˜์—ˆ๋‹ค.

๋ฉํ† ๋‹˜์˜ ๋ธ”๋กœ๊ทธ๊ฐ€ ์ œ์ผ ์œ„์— ์žˆ์–ด์„œ ๋ฉํ† ๋‹˜์˜ ์•„์ด๋””์–ด๋ฅผ ์ฐธ๊ณ ํ–ˆ๋‹ค.

 

์ฐธ๊ณ  ๋งํฌ

https://mungto.tistory.com/22

 

๊ฐ€์žฅ ํฐ ์ˆ˜ C++ (์ •๋ ฌ)[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]

โ€ป ์ €์˜ ํ’€์ด๊ฐ€ ๋ฌด์กฐ๊ฑด์ ์ธ ์ •๋‹ต์€ ์•„๋‹™๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์ฝ”๋“œ๊ฐ€ ์ข€๋” ํšจ์œจ์ ์ด๊ณ  ์ข‹์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ์‚ฌ๋žŒ๋“ค์˜ ํ’€์ด๋Š” ์–ธ์ œ๋‚˜ ์ฐธ๊ณ ๋งŒ ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๋ฌธ์ œ ์ฃผ์†Œ์ž…๋‹ˆ๋‹ค. https://programmers.co.kr/learn/c

mungto.tistory.com

 

์ •๋ ฌํ•  ๋•Œ, ๋‘ ๋ฌธ์ž์—ด์„ ๋น„๊ตํ•ด์„œ ๋‘ ๋ฌธ์ž์—ด์„ ์ด์–ด๋ถ™์˜€์„ ๋•Œ ๋” ํฐ ์ˆ˜๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์ˆ˜๊ฐ€ ์•ž์— ์˜ค๋„๋ก ํ•œ๋‹ค.

์ด๊ฒŒ ๋ฌด์Šจ ๋ง์ด๋‚˜๋ฉด ์ •๋ ฌํ•  ๋•Œ ๋‘ ์ˆ˜๋ฅผ ๋น„๊ตํ•ด์„œ ์ •๋ ฌํ•˜๊ฒŒ ๋˜๋Š”๋ฐ,

๋ฌธ์ž์—ด A์™€ B๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•˜์ž. AB > BA ๋ฉด A๋ฅผ ๋” ์•ž์„œ๋Š” ๊ฒƒ์œผ๋กœ ํŒ๋‹จํ•œ๋‹ค.

์•„๊นŒ์ฒ˜๋Ÿผ "3" ๊ณผ "30" ์ด ์žˆ์„ ๋–„, "3" + "30" ์„ ํ•˜๋Š” ๊ฒƒ์ด "30" + "3"์„ ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ํฐ ์ˆ˜๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ •๋ ฌํ–ˆ์„ ๋•Œ "3"์ด "30"๋ณด๋‹ค ์•ž์— ์˜ค๋„๋ก ํ•œ๋‹ค.

 

์ฝ”๋“œ ์ž‘์„ฑ
 
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
 
bool cmp(const string& a, const string& b){
    return a + b > b + a;
}
 
string solution(vector<int> numbers) {
    string answer = "";
    vector<string> nums;
    for(auto num : numbers)
        nums.push_back(to_string(num));
    sort(nums.begin(), nums.end(), cmp);
    if(nums[0== "0")
        return "0";
    for(auto str : nums)
        answer += str;
    return answer;
}
cs

 

๋น„๊ตํ•จ์ˆ˜๋ฅผ ๋‚ด ์ž„์˜๋กœ ์ •์˜ํ•  ๋•Œ ๋ฌธ์ž์—ด๋ผ๋ฆฌ ๋น„๊ต๋„ ์žฌ์ •์˜๊ฐ€ ๊ฐ€๋Šฅํ•œ์ง€ ์ฒ˜์Œ์•Œ์•˜๋‹ค.

๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•  ๋•Œ ์™ธ์—๋Š” ์จ๋ณธ์ ์ด ์—†์—ˆ๋Š”๋ฐ ์˜ค๋Š˜ ์ƒˆ๋กœ์šด ์‚ฌ์‹ค์„ ์•Œ๊ฒŒ๋๋‹ค.

728x90