# 문제
입력의 크기 n이 주어지면 MenOfPassion 알고리즘 수행 시간을 예제 출력과 같은 방식으로 출력해보자.
MenOfPassion 알고리즘은 다음과 같다.

# 풀이
시간복잡도 네 번째 단계다.
문제에서 제시한 MenOfPassion 알고리즘을 먼저 살펴보면 아래와 같다.
MenOfPassion(A[], n) { sum <- 0; for i <- 1 to n - 1 for j <- i + 1 to n sum <- sum + A[i] × A[j]; // 코드1 return sum; }
이번에도 역시 이중 for문이지만 인덱스가 좀 다르다.

예제 입력의 n = 7인 경우를 살펴보면 인덱스 진행은 위 표와 같은데, 코드 1이 총 21번 수행되는 것을 알 수 있다.
이는 6 + 5 + 4 + 3 + 2 + 1 번인데, 시그마 공식을 활용해보면 아래와 같다.
따라서 어떤 n을 넣더라도 코드 1은 n(n-1)/2회 수행, 수행 시간은 n²에 비례함을 알 수 있다.
시간 복잡도는 지난 번과 마찬가지로 O(n²)이고, 항상 n(n-1)/2와 2를 개행하여 출력해주면 끝!
#include <iostream> using namespace std; int main(){ long long n; cin >> n; cout << (n-1)*n / 2 << '\n' << 2; return 0; }
다만 코드를 짤 때 주의해야 할 점은 n의 자료형을 설정하는 것이다. 지난 번과 동일!
n의 곱셈연산이 포함되고, n은 최대 500,000이 입력될 수 있으므로 이를 고려해 자료형을 long long으로 설정해주었다.
이것만 빠뜨리지 않는다면 어렵지 않게 끝!

24265번: 알고리즘 수업 - 알고리즘의 수행 시간 4
오늘도 서준이는 알고리즘의 수행시간 수업 조교를 하고 있다. 아빠가 수업한 내용을 학생들이 잘 이해했는지 문제를 통해서 확인해보자. 입력의 크기 n이 주어지면 MenOfPassion 알고리즘 수행 시
www.acmicpc.net
'백준 > C++' 카테고리의 다른 글
[백준] 24267번: 알고리즘 수업 - 알고리즘의 수행 시간 6 | C++ 풀이 (0) | 2023.06.21 |
---|---|
[백준] 24266번: 알고리즘 수업 - 알고리즘의 수행 시간 5 | C++ 풀이 (0) | 2023.06.20 |
[백준] 24264번: 알고리즘 수업 - 알고리즘의 수행 시간 3 | C++ 풀이 (0) | 2023.06.18 |
[백준] 24263번: 알고리즘 수업 - 알고리즘의 수행 시간 2 | C++ 풀이 (0) | 2023.06.17 |
[백준] 24262번: 알고리즘 수업 - 알고리즘의 수행 시간 1 | C++ 풀이 (0) | 2023.06.16 |