문제
두 개의 주사위를 굴렸을 때 나온 눈의 합을 구한다. 여러 테스트 케이스가 주어지며, 각 케이스 번호를 포함한 형식으로 출력한다.
입력
첫 번째 줄에 테스트 케이스 수 T가 주어진다. 각 테스트 케이스마다 두 정수(주사위 눈 값)가 주어진다.
출력
각 테스트 케이스에 대해 Case i: X 형식으로 두 값의 합을 출력한다. (i는 1부터 시작)
예제
| 입력 | 출력 |
|---|---|
2 3 4 1 6 | Case 1: 7 Case 2: 7 |
풀이
각 테스트 케이스에서 두 수를 읽어 합산하고, 순서대로 저장 후 형식에 맞게 출력한다.
- T를 입력받고 크기 T의 배열을 동적 할당한다.
- T개의 테스트 케이스를 읽으면서 두 수의 합을 배열에 저장한다.
- 1번부터 T번까지 순서대로
Case i: 합형식으로 출력한다. - 동적 할당한 배열을 해제한다.
핵심 아이디어: 입력과 출력이 분리된 형식이므로 모든 입력을 먼저 받아 배열에 저장한 뒤 출력한다. 케이스 번호는 1부터 시작함에 유의한다.
코드
#include <iostream>
using namespace std;
int main()
{
int test, fNum, lNum;
cin >> test;
int *sum = new int[test];
for (int i = 0; i < test; i++)
{
cin >> fNum >> lNum;
sum[i] = fNum + lNum;
}
for (int i = 1; i <= test; i++)
{
cout << "Case " << i << ": " << sum[i - 1] << '\n';
}
delete[] sum;
}복잡도
- 시간: O(T) — T개의 테스트 케이스를 각 1회 처리
- 공간: O(T) — T개의 합을 저장하는 배열