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
1. 문제 상세 https://www.acmicpc.net/problem/24262 2. 문제 접근 입력받는 n 이 어떤 값이든 주어진 알고리즘의 수행 횟수는 1번이다. 따라서 시간 복잡도가 O(1) 이므로 1 과 0 을 출력하자. 3. 문제 풀이 #include using namespace std; int main() { int n; cin >> n; cout
1. 문제 상세 https://www.acmicpc.net/problem/14215 2. 문제 접근 세 변의 길이를 입력받아서 가장 큰 삼각형을 만들고 그 둘레를 출력하자. 이 문제에서 포인트는 막대의 길이를 줄일 수 있다는 것이다. 삼각형에서 세 변 a, b, c 가 있다고 할 때, c 가 가장 긴 변이라면 a + b > c 가 되어야 한다. 따라서 입력받은 세 변의 길이를 오름차순 a, b, c 형식으로 정렬한다. 변의 길이가 a + b > c 이거나 세 변이 모두 같다면 세 변의 길이의 합을 출력한다. 아닌 경우에는 변의 길이를 줄일 수 있으므로 c 의 값이 a + b 의 값보다 작도록, 즉 c 가 a + b - 1 의 값이 되도록 한다. 이 때 삼각형의 둘레의 길이는 a + b + c 이므로 결과..
1. 문제 상세 https://www.acmicpc.net/problem/5073 2. 문제 접근 무한 루프로 계속 반복하여 세 변의 길이 a, b, c 를 입력받자. 값을 입력받고 값이 0 0 0 이면 빠져나온다. 아닌 경우 a, b, c 가 모두 같은지 확인, 맞다면 Equilateral 을 출력. 아닌 경우 가장 큰 변이 두 변을 더한 값보다 큰지 확인, 맞다면 Invalid 를 출력. 아니라면 같은 변이 있는지 확인하여 맞다면 Isosceles 를, 없다면 Scalene 을 출력하자. 3. 문제 풀이 #include using namespace std; int main() { int a, b, c; while (true) { cin >> a >> b >> c; if (a == 0 && b == 0..