250x250
Notice
Recent Posts
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
관리 메뉴

일상 코딩

[C++ / 아마존 기출] 문자열 제어 및 탐색, 숫자만 출력 본문

C++/코딩테스트 대비

[C++ / 아마존 기출] 문자열 제어 및 탐색, 숫자만 출력

polarcompass 2021. 10. 13. 05:13
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