1. 문제의 1 ~ 4 를 그냥 돌리면 된다.
2. 1 번 틀렸다. 틀린 이유는 포문에 하드코딩을 해놔서
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.*; | |
import java.io.*; | |
/** | |
* https://www.acmicpc.net/problem/2635 | |
* BOJ 백준온라인져지 2635 수 이어가기 풀이 | |
*/ | |
public class Main { | |
private static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); | |
public static void main (String args[]) throws IOException { | |
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); | |
int N = Integer.parseInt(br.readLine()); | |
int max = 0; | |
LinkedList<Integer> result = new LinkedList<>(); | |
for (int i = N; i >= N / 2; i--) { | |
LinkedList<Integer> numberList = new LinkedList<>(); | |
numberList.add(N); | |
int tempN = N; | |
int number = i; | |
while (true) { | |
if (tempN < 0) break; | |
int t = tempN; | |
if (number >= 0) numberList.add(number); | |
tempN = number; | |
number = t - tempN; | |
} | |
if (max < numberList.size()) { | |
max = numberList.size(); | |
result = numberList; | |
} | |
} | |
bw.write(max + "\n"); | |
for (int n : result) bw.write(n + " "); | |
bw.flush(); | |
} | |
} |
문제
다음과 같은 규칙에 따라 수들을 만들려고 한다.
- 첫 번째 수로 양의 정수가 주어진다.
- 두 번째 수는 양의 정수 중에서 하나를 선택한다.
- 세 번째부터 이후에 나오는 모든 수는 앞의 앞의 수에서 앞의 수를 빼서 만든다. 예를 들어, 세 번째 수는 첫 번째 수에서 두 번째 수를 뺀 것이고, 네 번째 수는 두 번째 수에서 세 번째 수를 뺀 것이다.
- 음의 정수가 만들어지면, 이 음의 정수를 버리고 더 이상 수를 만들지 않는다.
첫 번째 수로 100이 주어질 때, 두 번째 수로 60을 선택하여 위의 규칙으로 수들을 만들면 7개의 수들 100, 60, 40, 20, 20 , 0, 20이 만들어진다. 그리고 두 번째 수로 62를 선택하여 위의 규칙으로 수들을 만들면 8개의 수들 100, 62, 38, 24, 14, 10, 4, 6이 만들어진다. 위의 예에서 알 수 있듯이, 첫 번째 수가 같더라도 두 번째 수에 따라서 만들어지는 수들의 개수가 다를 수 있다.
입력으로 첫 번째 수가 주어질 때, 이 수에서 시작하여 위의 규칙으로 만들어지는 최대 개수의 수들을 구하는 프로그램을 작성하시오. 최대 개수의 수들이 여러 개일 때, 그중 하나의 수들만 출력하면 된다.
입력
첫 번째 수가 주어진다. 이 수는 30,000 보다 같거나 작은 양의 정수이다.
출력
첫 번째 줄에는 입력된 첫 번째 수로 시작하여 위의 규칙에 따라 만들 수 있는 수들의 최대 개수를 출력한다.
둘째 줄에 그 최대 개수의 수들을 차례대로 출력한다. 이들 수 사이에는 빈칸을 하나씩 둔다.
'IT > 알고리즘' 카테고리의 다른 글
BOJ 백준온라인져지 9550 아이들은 사탕을 좋아해 풀이 (0) | 2018.04.20 |
---|---|
BOJ 백준온라인져지 1371 가장 많은 글자 풀이 (0) | 2018.04.19 |
BOJ 백준온라인져지 6986 절사평균 풀이 (0) | 2018.04.18 |
BOJ 백준온라인져지 14488 준오는 급식충이야!! 풀이 (1) | 2018.04.17 |
BOJ 백준온라인져지 5347 LCM 풀이 (0) | 2018.04.16 |