[BOJ] 백준 #10953. A+B - 6 (C/C++)

1 분 소요

🎨 문제

문제 링크: 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


댓글남기기