
맨 처음에는 그냥 쉽게 생각하고 풀었는데 테스트케이스만 보고 예외를 생각을 안해서 살짝 헤맸었다.
이 문제에서 테스트케이스만으로 해결 할 수 없는 문제는 총 세가지였다.
1번에 대한 처리는 변수를 두개 받고 나서 max 처리하는 방식으로 하고 2번에 대한 처리는 조건문으로 처리했다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static int a, b;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
StringBuilder sb = new StringBuilder();
a = Integer.parseInt(st.nextToken());
b = Integer.parseInt(st.nextToken());
int A = Math.min(a, b);
int B = Math.max(a, b);
if (A == B) {
System.out.print(0);
return;
}
System.out.println(B - A - 1);
for (int i = A + 1; i < B; i++) {
sb.append(i);
sb.append(" ");
}
System.out.println(sb);
}
}
3번에 대한 처리는 변수타입의 문제였다. 처음에는 조건을 안보고 그냥 int로 처리했지만 나중에 long으로 바꾸고 코드를 전면 수정했다.
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer st = new StringTokenizer(br.readLine());
;
long a = Long.parseLong(st.nextToken());
long b = Long.parseLong(st.nextToken());
if (a > b) {
long tmp = a;
a = b;
b = tmp;
}
if (a == b)
sb.append(b - a).append("\n");
else sb.append(b - a - 1).append("\n");
for (long i = a + 1; i < b; i++) {
sb.append(i).append(" ");
}
System.out.println(sb);
}
}
문제 조건과 변수를 어떤 걸 쓸지 문제를 전부 파악하고 진행해야겠다고 느꼈다.