Legday
[백준]2480번: 주사위 세개(Java) 본문
https://www.acmicpc.net/problem/2480
2480번: 주사위 세개
1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다. 같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다. 같은 눈이 2개
www.acmicpc.net
1) 문제설명
- 3개의 정수를 받아 다 같을때 , 2개만 같을때 , 다 다를때를 나누어 금액을 결정하면 된다.
2) 소스코드
- 우선 int형 배열을 선언한다(길이는 3)
- count(같은 값갯수 세기위해),sameData(같은값을 저장하기위해) 선언
- for문을 이용하여 주사위 값3개를 입력받아 배열에 저장
- Scanner객체는 이제 안쓰기 때문에 close()메서드를 실행해 닫아준다.
- 이때 sort메서드를 쓴다(디폴트값으로 오름차순을 정렬한다)
- 그리고 0번째 인덱스부터 2번인덱스 까지 for문을 돌리고
- 조심해야할 건 마지막 인덱스에 도달했을때는 break문으로 나온다. 왜냐하면 마지막 전 인덱스를 마지막 인덱스와 비교하기 때문에 마지막인덱스를 검사할 필요없다. 오히려 마지막인덱스를 검사하면 마지막 인덱스와 마지막인덱스+1을 검사하기 때문에 범위를 초과해서 오류가 뜬다.
- 그리고 비교하면서 같을때 count값을 1개씩 더해주고 같은값을 sameData에 저장해 기억한다.
- 그리고 count가 2이면 모두가 같은거고 count가 1이면 2개만 같고 그 외에는 같은게 없기 때문에 각각 계산해서 출력해주면 끝!
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int count=0;
int sameData=0;
int []arrDice = new int[3];
for(int i=0;i<arrDice.length;i++) {
arrDice[i]=sc.nextInt();
}
sc.close();
Arrays.sort(arrDice); //오름차순으로 정렬
for(int i=0;i<arrDice.length;i++) {
if(i==arrDice.length-1) break; //마지막인덱스일때 마지막인덱스+1 을 하면 범위초과하기 때문에 break
if(arrDice[i]==arrDice[i+1]) {
count++;
sameData=arrDice[i];
}
}
if(count==2) {
int result = 10000;
result+=(sameData*1000);
System.out.println(result);
}
else if(count==1) {
int result = 1000;
result+=(sameData*100);
System.out.println(result);
}
else {
int result = (arrDice[2]*100);
System.out.println(result);
}
}
}'BaekJoonStudy' 카테고리의 다른 글
| [백준]10950번: A+B -3 (Java) (0) | 2022.08.29 |
|---|---|
| [백준]2739번: 구구단 (0) | 2022.08.29 |
| [백준]2525번: 오븐시계(Java) (0) | 2022.08.27 |
| [백준]2884번: 알람 시계(Java) (0) | 2022.08.27 |
| [백준]14681번: 사분면 고르기(Java) (0) | 2022.08.27 |