[프로그래머스 / C++] 배열 만들기 2

YH·2023년 12월 8일
0

문제

배열 만들기 2 : 문제 링크


문제 분석

  • 정수 lr이 주어졌을 때, l이상 r이하의 정수 중에서 숫자 "0"과 "5"로만 이루어진 모든 정수를 오름차순을 저장한 배열을 return (그러한 정수가 없다면, -1이 담긴 배열을 return)
  • 조건을 만족하는 정수를 저장할 정수형 벡터 answer를 초기화. for loop의 초기화식을 l, 조건문을 r이하로 설정하여 l과 r사이의 정수를
    순환하고, to_string() 함수를 통해 정수를 문자열로 변환하여 문자열 num에 저장. if문을 사용하여 정수가 5의 배수일 경우, 정수의 구성 숫자가 "0"과 "5"만 있는지 확인할 정수 check를 0으로 초기화. for loop와 if ~ else문을 통해 문자열 처음부터 마지막까지 확인하여 "0"과 "5"로만 이루어진 경우 check를 1로 저장하고, 그렇지 않은 경우 check를 0으로 저장하고 loop 탈출. check가 1일 경우 조건을 만족하므로 answer에 해당 정수를 저장. empty() 함수를 통해 answer이 비어있는것을 확인했다면 조건을 만족하는 정수가 없음을 의미하므로 answer에 -1을 저장. 최종적으로 저장된 answer을 return

empty() 함수 사용법
str.empty();
v.empty();

  • string 또는 vector 객체가 비어있으면 1을, 문자열 또는 원소가 저장되어 있으면 0을 반환

풀이

#include <string>
#include <vector>

using namespace std;

vector<int> solution(int l, int r) {
    vector<int> answer;
    
    for(int i = l; i <= r; ++i) {
        string num = to_string(i);
        if(i % 5 == 0) {
            int check = 0;
            for(int j = 0; j < num.size(); ++j) {
                if(num[j] == '0' || num[j] == '5') check = 1;
                else {
                    check = 0;
                    break;
                }
            }
            if(check) answer.push_back(i);
        }
    }
    if(answer.empty()) answer.push_back(-1);
    return answer;
}
profile
Keep Recycling Your Dreams

0개의 댓글