알고리즘 단련장/소프티어

[소프티어] 진정한 효도 자바 풀이 레벨2 단순 구현

snapcoder 2024. 7. 18. 23:56
728x90
반응형
SMALL

 

 

 

 

https://softeer.ai/practice/7374

 

Softeer - 현대자동차그룹 SW인재확보플랫폼

 

softeer.ai

 

 

 

문제 스펙은 다음과 같다.

 

 

 

 

핵심 로직은

한줄만 생각하면 된다.

111인 경우 무조건 비용 0

121인 경우 비용 1

131인 경우 비용 2

123인 경우 무조건 비용 2

        // 111 > 0
        // 121 > 1개를 나머지 2개에 맞추기
        // 123 > 무조건 비용 2

 

 

 

 

 

쉽게 생각하자 쉽게.

 

ㅣㅣㅣ

세로줄 3개

ㅡㅡㅡ

가로줄 3개

 

총 6개의 비용 중 가장 작은값 출력하면 정답이 된다.

 

 

 

 

 

전체 코드는 다음과 같다.

import java.io.*;
import java.util.*;

public class Main {

    public static int m[][];
    public static Integer n;
    
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        m = new int[3][3];
        // 111 > 0
        // 121 > 1개를 나머지 2개에 맞추기
        // 123 > 무조건 비용 2
        
        for(int i=0; i<3; i++){
            StringTokenizer st = new StringTokenizer(br.readLine());
            for(int j=0; j<3; j++){
                
                m[i][j] = Integer.parseInt( st.nextToken() );
            }
        }

        
        int rowMin = 2;
        for(int i=0; i<3; i++){
            int tempMin = -1;
            int r1 = m[0][i];
            int r2 = m[1][i];
            int r3 = m[2][i];
            if(r1 == r2 && r2 == r3){
                tempMin = 0;
            }else if(r1 == r2 || r1 == r3 || r2 == r3){
                if(r1 == r2) tempMin = Math.abs(r1-r3);
                if(r1 == r3) tempMin = Math.abs(r1-r2);
                if(r2 == r3) tempMin = Math.abs(r1-r3);
            }else{
                tempMin = 2;
            }
            if(rowMin > tempMin){rowMin = tempMin;}
        }

        int colMin = 2;
        for(int i=0; i<3; i++){
            int tempMin = -1;
            int r1 = m[i][0];
            int r2 = m[i][1];
            int r3 = m[i][2];
            if(r1 == r2 && r2 == r3){
                tempMin = 0;
            }else if(r1 == r2 || r1 == r3 || r2 == r3){
                if(r1 == r2) tempMin = Math.abs(r1-r3);
                if(r1 == r3) tempMin = Math.abs(r1-r2);
                if(r2 == r3) tempMin = Math.abs(r1-r3);
            }else{
                tempMin = 2;
            }
            if(colMin > tempMin){colMin = tempMin;}
        }
        
        bw.write(String.valueOf(Math.min(rowMin, colMin)) + "\n");

        bw.close();
    }

}
728x90
반응형
LIST