달달한 스토리

728x90
반응형
반응형

 

 

오늘 풀어본 코딩 테스트는

 

백준 "주사위 세 개"라는 문제였다.

 

코딩 테스트를 진행할 때 나는 문제 푸는 것에만

 

즉, 정답을 맞히는 것만 집중을 하다가 오늘은

 

명확하게 잘 알 수 있게 코드를 정리하면서 쓰는 것에 집중하여 작성하였다.

 

코드 스타일에 대해서 좀 더 신경을 써보자.

 

3개의 주사위가 모두 같을 때를 구분하기 위해

 

불리언 값으로 미리 나누어 두었는데,

 

마지막에 if를 세 개를 써서 사용하니,

 

예외 처리를 하지 못해 답이 올바르게 나옴에도,

 

틀렸습니다가 나왔다.

 

되도록이면 if if else else 문으로 사용을 해야겠다.

 

728x90

 

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
import java.util.*;

class Main {
    
    public static void main(String[] args) throws IOException {
        BufferedReader bf = 
            new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(bf.readLine());
        
        int firstDice = Integer.parseInt(st.nextToken());
        int secondDice = Integer.parseInt(st.nextToken());
        int thirdDice = Integer.parseInt(st.nextToken());
        
        compareDice(firstDice, secondDice, thirdDice);
    }
    
   private static void compareDice(int first, int second, int third) {
       
        boolean isFSSame = first == second;
        boolean isFTSame = first == third;
        boolean isSTSame = second == third;

    
        // 같은 숫자가 나온 횟수
        int sameCount = 0;
        // 같은 거의 해당하는 주사위 눈
        int samePoint = 0;
        // 우승자 상금
        int winnerMoney = 0;
        // 3개 중 제일 큰 숫자
        int biggestNum = 0;
        // 숫자 비교를 위한 인트 배열
        int[] compareArr = new int[3];
        compareArr[0] = first;
        compareArr[1] = second;
        compareArr[2] = third;
        
        if (isFSSame) {
            sameCount += 1;
            samePoint = first;
        }
        
        if (isFTSame) {
            sameCount += 1;
            samePoint = first;
        }
        
        if (isSTSame) {
            sameCount += 1;
            samePoint = second;
        }
        
        //3개 중 제일 큰 숫자 구하기
        for(int i = 0; i < compareArr.length; i++) {
                
                if(compareArr[i] > biggestNum) {
                    biggestNum = compareArr[i];
                }
                
            }
        
        
        if (isFSSame && isSTSame) {
             // 전부 같을 떄
            winnerMoney = 10000 + (samePoint * 1000);
        } else if (sameCount == 1) {
            winnerMoney = 1000 + (samePoint * 100);
        } else {
            winnerMoney = biggestNum * 100;
        }
        
        System.out.print(winnerMoney);
    }
}

 

추가적으로 자바 코딩 테스트를 연습할 수 있는 컴파일러 사이트를 올려 두겠다.

 

https://www.compilejava.net/

 

Online Java IDE

 

www.compilejava.net

 

728x90
반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading