728x90
문제
https://www.acmicpc.net/problem/2635
풀이
문제를 그대로 따라가면서 풀었음
주어지는 수까지 반복문을 돌면서 그 안에서 while(true){ }문 안에서 로직을 수행함
주어지는 수를 연산하면서 나오는 값으로 연산하기 위한 수를 최신화 해줌(0보다 작아질 때까지 반복하기 때문에 wihle(true){ }문 사용)
count 를 이용해서 숫자의 개수를 세고 max를 이용해서 최대인 count를 저장함
count가 max가 될 때의 인덱스 i를 answer에 저장한 후,
for문을 다 돌고 i일 때로 로직을 수행하는 결과를 StringBuilder에 저장하여 출력
코드
// 2635번 수 이어가기
// https://www.acmicpc.net/problem/2635
package BAEKJOON;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Num2635_수이어가기 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int max = Integer.MIN_VALUE;
int count = 2;
int answer = 0;
for (int i = 1; i <= N; i++) {
int a = N;
int b = i;
while (true) {
int temp = solution(a, b);
if (temp >= 0) {
count++;
} else {
break;
}
a = b;
b = temp;
}
if (max < count) {
max = count;
answer = i;
}
count = 2;
}
int a = N;
int b = answer;
StringBuilder sb = new StringBuilder();
sb.append(max).append("\n");
sb.append(N).append(" ").append(answer).append(" ");
while (true) {
int temp = solution(a, b);
if (temp >= 0) {
sb.append(temp).append(" ");
}
if (temp < 0) {
break;
}
a = b;
b = temp;
}
sb.setLength(sb.length() - 1);
System.out.println(sb);
}
public static int solution(int a, int b) {
return a - b;
}
}
728x90