관리 메뉴

Legday

[백준]2480번: 주사위 세개(Java) 본문

BaekJoonStudy

[백준]2480번: 주사위 세개(Java)

Legday 2022. 8. 29. 16:55

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