[백준/BOJ] 11943번 : 파일 옮기기 (JAVA / 자바)
안녕하세요~ 코딩하는 코알못 코메인입니다.
https://www.acmicpc.net/problem/11943
11943번: 파일 옮기기
첫 번째 줄에는 첫 번째 바구니에 있는 사과와 오렌지의 수 A, B가 주어진다. (0 ≤ A, B ≤ 1,000) 두 번째 줄에는 두 번째 바구니에 있는 사과와 오렌지의 수 C, D가 주어진다. (0 ≤ C, D ≤ 1,000)
www.acmicpc.net
- 문제 -
난이도 브론즈 4 문제이다.
문제 제목이 파일 옮기기? 근데 문제에는 과일이 나온다. 그래서 질문 검색에 들어가보니 여기서 파일은 file이 아닌 pile이라고 했다. 그렇다.
자바에서 입력방식은 scanner와 bufferedreader가 있다.
자바를 초반에 접하면 처음에 배우는 입력은 scanner이다. scanner가 bufferedreader보다 편하지만 속도가 느리다.
bufferedreader는 무조건 문자열로 받아오기때문에 정수형이나 실수형 변수에 저장하기 위해서는 입력과 형변환을 해줘야한다.
더 자세한 내용은 아래 글 참고 하면 좋다.
(JAVA / 자바) Scanner 와 Bufferedreader
안녕하세요~ 코딩하는 코알못 코메인입니다. 이번엔 백준 문제 풀면서 계속 언급될 scanner와 bufferedreader에 대한 간단한 정리를 해볼거다. 자바에서 입력은 scanner와 bufferedreader가 있다. 우선 각자
comain.tistory.com
풀이 방법
두 바구니에 사과 오랜지가 들어가 있다. 그걸 사과 오렌지 순서로 총 두줄로 입력을 한다.
1번 바구니 : A B
2번 바구니 : C D
이렇게. 그럼 저기서 A와 C는 사과이고, B와 D는 오렌지다. 각 바구니에 한가지의 과일만 들어가야 한단다.
과일 한개씩 옮길 수 있고 총 옮긴 횟수를 구하는거다. 이말은 곧 갯수가 횟수가 되는건다
1번 바구니 사과를 2번 바구니로 옮기면 2번 바구니의 오렌지를 1번 바구니로 옮겨야한다.
그렇다면 여기서 알 수 있는건 서로 교차로 옮겨야한다는 것인데 저기서 두가지 횟수가 나오게 된다,
A와 D를 옮기는 경우 B와 C를 옮기는 경우. 방금 갯수는 횟수라 했으니 A와 D의 총 갯수가 횟수가 될 것이고 B와 C도 마찬가지일 것이다. 그럼 결국 저기서 나오는 횟수는 A+D번, B+C번 두개인다. 그럼 이중 작은 수를 구하면 최소 이동 횟수가 나온다.
-풀이-
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));
//1번 바구니
StringTokenizer st = new StringTokenizer(br.readLine());
int A = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
//2번 바구니
StringTokenizer st2 = new StringTokenizer(br.readLine());
int C = Integer.parseInt(st2.nextToken());
int D = Integer.parseInt(st2.nextToken());
//이동 횟수가 적은 걸 출력
if((A + D) > (B + C)) {
System.out.println(B + C);
}else {
System.out.println(A + D);
}
}
}
-결과-
아직 코딩 공부가 부족한 필자라 설명과 풀이 방법이 많이 미흡할 수 있다. 코딩 고수들은 보시고 문제점이 있다면 댓글로 말해주시면 감사한 마음으로 참고 수정 하겠다.