[백준 1964] 오각형, 오각형, 오각형… (C#, C++) - soo:bak
작성일 :
문제 링크
설명
단계마다 규칙적으로 도형의 점이 추가되는 구조를 파악하고 누적하는 문제입니다.
n
단계까지 오각형을 붙이면 총 몇 개의 점이 생기는지를 계산해야 합니다.- 초기에는
1
개 점에서 시작합니다. - 그림을 통해 규칙을 관찰해보면, 매 단계마다
3 * i + 1
개의 점이 추가됩니다 (i
는 단계). - 결과는
45,678
로 나눈 나머지를 출력해야 합니다.
접근법
- 전체 점의 수를 저장할 변수를 하나 선언하고
0
으로 초기화합니다. 0
부터 주어진 단계까지 순회하면서, 각 단계에서3 * i + 1
만큼 점을 더해 나갑니다.- 이때, 각 단계에서 누적합을 계산할 때마다
45,678
로 나눈 나머지를 적용하여 오버플로우를 방지합니다. - 반복이 끝난 후, 최종 계산된 값을 출력하면 됩니다.
Code
[ C# ]
1
2
3
4
5
6
7
8
9
10
11
using System;
class Program {
static void Main() {
int n = int.Parse(Console.ReadLine());
int total = 0;
for (int i = 0; i <= n; i++)
total = (total + 3 * i + 1) % 45_678;
Console.WriteLine(total);
}
}
[ C++ ]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n; cin >> n;
int total = 0;
for (int i = 0; i <= n; i++)
total = (total + 3 * i + 1) % 45'678;
cout << total << "\n";
return 0;
}