728x90
문제
* 두 개의 바구니에 각각 사과와 오렌지가 다른 개수로 주어진다.
* 한 바구니에 한 가지의 과일만 있도록 옮기는 최소값을 구해라
* 단, 한번에 한개의 과일만 옮길 수 있다.
문제 링크 : https://www.acmicpc.net/problem/11943
원리
* 결국 A바구니의 사과를 옮기면, B바구니의 오렌지를 옮길 수 밖에 없다.
* 따라서, a1, o1, a2, o2가 있다고 할 때,
* a1 + o2 혹은 a2 + o1 만큼 옮겨야 한다.
* 즉, 둘 중 더 적은 합만큼이 정답
나의 코드
1. 조건문으로 Math 함수 없이 풀기 시도 [일부실패]
더보기
import java.io.*;
import java.util.StringTokenizer;
public class no11943 {
private static int apple1, apple2, orange1, orange2;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st1 = new StringTokenizer(br.readLine(), " ");
apple1 = Integer.parseInt(st1.nextToken());
orange1 = Integer.parseInt(st1.nextToken());
StringTokenizer st2 = new StringTokenizer(br.readLine(), " ");
apple2 = Integer.parseInt(st2.nextToken());
orange2 = Integer.parseInt(st2.nextToken());
int answer = 0;
if(apple1>=apple2) {
if(orange2<apple2) answer += apple1 + orange2;
else answer += apple2 + orange1;
}
else {
if(orange1<apple1) answer += apple2 + orange1;
else answer += apple1 + orange2;
}
System.out.println(answer);
}
}
2. 점화식대로 Math 함수로 풀기 [성공]
private static int apple1, apple2, orange1, orange2;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st1 = new StringTokenizer(br.readLine(), " ");
apple1 = Integer.parseInt(st1.nextToken());
orange1 = Integer.parseInt(st1.nextToken());
StringTokenizer st2 = new StringTokenizer(br.readLine(), " ");
apple2 = Integer.parseInt(st2.nextToken());
orange2 = Integer.parseInt(st2.nextToken());
System.out.println(Math.min(apple1 + orange2, apple2 + orange1));
}
728x90
'알고리즘 저장소 (일반방식과 나만의 풀이) > JAVA' 카테고리의 다른 글
[백준] no2530 - 인공지능 시계 (LocalDateTime 사용) (0) | 2023.05.27 |
---|---|
[백준] no13549: 숨바꼭질 3 (0) | 2023.05.25 |
[백준] no11660: 구간 합 구하기5 (0) | 2023.05.23 |
[백준] no12865: 평범한 배낭 - DP (0) | 2023.05.21 |
[백준] no1504: 특정한 최단 경로 - 다익스트라 (0) | 2023.05.18 |