#include <string>
#include <vector>
using namespace std;
vector<int> solution(int l, int r) {
vector<int> answer;
int temp;
int a;
for(int i =l; i<=r; i++){
temp = i;
a=1;
while(temp>0){
if(temp%10 != 5 && temp%10 != 0){
a=0;
break;
}
temp /= 10;
}
if(a) answer.push_back(i);
}
if(answer.size()==0) answer.push_back(-1);
return answer;
}
- 이 함수는 주어진 정수가 "0"과 "5"만으로 이루어져 있는지 확인하는 역할을 합니다.
- 주어진 정수 n의 각 자릿수를 확인하기 위해, n이 0이 될 때까지 반복문을 실행합니다.
- n % 10 연산은 n의 가장 낮은 자릿수 (즉, 일의 자리)의 숫자를 반환합니다.
- 해당 자릿수가 "0" 또는 "5"가 아니라면, false를 반환하여 해당 숫자가 조건을 만족하지 않음을 나타냅니다.
- n /= 10 연산은 n의 가장 낮은 자릿수를 제거합니다. 이를 통해 다음 반복에서는 다음 자릿수를 검사하게 됩니다.
- n의 모든 자릿수가 "0" 또는 "5"로만 이루어져 있다면, true를 반환합니다.
- l=5부터 시작해서 r=555까지 모든 정수에 대해서 "0"과 "5"만으로 이루어진 숫자인지 확인합니다.
- 숫자 5를 확인:
- 5 % 10은 5이므로, "0" 또는 "5"입니다.
- 5 / 10을 통해 다음 자릿수로 넘어갑니다. 그 결과는 0입니다. (더 이상 확인할 자릿수가 없습니다.)
- 5는 "0"과 "5"만으로 이루어진 숫자입니다.
- 결과 리스트에 5를 추가합니다.
- 숫자 6부터 숫자 49까지는 "0"과 "5"만으로 이루어지지 않았으므로 건너뜁니다.
- 숫자 50을 확인:
- 50 % 10은 0이므로, "0" 또는 "5"입니다.
- 50 / 10의 결과는 5입니다. 다시 5의 자릿수를 확인합니다.
- 5 % 10은 5입니다.
- 5 / 10을 통해 다음 자릿수로 넘어갑니다. 그 결과는 0입니다. (더 이상 확인할 자릿수가 없습니다.)
- 50은 "0"과 "5"만으로 이루어진 숫자입니다.
- 결과 리스트에 50를 추가합니다.
이러한 방식으로 l부터 r까지의 모든 숫자를 확인합니다. "0"과 "5"만으로 이루어진 숫자를 결과 리스트에 추가합니다.
최종적으로, 위의 알고리즘을 통해 l=5 및 r=555에 대해 결과 리스트는 [5, 50, 55, 500, 505, 550, 555]가 됩니다.
'대외교육 > 코딩테스트' 카테고리의 다른 글
[프로그래머스][C++][코딩기초트레이닝] 문자열 여러번 뒤집기 (0) | 2023.10.03 |
---|---|
[프로그래머스][코딩기초트레이닝][C++] 주사위 게임3 (1) | 2023.10.03 |
[C++] vector 주요 멤버함수 (0) | 2023.10.02 |
[프로그래머스][C++ 코딩기초트레이닝]DAY3~DAY4 (0) | 2023.10.01 |
[프로그래머스][C++ 코딩기초트레이닝] DAY 1 ~ DAY 2 (0) | 2023.10.01 |