<문제 설명>
문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수,
solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.
<제한 사항>
s는 길이 1 이상, 길이 8 이하인 문자열입니다.
s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다.
<입출력 예>
s return
"a234" false
"1234" true
#include <string>
#include <vector>
using namespace std;
bool solution(string s) {
bool answer = true;
if (s.size() == 4 || s.size() == 6){
for (char i : s)
if (i > 47 && i < 58)
answer = true;
else
return false;
return answer;
}
else {
return false;
}
}
우선 문자열 길이가 4인지 6인지부터 판단해줘야 한다.
이후는 문자 i가 문자열 s을 훑으면서 해당 글자가 숫자인지 판단한다
이때 아스키 코드값(48~57까지가 0~9)을 활용하고, 만약 쭉 훑다가 아스키값에서 벗어나는 알파벳이 있다면 바로 false문을 리턴하고 턴을 종료한다(?)
그렇지 않다면 계속해서 숫자인지 검사하고, 검사가 다 끝났다면 answer을 반환한다
<문제 설명>
자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.
<제한사항>
N의 범위 : 100,000,000 이하의 자연수
<입출력 예>
N answer
123 6
987 24
<입출력 예 설명>
입출력 예 #1
문제의 예시와 같습니다.
입출력 예 #2
9 + 8 + 7 = 24이므로 24를 return 하면 됩니다.
#include <iostream>
using namespace std;
int solution(int n)
{
int answer = 0;
while (n > 0)
{
answer += n % 10;
n /= 10;
}
return answer;
}
입출력 예 #2에서 볼 수 있듯이, 일의 자리부터 시작해서 백의 자리까지 더하고 있다.
그래서 각 자리의 10을 나눈 나머지를 더하고, 그 수를 10씩 나누는 것을 계속 반복하게 하였다
'C++ Programmers Test > Level 1' 카테고리의 다른 글
[Programmers] [C++] 두 개 뽑아서 더하기 / 없는 숫자 더하기 (0) | 2024.11.30 |
---|---|
[Programmers] [C++] 직사각형 별찍기 / 부족한 금액 계산하기 (0) | 2024.08.16 |
[Programmers] [C++] x만큼 간격이 있는 n개의 숫자 / 핸드폰 번호 가리기 (0) | 2024.07.29 |
[Programmers] [C++] 덧셈식 / 붙인 문자열 출력하기 / 홀짝 구분 / 문자열 돌리기 (0) | 2024.07.12 |
[Programmers] [C++] 특수문자 / 대소문자 출력하기 (0) | 2024.07.12 |