๐Ÿ–ฅ๏ธ Study Note/Coding Test

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค / level.2 / ๊ฐ€์žฅ ํฐ ์ˆ˜(C++)

Beankong_ 2023. 3. 23. 02:15

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

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

๋ฌธ์ œ ์„ค๋ช…

0 ๋˜๋Š” ์–‘์˜ ์ •์ˆ˜๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ •์ˆ˜๋ฅผ ์ด์–ด ๋ถ™์—ฌ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ์•Œ์•„๋‚ด ์ฃผ์„ธ์š”.

์˜ˆ๋ฅผ ๋“ค์–ด, ์ฃผ์–ด์ง„ ์ •์ˆ˜๊ฐ€ [6, 10, 2]๋ผ๋ฉด [6102, 6210, 1062, 1026, 2610, 2106]๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ , ์ด์ค‘ ๊ฐ€์žฅ ํฐ ์ˆ˜๋Š” 6210์ž…๋‹ˆ๋‹ค.

0 ๋˜๋Š” ์–‘์˜ ์ •์ˆ˜๊ฐ€ ๋‹ด๊ธด ๋ฐฐ์—ด numbers๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์ˆœ์„œ๋ฅผ ์žฌ๋ฐฐ์น˜ํ•˜์—ฌ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊พธ์–ด return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

์ œํ•œ ์‚ฌํ•ญ

  • numbers์˜ ๊ธธ์ด๋Š” 1 ์ด์ƒ 100,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • numbers์˜ ์›์†Œ๋Š” 0 ์ด์ƒ 1,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • ์ •๋‹ต์ด ๋„ˆ๋ฌด ํด ์ˆ˜ ์žˆ์œผ๋‹ˆ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊พธ์–ด return ํ•ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

numbers  return
[6, 10, 2] "6210"
[3, 30, 34, 5, 9] "9534330"

 

๋‚ด ํ•ด๋‹ต

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

using namespace std;

string solution(vector<int> numbers) {
    string answer = "";
    int sum = 0;          
    vector<string> strings;
    
    // ๋ฌธ์ž๋กœ ๋ณ€ํ™˜
    for(int i = 0; i < numbers.size(); ++i)
    {
        strings.push_back(to_string(numbers[i]));
        sum += numbers[i];
    }
    
    // 0๋งŒ ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ๋Š” ๊ฒฝ์šฐ ์˜ˆ์™ธ์ฒ˜๋ฆฌ
    if(sum == 0)
        return "0";
    
    // ๋‘ ๋ฌธ์ž๋ฅผ ๋”ํ–ˆ์„ ๋•Œ ๋” ํฐ ์ชฝ์„ ์šฐ์„ ํ•˜๊ฒŒ ์ •๋ ฌ ๊ธฐ์ค€์„ ์„ค์ •ํ•œ๋‹ค.
    // ex> 30 + 3 (303) < 3 + 30 (330)
    auto comp_ = [](auto a, auto b)
	{   
		return a + b > b + a;
	};
    
    // ์ •๋ ฌ
    sort(strings.begin(), strings.end(), comp_);
    
    // ์ •๋‹ต ๋ฌธ์ž์—ด ๋งŒ๋“ค๊ธฐ
    for(int i = 0 ; i < strings.size() ; ++i)
        answer += strings[i];
    
    return answer;
}