코딩테스트

[BOJ_1233/Java] 주사위

Eun 2021. 12. 4. 17:01

 

https://www.acmicpc.net/problem/1233

 

1233번: 주사위

지민이는 주사위 던지기 게임을 좋아하여 어느 날 옆에 있는 동호를 설득하여 주사위 던지기 게임을 하자고 하였다. 총 3개의 주사위가 있다. 그리고 이 주사위는 각각 S1(2 ≤ S1 ≤ 20), S2(2 ≤ S2

www.acmicpc.net

문제

풀이

단순히 일일이 다 더해서 비교하는 알고리즘이다.

 

1. 값을 입력 받은 후(3 2 3)

2. 쪼개고 (3, 2, 3)

3. 그 값만큼(1~3, 1~2, 1~3) 1부터 순차대로 숫자를 저장하고

4. 일일이 더한 다음

5.  그 중 가장 큰 값의 인덱스를 구하면 된다.

 

더 좋은 방법이 있겠지만 내가 생각하기에 가장 최선인 방법은 for문을 여러번 돌리는 것....

for 문이 여러번 돌아가서 굉장히 헷갈렸다. 그래서 여태 풀었던 문제중에 가장 오래걸렸던 문제... 

나같은 빡대갈들은 좀더 연습해야겠다..

맞왜틀을 계속해서 벌이며 ,,, 구글링 힌트를 겨우 보며,,

내가 아주 멍청한 짓을 하고 있다는 것을 깨달은 후 다시 코드짜고 제출하니 맞았다고 ㅠ ㅠ

 

코드

import java.util.Scanner;

public class BOJ1233 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		Scanner sc = new Scanner(System.in);
		
		String input = sc.nextLine();		// 숫자 세개 이어 받기
		
		String [] split = input.split(" ");	// 공백을 기준으로 나누기
		
		int [] num1=new int[Integer.parseInt(split[0])];		
		int [] num2=new int[Integer.parseInt(split[1])];
		int [] num3=new int[Integer.parseInt(split[2])];
		
		
		for(int i=0;i<num1.length;i++) {				
			num1[i]=i+1;
		}
		for(int i=0;i<num2.length;i++) {
			num2[i]=i+1;
		}
		for(int i=0;i<num3.length;i++) {
			num3[i]=i+1;
		}
		
		int [] result = new int[81];		// 더한 값 저장하는 배열
		int sum;
		
		for(int i=0;i<Integer.parseInt(split[0]);i++) {
			for(int j=0;j<Integer.parseInt(split[1]);j++) {
				for(int k=0;k<Integer.parseInt(split[2]);k++) {
					sum=num1[i]+num2[j]+num3[k];
					result[sum]++;
				}
			}
		}
		
		int index=0;
		int max=0;
		
		for(int i=0;i<result.length;i++) {
			if(result[i]>max) {
				max=result[i];
				index=i;
			}
		}
		
		System.out.println(index);

	}

}

'코딩테스트' 카테고리의 다른 글

[BOJ_1668/JAVA] 트로피 진열  (0) 2021.12.05
[BOJ_2562/JAVA] 최댓값  (0) 2021.12.05
[BOJ_1076/JAVA] 저항  (0) 2021.12.02
[BOJ_1159/JAVA] 농구경기  (0) 2021.12.01
[백준/Python] 2588번 : 곱셈  (0) 2021.08.14