반응형
문제 내용, 입출력 예시
정수 l 과 r이 주어졌을 때, l 이상 r이하의 정수 중에서 숫자 "0"과 "5"로만 이루어진 모든 정수를 오름차순으로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.
만약 그러한 정수가 없다면, -1이 담긴 배열을 return 합니다.
제한사항
1 ≤ l ≤ r ≤ 1,000,000
입출력 예시
5 이상 555 이하의 0과 5로만 이루어진 정수는 작은 수부터 5, 50, 55, 500, 505, 550, 555가 있습니다. 따라서 [5, 50, 55, 500, 505, 550, 555]를 return 합니다.
따라서 10 이상 20 이하이면서 0과 5로만 이루어진 정수는 없습니다. 따라서 [-1]을 return 합니다.
l | r | result |
5 | 555 | [5, 50, 55, 500, 505, 550, 555] |
10 | 20 | [-1] |
문제 해결, 소스 코드 설명
제일 간단한 방법으로 반복문 사용해서 l 과 r 사이 모든 자료들 베열로 담아서, 슷자 아닌 문자로 바꿉니다.
따라서 문자 중에 ''0" 과 "5" 가 포함되는 원소만 출력하고 빈 배열이면 " -1" 를 담아줍니다. 시작 소스 코드 다음과 같습니다.
#include <string>
#include <vector>
using namespace std;
vector<int> solution(int l, int r) {
vector<int> answer;
return answer;
}
반복문으로 먼저 모든 원소들 배열도 담고 모든 원소의 문자로 바꿔준 tmp 변수를 만듭니다. tmp 문자 배열 안에 "0" 과 "5" 동시에 없으면 제외하고 break으로 사용합니다.
for(int i = l; i <= r; i++) {
string tmp = to_string(i);
bool isIncluded = true;
for(char c : tmp){
if(c!= '0' && c!= '5'){
isIncluded = false;
break;
}
}
}
주어진 코드 조각은 조건문 isIncluded를 확인하고, 조건이 참인 경우 중괄호 내의 코드 블록을 실행하는 것입니다. 이 경우, 변수 i의 값을 answer 벡터에 push_back 함수를 사용하여 추가합니다.
추가적으로 push_back은 C++의 벡터(vector) 컨테이너에서 사용되는 함수로, 벡터의 끝에 새로운 요소를 추가하는 역할을 합니다. push_back 함수는 벡터의 크기를 동적으로 관리하며, 요소를 추가할 때마다 벡터의 크기가 자동으로 조정됩니다.
if(isIncluded){
answer.push_back(i);
}
다음 코드 조각은 answer 벡터가 비어있는지 확인하고, 비어있는 경우 -1을 answer 벡터에 추가하는 것입니다.
두 가지 조건문은 동일한 결과를 얻기 위해 사용될 수 있습니다. answer.empty()는 answer 벡터가 비어있는지 확인하는 함수이며, answer.size() == 0은 answer 벡터의 크기가 0인지 확인하는 조건입니다. 둘 다 true인 경우, answer 벡터에 -1을 추가합니다.
if(answer.empty()){
answer.push_back(-1);
}
OR
if(answer.size() == 0){
answer.push_back(-1);
}
전체 소스 코드
따라서 전체 소스 코드는 다음과 같습니다.
#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 tmp = to_string(i);
bool isIncluded = true;
for (char c : tmp)
{
if (c != '0' && c != '5')
{
isIncluded = false;
break;
}
}
if (isIncluded)
{
answer.push_back(i);
}
}
if (answer.empty())
{
answer.push_back(-1);
}
return answer;
}
반응형
'Computer Science > Programmers' 카테고리의 다른 글
[C++] 프로그래머스 배열 뒤집기, Reverse an Array (0) | 2023.12.26 |
---|---|
[ 프로그래머스 ] 🚑 진료 순서 정하기 | C++, Javascript (2) | 2023.06.19 |
[ 프로그래머스 ] 수열과 구간 쿼리 2, C++, Javascript (0) | 2023.06.19 |
[ 프로그래머스 ] 코드 처리하기, C++ (1) | 2023.06.19 |
[ C++ ] 언젠가 쓰일 줄 모르는 코딩 테스트의 중요한 내용 정리 (0) | 2023.05.16 |