728x90
[BOJ 24264] 알고리즘 수업 - 알고리즘의 수행 시간 3 - [수학, 구현]
문제 링크
https://www.acmicpc.net/problem/24264
문제 요약
이중 for문으로 구성된 MenOfPassion 알고리즘이 주어졌을 때, 입력 크기 에 대한 코드1의 수행 횟수와 시간 복잡도 다항식의 최고차항 차수를 출력하는 문제.
접근 방법
- 알고리즘 분석:
- 외부
for문이 $1$부터 $n$까지 $n$회 반복됩니다. - 내부
for문도 $1$부터 $n$까지 $n$회 반복됩니다. - 따라서 코드1(
sum <- sum + A[i] * A[j])의 총 수행 횟수는 $n × n = n^2$ 회입니다.
- 자료구조 (핵심):
- 입력 $n$의 최대 크기는 입니다.
- 수행 횟수 $n^2$은 $500,000×500,000=250,000,000,000(2,500억)$이 됩니다.
- 이는 C++의
int자료형 표현 범위(약 21억)를 넘어가므로, 반드시long long자료형을 사용해야 합니다.
- 차수:
- 실행 횟수가 $n^2$이므로, 최고차항의 차수는 2입니다.
풀이 코드
#include <iostream>
using namespace std;
int main() {
// 입출력 속도 향상
ios_base::sync_with_stdio(false);
cin.tie(NULL);
long long n; // n^2 계산을 위해 long long 사용 권장 (입력 자체는 int 범위지만 계산 결과 고려)
cin >> n;
// 1. 수행 횟수 출력
// n * n 결과가 int 범위를 넘으므로 long long 연산이 되도록 주의
cout << n * n << "\n";
// 2. 최고차항의 차수 출력
// 시간복잡도가 O(n^2)이므로 차수는 2
cout << 2 << "\n";
return 0;
}
시간/공간 복잡도
- 시간 복잡도:$O(1)$
- 문제 풀이 로직은 곱셈 연산 한 번과 출력만 수행하므로 상수 시간입니다. (알고리즘 자체의 시간 복잡도는 $O(n^2)$)
- 공간 복잡도:$O(1)$
- 변수 하나만 사용합니다.
실행 결과
- 메모리: 2020 KB
- 시간: 0 ms
핵심 포인트
- 자료형 선택: $n = 500,000$일 때 $n^2$은
int범위를 초과하므로long long을 사용해야 한다는 점이 가장 중요합니다. 이 부분을 놓치면 '틀렸습니다'를 받게 됩니다. - 시간 복잡도: 이중 중첩 루프는 $O(n^2)$ 복잡도를 가지며, 이는 2차 다항식임을 이해해야 합니다.
예제 확인
- 예제 1:
- 입력:
7 - 출력:
49 2
```
- 설명: $7 × 7 = 49$회 수행되며, $n^2$에 비례하므로 차수는 2입니다. 예제 출력과 일치합니다.
728x90
'코딩테스트' 카테고리의 다른 글
| [Programmers] 스마트한 프로도 - [그래프 이론, 그리디] (0) | 2026.01.27 |
|---|---|
| [Programmers] 순위 - [그래프, 플로이드-워셜] (0) | 2026.01.27 |
| [BOJ 24263] 알고리즘 수업 - 알고리즘의 수행 시간 2 - [수학, 구현] (0) | 2026.01.26 |
| [BOJ 24262] 알고리즘 수업 - 알고리즘의 수행 시간 1 - [수학, 구현] (0) | 2026.01.26 |
| [BOJ 14215] 세 막대 - [수학/기하학] (0) | 2026.01.09 |