📄문제
현수네 반은 학생이 N명 있습니다.
수업도중 선생님이 잠깐 자리를 비워야 하는데 그 동안 학생들이 떠들거나 놀지 않도록 각 학생들에게 퀴즈를 냈습니다.
선생님은 각 학생들에게 숫자가 적힌 카드를 줬습니다.
각 학생들은 1부터 자기 카드에 적힌숫자까지의 합을 구하는 퀴즈입니다.
선생님이 돌아와서 각 학생들의 답이 맞았는지 확인을 하려고 하는데 너무 힘들어서 여러분에게 자동으로 채점을 하는 프로그램을 부탁했습니다.
여러분이 선생님을 도와주세요.
⬇️ 입력
첫 줄에 반 학생수인 자연수 N(1<=N<=10)이 주어집니다.
각 학생들은 1부터 N까지 번호가 부여되어 있다고 가정합니다.
두 번째 줄부터 1번 학생부터의 카드에 적힌 수와 학생이 구한 정답이 공백을 사이에 두고입력된다.
카드에 적힌 수는 1000을 넘지 않는다.
3 10 55 20 350 100 5050 |
⬆️ 출력
첫 줄부터 1번 학생이 정답을 맞추면 “YES", 틀리면 ”NO"를 출력하세요.
YES NO YES |
📝 풀이
#include <iostream>
int main()
{
int N;
scanf_s("%d", &N);
int cardNum, stdAns;
for (int i = 0; i < N; ++i)
{
scanf_s("%d %d", &cardNum, &stdAns);
// 가우스의 합 공식 n(n+1) / 2
int ans = (cardNum * (cardNum + 1)) / 2;
printf("%s\n", ans == stdAns ? "YES" : "NO");
}
}
- 가우스의 합 공식을 통해 문제를 해결하였습니다.
'algorithms (C++)' 카테고리의 다른 글
[C++] 분노유발자 (0) | 2023.10.13 |
---|---|
[C++] 층간소음 (1) | 2023.10.13 |
[C++] 아나그램(Anagram) (0) | 2023.10.13 |
[C++] 소수의 개수 (에라토스테네스의 체) (0) | 2023.10.13 |
[C++] 뒤집은 소수 (0) | 2023.10.13 |