[BOJ] 백준 #10953. A+B - 6 (C/C++)
🎨 문제
문제 링크: https://www.acmicpc.net/problem/10953
💬 풀이
구분자가 있는 입력받기
👩💻 코드
C++ (1)
#include <iostream>
#define endl '\n'
using namespace std;
int main() {
int T;
cin >> T;
int A, B;
char c;
for (int i = 0; i < T; i++) {
cin >> A >> c >> B;
cout << A + B << endl;
}
return 0;
}
C++ (2)
#include <iostream>
#include <string>
#define endl '\n'
using namespace std;
int main() {
int T;
cin >> T;
string A, B;
for (int i = 0; i < T; i++) {
getline(cin, A, ',');
getline(cin, B);
cout << stoi(A) + stoi(B) << endl;
}
return 0;
}
getline(cin, str, 종결문자)을 이용해서 cin의 종료시점을 ‘,’ 등으로 정해줄 수 있다. ‘\n’이나 특정 종결문자까지 모든 문자를 입력받아 하나의 string 객체에 저장한다. 특정 구분자가 포함된 한 줄씩 입력받을 때 유용하다.
그 다음 stoi()를 통해 string을 int로 변환한다.
C++ (3)
#include <iostream>
using namespace std;
int main() {
int T;
cin >> T;
char ch[4];
while (T--) {
cin >> ch;
printf("%d\n", (ch[0] - 48) + (ch[2] - 48));
}
return 0;
}
‘0’의 ASCII값은 48.
처음에 ch[] 배열의 크기를 3으로 하니까 런타임 에러(stack around the variable was corrupted …)가 났다. 원래 의도한 크기의 자료형보다 더 큰 자료형의 데이터를 넣으려고 했거나, 오타 등으로 의도하지 않은 데이터가 들어갔을 때 나는 에러라고 한다. 아마 널 문자를 고려해 크기를 +1해서 잡야줘야 하는 듯 싶다.
C
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
int T;
scanf("%d", &T);
int A, B;
for (int i = 0; i < T; i++) {
scanf("%d,%d", &A, &B);
printf("%d\n", A + B);
}
return 0;
}
scanf() 관련 정리 참고 ― https://ldgeao99.tistory.com/214
댓글남기기