728x90
문제설명
입력 & 출력
나의 풀이
백준 문제 10093번 "숫자"는 두 개의 정수 A와 B가 주어질 때, A와 B 사이에 존재하는 정수들을 오름차순으로 출력하는 문제입니다. 단, A와 B가 같으면 아무것도 출력하지 않아야 합니다.
30 점 코드
public class BOJ10093 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer token = new StringTokenizer(br.readLine());
StringBuilder sb = new StringBuilder();
int a = Integer.parseInt(token.nextToken());
int b = Integer.parseInt(token.nextToken());
// a와 b의 대소 관계를 정렬하여 작은 값부터 순회
int start = Math.min(a, b) + 1;
int end = Math.max(a, b);
int cnt = 0;
for(int i = start; i < end; i++){
cnt++;
sb.append(i).append(" ");
}
System.out.println(cnt);
if (sb.length() > 0) {
sb.deleteCharAt(sb.length() - 1); // 마지막 문자 삭제
}
System.out.println(sb.toString());
}
}
서브 태스크를 보면 A, B는 10^15까지 가능합니다. 현재 코드는 int를 사용하고 있어서 이 범위를 처리할 수 없습니다.
100 점 코드
int형이 아닌 long 형으로 a와 b값을 받아주고, 두 수가 같은 경우 아무것도 출력하지 않았습니다.
그리고 각 범위를 돌아 숫자의 개수와 각 수를 StringBuilder에 append()메서드로 추가해줍니다. 이 때 마지막에도 공백이 포함되기 때문에 마지막 공백을 없애주기 위해서 StringBuilder의 deleteCharAt()메서드를 사용해주어 마무리해줬습니다.
공백 삭제 방법
이번 문제에서는 공백을 삭제하기 위해서 deleteCharAt()메서드를 사용했지만, setLength()메서드 또한 존재합니다.
deleteCharAt(), setLength()메서드는 아래의 포스팅에서 자세히 알아볼 수 있습니다.
'Coding Test > 백준' 카테고리의 다른 글
[백준] 저작권 (구현, Java) (0) | 2024.11.11 |
---|---|
[백준] 성 지키기 (구현, Java) (0) | 2024.11.11 |
[백준] 상금 헌터 (Java, BufferedReader, StringTokenizer, StringBuilder) (0) | 2024.11.07 |
[백준] 플러그 (Java, BufferedReader) (0) | 2024.11.06 |
[백준] 시그마 (등차 수열) (0) | 2024.11.05 |