문제
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
[www.acmicpc.net/problem/10953][https://www.acmicpc.net/problem/10953] [https://www.acmicpc.net/problem/10953]: https://www.acmicpc.net/problem/10953
입력
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. A와 B는 콤마(,)로 구분되어 있다.
출력
각 테스트 케이스마다 A+B를 출력한다.
Python
파이썬으로 풀면 너무 쉬운 문제다.
cnt = int(input())
for i in range(cnt):
a, b = input().split(",")
print(int(a)+int(b))
C
근데 C언어로 풀려니까 파이썬만큼 쉽지는 않았다. 처음에는 strtok을 사용하려고 했다.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
int cnt;
char input[10];
scanf("%d\n", &cnt);
for (int i = 0; i < cnt; i++) {
scanf("%s", input);
char* a = strtok(input, ",");
char* b = strtok(NULL, ",");
printf("%d\n", atoi(a)+atoi(b));
}
return 0;
}
근데 굳이 strtok까지 써야하나 싶어서
#include <stdio.h>
int main()
{
int cnt;
char* input;
scanf("%d\n", &cnt);
for (int i = 0; i < cnt; i++) {
char a, b, temp;
scanf("%c", &a);
scanf("%c", &temp);
scanf("%c", &b);
scanf("\n");
printf("%d\n", (a+b)-('0'*2));
}
return 0;
}
위와 같이 character 하나씩 받는 것으로 바꾸었다.
Enhanced
#include <stdio.h>
int main()
{
int cnt;
char* input;
scanf("%d\n", &cnt);
for (int i = 0; i < cnt; i++) {
int a, b;
scanf("%d,%d", &a, &b);
printf("%d\n", a+b);
}
return 0;
}
더 간단하게는 이렇게 고칠 수 있을 것 같다. 중간에 콤마를 넣어서 두 정수를 나누어 입력받을 수 있다는 걸 깨달았다.
코딩테스트에서 C는 거의 안 쓰던데 C++은 제대로 배운적이 없어서 JAVA나 Python으로 얼른 갈아타야겠다.