본문 바로가기
Algorithm/Baekjoon

Baekjoon 4880 다음수 JAVA

by Hunveloper 2022. 6. 8.
728x90

 

4880번: 다음수

입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 수열의 연속하는 세 정수 a1, a2, a3이 한 줄에 주어진다. (-10,000 < a1, a2, a3 < 10,000) a1, a2, a3은 서로 같지 않다. 입력의 마지막

www.acmicpc.net

문제

등차수열(AP)은 인접한 두 수의 차이(공차)가 일정한 수열이다. 예를 들어, 3, 5, 7, 9, 11, 13, ...은 차이가 2로 일정한 등차수열이다. 이 문제에서 등차수열의 공차는 항상 0이 아닌 정수이다.

등비수열(GP)는 각 항이 그 앞과 일정한 비(공비)를 가지는 수열이다. 예를 들어, 2, 6, 18, 54, ...은 공비가 3인 등비수열이다. 이 문제에서 등비수열의 공비는 항상 0이 아닌 정수이다.

어떤 수열의 연속한 세개의 숫자가 주어졌을 때, 이 수열이 등차수열인지 등비수열인지를 알아낸 뒤, 다음 항을 구하는 프로그램을 작성하시오.

입력

입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 수열의 연속하는 세 정수 a1, a2, a3이 한 줄에 주어진다. (-10,000 < a1, a2, a3 < 10,000) a1, a2, a3은 서로 같지 않다.

입력의 마지막 줄에는 0이 세 개 주어진다.

출력

각 테스트 케이스에 대해서, 등차수열이면 AP를, 등비수열이면 GP를 출력한 뒤, 다음 항을 출력한다. 모든 입력은 항상 등차수열이나 등비수열이다.

풀이

1. 세 값이 0이면 종료

2. 세 값이 주어지고 b-a와 c-b가 같다면 등차

3. 세 값이 주어지고 b/a와 c/b가 동일하다면 등비 => 여기서는 else를 이용하였음

코드
import java.io.*;
import java.util.*;

public class Main {
	public static void main(String[] args) throws Exception{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		while(true) {
			StringTokenizer st = new StringTokenizer(br.readLine());
			int a=Integer.parseInt(st.nextToken()), b=Integer.parseInt(st.nextToken()), c=Integer.parseInt(st.nextToken());
			if(a==0 && b==0 && c==0)
				break;
			if(b-a==c-b)
				bw.write("AP "+(c+c-b)+"\n");
			else
				bw.write("GP "+(c*(c/b))+"\n");
		}
		bw.close();
	}	
}

 

728x90
728x90

'Algorithm > Baekjoon' 카테고리의 다른 글

Baekjoon 2420 사파리월드 JAVA  (0) 2022.06.08
Baekjoon 1225 이상한 곱셈 JAVA  (0) 2022.06.08
Baekjoon 3184 양 JAVA  (0) 2022.06.03
Baekjoon 1100 하얀 칸 JAVA  (0) 2022.06.01
Baekjoon 6603 로또 JAVA  (0) 2022.06.01

댓글