https://www.acmicpc.net/problem/2635

 

2635번: 수 이어가기

첫 번째 수가 주어진다. 이 수는 30,000 보다 같거나 작은 양의 정수이다.

www.acmicpc.net

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;

public class Main {

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int N = Integer.parseInt(br.readLine());
		int max = 0;
		ArrayList<Integer> answerList = new ArrayList<Integer>();

		for (int num = N / 2; num <= N; num++) {
			ArrayList<Integer> list = new ArrayList<Integer>();
			int tempN = N;
			int tempNum = num;

			list.add(N);

			while (true) {
				if (tempN < 0) {
					break;
				}
				int t = tempN;
				if (tempNum >= 0) {
					list.add(tempNum);
				}
				tempN = tempNum;
				tempNum = t - tempN;
			}

			if (max < list.size()) {
				max = list.size();
				answerList = list;
			}
		}
		System.out.println(max);
		for (Integer i : answerList) {
			System.out.print(i + " ");
		}
	}
}

+ Recent posts