๐Ÿ•๏ธ ICPC Sinchon/Greedy

[BOJ S4][C++] ๋ฐฑ์ค€ 10610๋ฒˆ: 30

์„ ๋‹ฌ 2021. 7. 23. 14:01
๋ฐ˜์‘ํ˜•

https://www.acmicpc.net/problem/10610

 

10610๋ฒˆ: 30

์–ด๋Š ๋‚ , ๋ฏธ๋ฅด์ฝ”๋Š” ์šฐ์—ฐํžˆ ๊ธธ๊ฑฐ๋ฆฌ์—์„œ ์–‘์ˆ˜ N์„ ๋ณด์•˜๋‹ค. ๋ฏธ๋ฅด์ฝ”๋Š” 30์ด๋ž€ ์ˆ˜๋ฅผ ์กด๊ฒฝํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ทธ๋Š” ๊ธธ๊ฑฐ๋ฆฌ์—์„œ ์ฐพ์€ ์ˆ˜์— ํฌํ•จ๋œ ์ˆซ์ž๋“ค์„ ์„ž์–ด 30์˜ ๋ฐฐ์ˆ˜๊ฐ€ ๋˜๋Š” ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ์–ดํ•œ

www.acmicpc.net

๋ฌธ์ œ

์–ด๋Š ๋‚ , ๋ฏธ๋ฅด์ฝ”๋Š” ์šฐ์—ฐํžˆ ๊ธธ๊ฑฐ๋ฆฌ์—์„œ ์–‘์ˆ˜ N์„ ๋ณด์•˜๋‹ค. ๋ฏธ๋ฅด์ฝ”๋Š” 30์ด๋ž€ ์ˆ˜๋ฅผ ์กด๊ฒฝํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ทธ๋Š” ๊ธธ๊ฑฐ๋ฆฌ์—์„œ ์ฐพ์€ ์ˆ˜์— ํฌํ•จ๋œ ์ˆซ์ž๋“ค์„ ์„ž์–ด 30์˜ ๋ฐฐ์ˆ˜๊ฐ€ ๋˜๋Š” ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ์–ดํ•œ๋‹ค.

๋ฏธ๋ฅด์ฝ”๋ฅผ ๋„์™€ ๊ทธ๊ฐ€ ๋งŒ๋“ค๊ณ  ์‹ถ์–ดํ•˜๋Š” ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋ผ.

์ž…๋ ฅ

N์„ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. N๋Š” ์ตœ๋Œ€ 105๊ฐœ์˜ ์ˆซ์ž๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉฐ, 0์œผ๋กœ ์‹œ์ž‘ํ•˜์ง€ ์•Š๋Š”๋‹ค.

์ถœ๋ ฅ

๋ฏธ๋ฅด์ฝ”๊ฐ€ ๋งŒ๋“ค๊ณ  ์‹ถ์–ดํ•˜๋Š” ์ˆ˜๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด ๊ทธ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋ผ. ๊ทธ ์ˆ˜๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, -1์„ ์ถœ๋ ฅํ•˜๋ผ.

 

ํ’€์ด

1. 30์˜ ๋ฐฐ์ˆ˜๊ฐ€ ๋˜๋Š” ์กฐ๊ฑด์„ ์ž˜ ์ƒ๊ฐํ•ด์•ผํ•œ๋‹ค.

1-1) 3์˜ ๋ฐฐ์ˆ˜ = ๊ฐ ์ž๋ฆฌ์ˆ˜์˜ ํ•ฉ์ด 3์˜ ๋ฐฐ์ˆ˜ -> ๊ฐ ์ž๋ฆฌ์ˆ˜์˜ ํ•ฉ % 3 == 0 ์ด๋ฉด ๋œ๋‹ค

1-2) 10์˜ ๋ฐฐ์ˆ˜ = ๋งˆ์ง€๋ง‰์ด 0์œผ๋กœ ๋๋‚จ -> ์ฃผ์–ด์ง„ ์ˆซ์ž๋“ค์ค‘ 0์ด ์กด์žฌํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค

 

2. ์กฐ๊ฑด 1์„ ๋งŒ์กฑํ•˜๋Š” ๊ฒƒ๋“ค ์ค‘ ๊ฐ€์žฅ ํฐ ์ˆ˜

=> ์กฐ๊ฑด 1์„ ๋งŒ์กฑํ•˜๋Š” ์ˆ˜๋ผ๋Š” ๊ฒƒ์ด ๋ฐํ˜€์ง€๋ฉด ํฐ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌ

(0์€ ์–ด์ฐจํ”ผ ๋งจ ๋์— ๊ฐ€๊ฒŒ ๋จ)

 

๋งŒ์•ฝ 4%์—์„œ ํ‹€๋ ธ์Šต๋‹ˆ๋‹ค ๊ฐ€ ๋œฌ๋‹ค๋ฉด

์ž…๋ ฅ๊ฐ’์˜ ๋ฒ”์œ„๋ฅผ ์ž˜ ๋ณด์ž... ์ตœ๋Œ€๊ฐ€ 100000๊ฐ€ ์•„๋‹ˆ๋ผ ์ž๋ฆฟ์ˆ˜๊ฐ€ 100000์ด๋‹ค....

int๋Š” ๋ฌผ๋ก ์ด๊ณ  long long ์œผ๋กœ๋„ ํ„ฑ์—†์ด ๋ถ€์กฑํ•˜๋‹ค

์• ์ดˆ์— string์œผ๋กœ ์ž…๋ ฅ์„ ๋ฐ›๊ณ  ์ฒ˜๋ฆฌํ•ด์ค˜์•ผํ•œ๋‹ค.

 

// Authored by : seondal
// Co-authored by : -

// #include <bits/stdc++.h>
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

bool isMultiple(string &s){
    int sum=0;
    for(int i=0; i<s.size(); i++)
        sum += s[i]-'0';
    
    // ๋งŒ์•ฝ ๊ฐ ์ž๋ฆฌ์˜ ํ•ฉ์ด 3์˜ ๋ฐฐ์ˆ˜์ด๊ณ , ๊ฐ€์žฅ ์ž‘์€ ์ˆซ์ž๊ฐ€ 0์ด๋ฉด(=0์ด ํฌํ•จ๋˜์–ด์žˆ๋‹ค๋ฉด)
    if(sum%3==0 && s[0]=='0')
        return true;
    
    return false;
}

string solution(string s){
    sort(s.begin(), s.end());
    
    if(isMultiple(s)) {
        reverse(s.begin(), s.end());
        return s;
    }
    
    return "-1";
}

int main() {
    ios_base :: sync_with_stdio(false);
    cin.tie(NULL); cout.tie(NULL);

    string s;
    cin >> s;
    
    cout << solution(s);
    
    return 0;
}

/*
 */
๋ฐ˜์‘ํ˜•