1. 입력이 없을 때까지 입력받기
https://www.acmicpc.net/problem/10951
10951번: A+B - 4
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
www.acmicpc.net
- 정수 입력받기
#include <stdio.h>
int main()
{
int a = 0, b = 0;
while (scanf_s("%d %d", &a, &b) != EOF) {
printf("%d\n", a + b);
}
return 0;
}
#include <stdio.h>
int main()
{
int a = 0, b = 0;
while (scanf("%d %d", &a, &b) == 2) {
printf("%d\n", a + b);
}
return 0;
}
2. 여러줄 입력받기(공백 포함 상관없음)
https://www.acmicpc.net/problem/11718
11718번: 그대로 출력하기
입력이 주어진다. 입력은 최대 100줄로 이루어져 있고, 알파벳 소문자, 대문자, 공백, 숫자로만 이루어져 있다. 각 줄은 100글자를 넘지 않으며, 빈 줄은 주어지지 않는다. 또, 각 줄은 공백으로 시
www.acmicpc.net
https://www.acmicpc.net/problem/11719
11719번: 그대로 출력하기 2
입력이 주어진다. 입력은 최대 100줄로 이루어져 있고, 알파벳 소문자, 대문자, 공백, 숫자로만 이루어져 있다. 각 줄은 100글자를 넘지 않으며, 빈 줄이 주어질 수도 있고, 각 줄의 앞 뒤에 공백이
www.acmicpc.net
#include <stdio.h>
int main()
{
char c;
while (scanf_s("%c", &c) != EOF) {
printf("%c", c);
}
return 0;
}
+ 위같은 문풀 말고 일반적으로
공백을 포함하지 않으면 scanf나 std::cin을 사용할 수 있지만
공백을 포함하면 getline()을 사용해서 입력을 받을 수 있다.
getline() 함수는 istream라이브러리에도 있고 string라이브러리에도 있는데, 아래에서 사용한건 string라이브러리의 getline()이기 때문에 #include <string>을 꼭 포함시켜줘야한다!
#include <iostream>
#include <string>
int main()
{
std::string n;
std::getline(std::cin, n);
std::cout << n;
return 0;
}
참고자료 : https://blog.encrypted.gg/923
[실전 알고리즘] 0x02강 - 기초 코드 작성 요령 II
안녕하세요, 바킹독입니다. 이전 단원에서 오지고 지리게 고통받으셨을텐데 이번에는 훨씬 쉬우니까 걱정을 덜어내시고 마음 편하게 보시면 됩니다. 저 아직 0x18살이니까 급식체 써도 되는거
blog.encrypted.gg
또한 std::cin으로 입력을 받은 후 std::getline()으로 입력받을 때, cin으로 입력받았을 때의 \n이 버퍼에 남아있어 getline()에 기대한 입력값이 들어가지 않고 \n이 들어간다. 그러므로 입력받기 전에 std::cin.ignore()로 버퍼를 비워주어야 한다.
#include <iostream>
#include <string>
int main()
{
int a;
std::cin >> a;
std::cout << a << '\n';
std::cin.ignore();
std::string n;
std::getline(std::cin, n);
std::cout << n;
return 0;
}
3. 연속된 수 하나씩 읽기
https://www.acmicpc.net/problem/11720
11720번: 숫자의 합
첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.
www.acmicpc.net
#include <stdio.h>
int main()
{
int n = 0, input = 0, sum = 0;
scanf_s("%d", &n);
for (int i = 0; i < n; i++) {
scanf_s("%1d", &input);
sum += input;
}
printf("%d", sum);
return 0;
}
< EOF 사용에 대해서 >
C++에서 std::cin.eof()가 있긴 하지만
백준에서 맞은 사람의 풀이를 찾아보면 다들 C언어 풀이었다...
그리고 std::cin.eof()로 풀면 왜인지 틀리기도 해서...(내가 잘 못 푼 걸 수도)
그냥 이부분은 왠만하면 C언어로 풀어야겠다
그 밖의 유용한 입력
https://dbstndi6316.tistory.com/33
[개념정리] C/C++ 여러 input방법에 대해
삼성 역량테스트를 C++로 준비하며 필요한 input의 방법들을 공부하며 정리해봤다. 1. 길이를 알고있는 숫자를 입력하고 이를 한글자씩 잘라서 input을 받아야 하는 상황 ex) 입력 : 길이 7의 숫자 1234
dbstndi6316.tistory.com
'CS > C++' 카테고리의 다른 글
| C++로 덱 구현 (0) | 2023.07.11 |
|---|---|
| C++로 큐 구현 (0) | 2023.07.11 |
| C++로 스택 구현 / STL stack (0) | 2023.07.11 |
| vector 관련 정리 (0) | 2023.07.10 |
| C++에서 배열 크기 제한 (0) | 2023.07.01 |