입출력은 보통 8가지 경우가 있다.
boj.kr에서 A+B 문제를 찾아볼수 있다.
https://www.acmicpc.net/problem/1000
https://www.acmicpc.net/problem/2558
https://www.acmicpc.net/problem/10950
https://www.acmicpc.net/problem/10951
https://www.acmicpc.net/problem/10952
https://www.acmicpc.net/problem/10953
https://www.acmicpc.net/problem/11021
https://www.acmicpc.net/problem/11022
EOF처리
//터미널에서 EOF를 반환 : (Windows)Ctrl + Z, (Linux)Ctrl + D
C : while(scanf("%d %d", &a, &b) ==2)
//scanf의 리턴값은 입력받은 변수의 개수. != 0이 아니라 ==2인 부분 주의.
C++ : while(cin>> a>> b) 또는 if(cin.eof()) break;
Java : while(sc.hasNextInt())
한 줄 입력받기
fgets(s, 100, stdin);
//이 경우 \n 까지 입력받으므로 주의. 즉, 문자열의 사이즈가 1개가 더 커진다.
scanf("%[^\n]\n", s);
//[ ]\n : []안에있는부분 까지 입력을 받는다. ^\n : \n을 제외하고 입력을 받는다. 앞뒤공백 무시, 빈줄x
getline(cin, s);
숫자하나씩 입력받기
scanf("%1d", &x);
//%d 사이에 수를 넣으면, 그 길이 만큼 입력을 받게됨. 12345>> 1, 2, 3, 4, 5
char ch[255]; scanf("%s", ch); 후에 각문자에서 '0'값 빼기 ex) x = ch[i] - '0';
//두자리를 넘어가는 수일 경우 찾기 힘든 에러가 발생 할 수있으니 이런 방법보다는 stoi 등을 사용하는게 바람직하다.
https://jjudrgn.tistory.com/75
한문자 입력받기
scanf("%c", &ch);
//이경우 문자 한개를 입력받을수 있다.
scanf("%d", &num);
scanf("%c", &ch);
//위와 같은 경우는 문제가 될수 있다. 정수를 입력받는과정에서 들어가는 '\n'이나 '\0' 또는 ' '이 ch에 저장될수 있기 때문이다.
scanf("%d", &num);
getchar();
scanf("%c", &ch);
//getchar()을 이용해 명시적으로 문자를 한개 입력받거나
scanf("%d", &num);
scanf(" %c", &ch);
//scanf 포맷 방식을 활용하여 위 문제를 해결할 수 있다.
기초 연습하기 좋은 문제
N 찍기 : https://www.acmicpc.net/problem/2741
기찍 N : https://www.acmicpc.net/problem/2742
구구단 : https://www.acmicpc.net/problem/2739
2007년 : https://www.acmicpc.net/problem/1924
Sum : https://www.acmicpc.net/problem/8393
최소, 최대 : https://www.acmicpc.net/problem/10818
별찍기 연습문제
2438~2446, 2522, 10991, 10992
가끔 "를 입력하는 문제에서 실수를 하곤한다.
"를 출력할때는 cout <<"\""; 를 사용하고 \를 출력할때는 cout<<"\\";를 하자!
관련문제 : www.acmicpc.net/problem/10172
소수점 출력에 대한 내용은 아래 블로그에 정리가 잘되어 있다!
'Algorithm > Basic' 카테고리의 다른 글
다이나믹 프로그래밍[Dynamic Programming] (0) | 2020.12.16 |
---|---|
자료구조 : 문자열 (0) | 2019.06.06 |
자료구조 : 덱(deque) (0) | 2019.06.06 |
자료구조 : 큐(queue) (0) | 2019.06.06 |
자료구조 : 스택(Stack) (0) | 2019.06.06 |