상세 컨텐츠

본문 제목

[백준/실버4] 백준 10610번 30 - c++ (수학/그리디 알고리즘/ 문자열/ 정렬/ 정수론) 문제 해석/코드 설명

알고리즘/C++

by 셉인 2024. 3. 18. 20:51

본문

728x90

[백준/실버4] 백준 10610번 30 - c++ (수학/그리디 알고리즘/ 문자열/ 정렬/ 정수론) 문제 해석/코드 설명

중요 포인트

- N는 최대 10^5개의 숫자로 구성

- 30의 배수의 특징 

1. 0이 들어가 있어야 한다.

2. 원소의 합이 3의 배수여야 한다. 

 

코드

#include <iostream>
#include <algorithm>

using namespace std;


int main (){
    ios_base::sync_with_stdio(false); 
    cin.tie(nullptr); cout.tie(nullptr);
    string num=""; //10^5까지니깐 string으로 받아줌
    cin >> num;
    
    sort(num.begin(), num.end(), greater<char>()); //내림차순 정렬
    
    bool zero=0;
    long long sum =0;
    
    for(int i=0; i<num.size(); i++){
       if (num[i] == '0') { //0의 유무 파악
           zero = 1;
       }
       sum +=num[i]-'0'; //개별 원소의 총 합
    }
    
    if(sum%3==0&&zero==1){ //원소의 총 합이 3의 배수이고 0이 포함됨
        
        cout << num;
    }
    else{
        cout << -1;
    }
    
    return 0;
}

 

한끗 차이로 난리치다가 5트만에 성공한 .. 

728x90

관련글 더보기

댓글 영역