백준 - 단계별로 풀어보기/시간 복잡도

1. 문제 상세 https://www.acmicpc.net/problem/24313 2. 문제 접근 a1, a0, c, n0 을 입력받고 각 수식을 비교하고 결과를 출력. a1 * n + a0 값이 c * n 값보다 작거나 같으면 1을, 아니라면 0을 출력한다. 여기서 주의할 사항이 있다. 만약 a0 가 음수가 되는 경우, n0 에서는 조건이 성립하지만 다른 n 의 경우에 위의 조건이 성립되지 않는 경우가 있다. a1 = 5, a0 = -4, c = 3, n0 = 1 이라고 가정하자. 5n - 4 ≤ 3n 에서 n0 가 1이고 1 ≤ 3 이므로 식이 성립한다. 하지만 n 이 3이 된다면 11 ≤ 9 가 되어서 조건이 성립하지 않게 된다. 따라서 a0 가 음수인 경우에 a1 *n 가 c * n 보다 항삭 ..
1. 문제 상세 https://www.acmicpc.net/problem/24267 2. 문제 접근 주어진 알고리즘을 보고 수행 횟수를 확인해보자. 이를 위해 예제를 통해 루프에서 i 와 j 의 상태를 확인해보자. i j k 1 2 3, 4, 5, 6, 7 3 4, 5, 6, 7 4 5, 6, 7 5 6, 7 6 7 2 3 4, 5, 6, 7 4 5, 6, 7 5 6, 7 6 7 3 4 5, 6, 7 5 6, 7 6 7 4 5 6, 7 6 7 5 6 7 수행 횟수가 (5 + 4 +3 + 2 + 1) + (4 + 3 + 2 + 1) + (3 + 2 + 1) + (2 + 1) + 1 번 이라는 것을 알 수 있다. 이를 시그마 공식으로 변환하면 위와 같은 식으로 계산한다. 따라서 시간복잡도는 O(N3)이 되고..
1. 문제 상세 https://www.acmicpc.net/problem/24266 2. 문제 접근 이번 문제의 알고리즘은 입력값 n 이 있을 때 수행 횟수가 n3 번이 된다. 따라서 시간 복잡도는 O(N3) 이 된다. 입력 받은 n 의 세제곱값과 최고차항의 차수인 3을 출력하자. *변수에 들어갈 수 있는 최대값이 50만의 세제곱이기 때문에 int 형의 범위(약 -21억 ~ 21억)를 넘는다. 따라서 long 또는 long long 형으로 변수를 선언하여 사용하자. 3. 문제 풀이 #include using namespace std; int main() { long n; cin >> n; cout
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 형이 아닌 ..
1. 문제 상세 https://www.acmicpc.net/problem/24264 2. 문제 접근 이번 문제의 알고리즘은 입력값 n 이 있을 때 수행 횟수가 n2 번이 된다. 따라서 시간 복잡도는 O(N2) 이 된다. 입력 받은 n 의 제곱값과 최고차항의 차수인 2을 출력하자. *여기서 주의할 사항이 있다. 입력받은 n 의 범위가 최대 500,000 이다. 따라서 출력 최대값이 50만의 제곱인 2500억이 될 수도 있는데, 변수 n 을 평소와 같이 int 형으로 선언할 시 범위를 벗어나버린다. (int 형 범위는 약 -21억~21억) int 형이 아닌 long, long long 형으로 변수를 선언하여 사용하자. 3. 문제 풀이 #include using namespace std; int main() ..
1. 문제 상세 https://www.acmicpc.net/problem/24263 2. 문제 접근 이번 문제의 알고리즘은 입력값 n 이 있을 때 수행 횟수가 n 번이 된다. 따라서 시간 복잡도는 O(N) 이 된다. 입력 받은 n 과 최고차항 n 의 차수인 1을 출력하자. 3. 문제 풀이 #include using namespace std; int main() { int n; cin >> n; cout
Dry_p
'백준 - 단계별로 풀어보기/시간 복잡도' 카테고리의 글 목록