블로그 이전, 2023. 1. 14. 22:44 에 작성했던 글입니다.

내가 헤맸던 부분
1.BufferedWriter를 이용한 int형 출력
bw.write(a);

이렇게 알 수 없는 기호로 나온다.
65를 입력해보면 어떤 의미인지 알 수 있다.

65를 입력하면 A가 나온다. 입력한 숫자가 나오는 것이 아닌 아스키코드에 따른 문자가 나온다.
따라서 이를 int형으로 출력하려면 bw.write(a+""); 이렇게 입력해야한다.
2.반례
처음에는 단순하게 A+D 나 B+C를 출력하면 된다고 생각했다.
나의 생각에 대한 반례
1)
| 사과 | 오렌지 |
| 0 | 0 |
| 0 | 1 |
답은 0이지만 단순히 A+D 출력을 한다고 하면 1이 나옴
2)
| 사과 | 오렌지 |
| 99 | 0 |
| 0 | 99 |
답은 0인데 단순히 A+D 출력을 한다고 하면 198 나옴
3)
| 사과 | 오렌지 |
| 10 | 10 |
| 10 | 0 |
답은 10인데 단순히 B+C 출력을 한다고 하면 20이 나옴
내가 생각한 해결 방법
한 바구니에서 사과를 꺼냈으면 반드시 다른 바구니에서는 오렌지를 꺼내야한다.
그래서 A+D로 꺼냈을때, B+C로 꺼냈을때를 비교하여 작은 값을 출력하도록 했다.
물론 0일때는 안 옮기는게 효율적이지만, 수식으로 표현해도 별 다른 문제가 없어보여서 이대로 진행했다.
반례 예시 표를 보면 이해가 될 것이다. 그냥 A+D와 B+C를 비교해도 문제가 없었다.
나의 코드
import java.io.*;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st1 = new StringTokenizer(br.readLine());
StringTokenizer st2 = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st1.nextToken());
int b = Integer.parseInt(st1.nextToken());
int c = Integer.parseInt(st2.nextToken());
int d = Integer.parseInt(st2.nextToken());
if(a+d>=b+c){
bw.write(b+c+"");
}else{
bw.write(a+d+"");
}
bw.flush();
br.close();
bw.close();
}
}
개발 초보입니다. 본문 중 틀린 정보는 알려주시면 감사하겠습니다!
'알고리즘 리뷰' 카테고리의 다른 글
| 백준 JAVA 10813 공 바꾸기 리뷰 (0) | 2023.08.29 |
|---|---|
| 백준 JAVA 3009 네 번째 점 리뷰 (0) | 2023.08.29 |
| JAVA 백준 15552 빠른 A+B 리뷰 (0) | 2023.08.29 |
| JAVA 백준 2338 긴자리 계산 리뷰 (0) | 2023.08.29 |
| JAVA 백준 10809 알파벳 찾기 리뷰 (0) | 2023.08.29 |