알고리즘과 입출력

입력받는 TC의 갯수를 모를 때 : EOF 까지 입력 받기

터미널에서 직접 입력을 넣으실 땐 EOF를 수동으로 넣어주셔야 합니다. 윈도우 기준으로는 Ctrl + Z, UNIX 기준으로는 Ctrl + D입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <string>
using namespace std;

int a = 1, b=1;
int main(void) {
	while (cin >> a >> b) {
		cout << a + b << endl;
	}
	return 0;
}

또는

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
#include <iostream>
#include <string>

using namespace std;
string s;
int n;
int a, b, c, d;
int main(void) {
	while(getline(cin, s)){ //EOF를 입력받을 때까지
		for (int i = 0; i < s.length(); i++) {
			if ('a' <= s[i] &&  s[i] <= 'z') {
				a += 1;
			}
			else if ('A' <= s[i] && s[i] <= 'Z') {
				b += 1;
			}
			else  if ('0' <= s[i] && s[i] <= '9') {
				c += 1;
			}
			else if (s[i] == ' ') {
				d += 1;
			}
		}
		printf("%d %d %d %d\n", a, b, c, d);
		a = b = c = d = 0;
	}
	return 0;
}


한 줄에 입력 받기

1
2
3
4
5
fgets(s, 100, stdin); //fgets는 '\n'까지 입력받음
scanf("%[^\n]\n", s);
getline(cin, s);

앞 뒤 공백 포함해서 입력받고 그대로 출력하기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <string>
using namespace std;

int main() {
	string s;
	for(int i=0; i<100 && !cin.eof(); i++){
		if (getline(cin, s)) {
			cout << s << endl;
		}
	}
	return 0;
}

또는

1
2
3
4
5
6
7
8
#include <cstdio>
int main() {
    char c;
    while ((c = getchar()) && c != EOF) {
        printf("%c",c);
    }
    return 0;
}

숫자 n개씩 입력받기

1
2
3
4
5
//1개씩
scanf("%1d",&x);

//10개씩
scanf("%10s",s);

Tags:

Categories:

Updated:

Leave a comment