import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
while (true) {
int max = scan.nextInt();
int mid = scan.nextInt();
int min = scan.nextInt();
if (max < mid) {
int tmp = max;
max = mid;
mid = tmp;
}
if (max < min) {
int tmp = max;
max = min;
min = tmp;
}
if (mid < min) {
int tmp = mid;
mid = min;
min = tmp;
}
if (max <= 0 && mid <= 0 && min <= 0) {
break;
}
if (max >= (mid + min)) {
max = (mid + min) - 1;
}
if ((max == mid) && (mid == min)) {
System.out.println(max + mid + min);
} else if ((max == mid) || (mid == min) || (max == min)) {
System.out.println(2 * mid + min);
} else {
System.out.println(max + mid + min);
}
}
}
}
위의 코드는 잘못된 코드이다..
다음 코드가 정답이다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int max = Integer.parseInt(st.nextToken());
int mid = Integer.parseInt(st.nextToken());
int min = Integer.parseInt(st.nextToken());
int maxN = 0;
if(max > mid){
if(mid > min) maxN = max;
else maxN = (max > min) ? max : min;
}
else maxN = (mid > min) ? mid : min;
if(max + mid + min - maxN > maxN) System.out.println(max + mid + min);
else System.out.print((max + mid + min - maxN)*2-1);
br.close();
}
}
Scanner와 BufferdReader의 차이점이 존재하는 것 같다.
속도 부분이나 입력 받는 값의 타입을 다루는 부분이 조금 다른 것 같다.
BufferReader를 공부해야겠다..
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준_JAVA_알고리즘] 24262 알고리즘 수업 - 알고리즘의 수행 시간 1 (1) | 2024.02.01 |
---|---|
[백준_JAVA] 9063 대지 (0) | 2024.02.01 |
[백준_JAVA] 9506 약수들의 합 (0) | 2024.01.27 |
[백준_JAVA] 1193 분수찾기 (0) | 2024.01.27 |
[백준_JAVA] 2566 최댓값 (0) | 2024.01.27 |