728x90
반응형
SMALL
https://softeer.ai/practice/7374
문제 스펙은 다음과 같다.
핵심 로직은
한줄만 생각하면 된다.
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
'알고리즘 단련장 > 소프티어' 카테고리의 다른 글
[소프티어] GBC 레벨2 자바 풀이 단순 구현 (0) | 2024.07.19 |
---|---|
[소프티어] 비밀 메뉴 레벨2 자바 풀이 단순 구현 (21년 재직자 대회 예선) (0) | 2024.07.19 |
[소프티어] 장애물 인식 프로그램 dfs 자바 풀이 레벨2 (0) | 2024.07.18 |
[소프티어] 레벨1 문제 유형 전체적인 난이도 후기 (올솔 후기) (0) | 2024.07.18 |
[소프티어] Yeah, but How? 레벨2 자바 풀이 (한양대 HCPC 2023) (0) | 2024.07.18 |