728x90
SMALL
백준 문제 풀이: 4880 (다음수)
문제 링크: https://www.acmicpc.net/problem/4880
문제 설명:
세 개의 수가 주어졌을 때, 이 수들이 **등차수열(AP)**인지 **등비수열(GP)**인지 판별하고, 해당 수열의 다음 항을 구하는 문제입니다.
입력의 마지막은 0 0 0
으로 주어지며, 이를 만나면 종료해야 합니다.
문제 해결 코드
#include <iostream>
using namespace std;
int main() {
while (1) {
int a, b, c; // 수열의 세 항
cin >> a >> b >> c;
// 종료 조건
if (a == 0 && b == 0 && c == 0) break;
if (b - a == c - b) { // 등차수열(AP)
cout << "AP " << c + (c - b) << '\n';
} else { // 등비수열(GP)
cout << "GP " << c * (c / b) << '\n';
}
}
return 0;
}
코드 설명
코드의 주요 로직과 사용된 알고리즘 설명:
- 입력 처리:
세 수
a
,b
,c
를 입력받습니다. - 종료 조건:
입력이
0 0 0
이면 반복문을 종료합니다. - 등차수열(AP) 판별:
b - a == c - b
이면 등차수열이며, 다음 항은c + (c - b)
로 계산합니다. - 등비수열(GP) 판별:
등차수열이 아니면 등비수열이며, 다음 항은
c * (c / b)
로 계산합니다.
시간 복잡도 분석
- 입력으로 주어진 세 수에 대해 O(1) 시간 안에 판별과 계산이 가능합니다.
- 입력이 최대
n
번 주어지면, 시간 복잡도는 **O(n)**입니다.
결과
등차수열(AP) 또는 등비수열(GP)을 판별하고, 다음 항을 정확히 출력합니다.
- 입력 예시:
4 7 10 2 6 18 0 0 0
- 출력 예시:
AP 13 GP 54
다른 접근 방식이나 개선 사항이 있다면 댓글로 공유 부탁드립니다!
728x90
LIST
'BAEKJOON > 수학' 카테고리의 다른 글
백준 10419번 [지각](C++) -yes6686- 티스토리 (0) | 2024.07.04 |
---|---|
백준 15873번 [공백 없는 A+B](C++) -yes6686- 티스토리 (0) | 2024.06.29 |
백준 5988번 [홀수일까 짝수일까](C++) -yes6686- 티스토리 (0) | 2024.05.16 |
백준 31430번 [A+B - 투 스텝](C++) -yes6686- 티스토리 (0) | 2024.05.11 |
백준 11947번 [이런 반전이](C++) -yes6686- 티스토리 (0) | 2024.05.10 |