일상 코딩
[C++ / 아마존 기출] 문자열 제어 및 탐색, 숫자만 출력 본문
728x90
#include<iostream>
using namespace std;
// int main(){
// freopen("./06_extract_number/input.txt","rt",stdin);
int main(int argc, char* argv[]){
freopen(argv[1], "rt", stdin);
freopen(argv[2], "w", stdout);
char a[100];
int res = 0, cnt = 0, i;
cin >> a;
for(i=0; a[i] != '\0';i++){
if(a[i] >= 48 && a[i] <= 57){
res = res*10 + (a[i]-48);
}
}
cout << res << endl;
for(i=0; i <= res; i++)
if( res % i == 0 ){ cnt += 1;}
cout << cnt << endl;
}
입력 예제 1
g0en2Ts8eSoft
출력 예제 1
28
6
for(i=0; a[i] != '\0';i++){
if(a[i] >= 48 && a[i] <= 57){
res = res*10 + (a[i]-48);
가장 중요한 코드는 바로 위의 코드라고 할 수 있다.
for문 자체에서 조건을 걸어서 문자열을 바로 탐색해준다.
s | t | u | d | e | n | t | '₩0' |
보통 문자열을 입력받게되면, 끝자리에 '₩0'가 붙게 된다.
이것을 이용해서 탐색 조건을 걸어준다.
a[i] != '\0'
위 코드의 의미는 문자열 탐색시 's'부터 '₩0'까지 탐색하고
'₩0'을 만나게 되면, 거짓을 반환하여, 탐색을 종료하게 된다.
어떻게 보면 종료 조건이라고 볼 수 있다.
728x90
'C++ > 코딩테스트 대비' 카테고리의 다른 글
[C++] 문자열 제어, 주민등록번호를 통한 나이 및 성별 출력 (0) | 2021.10.13 |
---|---|
[C++] 나이 차이, min, max 실시간 갱신 (0) | 2021.10.08 |
[C++] 진약수의 합 ex) 20의 진약수의 합 "1 + 2 + 4 + 5 + 10 = 22" 출력 (0) | 2021.10.08 |
[C++] 자연수의 합 ex) "3 + 4 + 5 + 6 + 7 = 25" 형태로 출력 (0) | 2021.10.07 |
[C++] 1부터 N까지 M의 배수합 (0) | 2021.10.07 |