-
반응형
풀이
이 문제도 복잡하게 생각할 것 없이 간단하게 풀었다.
주어진 숫자들이 등차수열인지 등비수열인지 판별하고, 그 다음 수를 AP num 또는 GP num으로 출력을 해주는 것이기 때문에 판별 메소드를 구해야하나 생각했었다.
하지만, 주어진 숫자의 범위가 |numbers| < 10000 로 매우 협소하고, 다음 숫자를 구해야 하기 때문에 그냥 둘 다 돌리기로 선택했다.
등차수열인지 판별하고 맞다면 다음 수를 담아서 출력하는 isAP 메소드와 등비수열에 따른 isGP 메소드를 만들었다.
(처음에 판별식으로 할까 생각해서 isAP, isGP로 네이밍을 한 것 같다..)
등차 수열이라면, AP 를 담은 StringBuffer에 붙여 출력해주었고, GP도 이에 따라 출력해주었다.
코드
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class NextNum_4880 { final static String END = "0 0 0"; final static int SIZE = 3; public static void main(String[] args) throws IOException { solution(new BufferedReader(new InputStreamReader(System.in))); } private static void solution(BufferedReader br) throws IOException{ while(true) { String inputStr = br.readLine(); if(inputStr.equals(END)) { break; } int[] numArr = new int[SIZE]; StringTokenizer st = new StringTokenizer(inputStr); for(int i=0; i<SIZE; i++) { numArr[i] = Integer.parseInt(st.nextToken()); } isAP(numArr); isGP(numArr); } br.close(); } private static void isAP(int[] numArr) { StringBuffer sb = new StringBuffer("AP "); if(numArr[1] - numArr[0] == numArr[2] - numArr[1]) { int num = numArr[2] +numArr[1] - numArr[0]; sb.append(num); System.out.println(sb.toString()); } } private static void isGP(int[] numArr) { StringBuffer sb = new StringBuffer("GP "); if((double)numArr[1] / numArr[0] == (double)numArr[2] / numArr[1]) { int num = numArr[2] *(numArr[1] / numArr[0]); sb.append(num); System.out.println(sb.toString()); } } }
반응형'알고리즘 > 백준' 카테고리의 다른 글
BOJ) 양 한마리... 양 두마리... (0) 2020.06.18 BOJ) 자동차경주대회 (0) 2020.06.18 BOJ) 빗물 (0) 2020.06.13 BOJ) 조약돌 꺼내기 (0) 2020.06.13 BOJ) 귀여운 수~ε٩(๑> ₃ <)۶з (0) 2020.06.12