1. 문제 상세
https://www.acmicpc.net/problem/24265
2. 문제 접근
주어진 알고리즘을 보고 수행 횟수를 확인해보자.
이를 위해 루프에서 i 와 j 의 상태를 확인해보자.
i | j | 수행 횟수 |
1 | 2 | n - 1 |
2 | 3 | n - 2 |
3 | 4 | n - 3 |
. | . | . |
. | . | . |
n - 2 | n - 1 | 2 |
n - 1 | n | 1 |
위와 같이 증가하게 된다.
따라서 총 수행 횟수는 1 부터 n - 1 까지의 합이다.
따라서 수열의 합, 시그마 공식에 대입하여
위와 같은 식으로 계산한다.
따라서 시간복잡도는 O(N2)이 되고, 수행 횟수는 항상 n(n - 1)/2 가 된다.
n 을 입력받고 n(n - 1)/2 와 차수인 2를 출력하자.
*여기서 주의할 사항, 이번에도 범위를 생각해서 int 형이 아닌 long 또는 long long 형으로 변수를 선언하여 사용하자.
3. 문제 풀이
#include <iostream>
using namespace std;
int main() {
long n;
cin >> n;
cout << n * (n - 1) / 2 << endl << 2;
}
정수형(long 형) 변수 n 을 선언, cin 으로 정수를 입력받아 n 에 저장.
cout 으로 n * (n - 1) / 2 값과 2를 출력.
4. 성능 확인
5. 마무리
'백준 - 단계별로 풀어보기 > 시간 복잡도' 카테고리의 다른 글
[백준] 24267번 : 알고리즘 수업 - 알고리즘의 수행 시간 6 | C++ (0) | 2023.10.27 |
---|---|
[백준] 24266번 : 알고리즘 수업 - 알고리즘의 수행 시간 5 | C++ (0) | 2023.10.27 |
[백준] 24264번 : 알고리즘 수업 - 알고리즘의 수행 시간 3 | C++ (0) | 2023.10.26 |
[백준] 24263번 : 알고리즘 수업 - 알고리즘의 수행 시간 2 | C++ (0) | 2023.10.26 |
[백준] 24262번 : 알고리즘 수업 - 알고리즘의 수행 시간 1 | C++ (0) | 2023.10.26 |