Algorithm/Baekjoon
[백준 알고리즘][자바] 2480번 : 주사위 세개
hyunipad
2023. 4. 20. 23:28
반응형
https://www.acmicpc.net/problem/2480
백준 알고리즘 구현 파트를 브론즈 4 정도부터 풀고 있는데, 부족함을 많이 느끼네요.
코드를 구현할 때 for문에 너무 집착하는 경향이 있는 것 같습니다...
이 문제의 포인트는 같은 눈이 몇 개인지를 구해야 하는 것입니다.
아래는 제가짠 코드
for문을 통해 같은 수가 존재 하는지 flag를 통해 저장하고
다시 전체 for문을 통해 같은 눈이 몇개인지와 max값을 구했습니다.
그리고 그 아래는 참조한 코드
그냥 if문으로 분기를 하여 상금을 구하고 max 값은 Math.max()를 중첩시켜 구했네요.
메모리나 시간은 제가 짠 코드가 더 잘나오긴 했는데, 직관적인 건 참조한 코드가 더 좋은 거 같습니다.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Number_2480 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
// 1. 같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다.
// 2. 같은 눈이 2개만 나오는 경우에는 1,000원+(같은 눈)×100원의 상금을 받게 된다.
// 3. 모두 다른 눈이 나오는 경우에는 (그 중 가장 큰 눈)×100원의 상금을 받게 된다.
String[] numArray = br.readLine().split(" ");
Boolean flag = false;
int same = 0;
int count = 0;
int max = 0;
for(int i = 0 ; i < 2 ; i++) {
for(int i2 = i + 1 ; i2 < 3 ; i2++) {
int num_1 = Integer.parseInt(numArray[i]);
int num_2 = Integer.parseInt(numArray[i2]);
if(num_1 == num_2) {
same = num_1;
flag = true;
}
if(flag) {
break;
}
}
if(flag) {
break;
}
}
for(int i = 0 ; i < numArray.length ; i++) {
int N = Integer.parseInt(numArray[i]);
if(same == N) {
count++;
}
if(N > max) {
max = N;
}
}
if(count == 3) {
bw.write(String.valueOf(10000 + same * 1000));
}else if(count == 2) {
bw.write(String.valueOf(1000 + same * 100));
}else {
bw.write(String.valueOf(max * 100));
}
br.close();
bw.flush();
bw.close();
}
}
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Number_2480 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String[] numArray = br.readLine().split(" ");
int num_1 = Integer.parseInt(numArray[0]);
int num_2 = Integer.parseInt(numArray[1]);
int num_3 = Integer.parseInt(numArray[2]);
if (num_1 == num_2 && num_1 == num_3 && num_2 == num_3) {
bw.write(String.valueOf((10000 + (num_1 * 1000))));
} else if (num_1 == num_2 || num_1 == num_3) {
bw.write(String.valueOf(1000 + (num_1 * 100)));
} else if (num_2 == num_3) {
bw.write(String.valueOf(1000 + (num_2 * 100)));
} else {
bw.write(String.valueOf((Math.max(num_1, Math.max(num_2, num_3)) * 100)));
}
br.close();
bw.flush();
bw.close();
}
}
반응형