Post

[BOJ/백준] 14039번 : Magic Squares (Java)

📘 백준 14039번 : Magic Squares


문제 바로가기


💡 문제 풀이


4x4 배열에 입력 숫자를 저장

0행의 합을 기준값으로 두고 1~3행의 합, 0~3열의 합을 확인

하나라도 다르면 not magic, 모두 같으면 magic


✅ 코드 (Java)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

// https://www.acmicpc.net/problem/14039
// 4x4 배열에 입력 숫자를 저장한 후
// 0행의 합을 기준값으로 두고 1~3행의 합, 0~3열의 합을 확인하고 하나라도 다르면 not magic
// 모두 같으면 magic
public class B14039_Magic_Squares {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int square[][] = new int[4][4]; // 4x4 크기의 숫자 정사각형
		for (int i = 0; i < 4; i++) { // square[][] 채우기
			StringTokenizer st = new StringTokenizer(br.readLine());
			for (int j = 0; j < 4; j++) {
				square[i][j] = Integer.parseInt(st.nextToken());
			}
		}
		System.out.println(magicSquare(square) ? "magic" : "not magic"); // 출력
		br.close();
	}

	public static boolean magicSquare(int[][] square) { // Magic Square인지 확인
		int sum = square[0][0] + square[0][1] + square[0][2] + square[0][3]; // 0행의 합(기준)
		for (int i = 1; i < 4; i++) { // 행의 합 확인하기
			if (sum != square[i][0] + square[i][1] + square[i][2] + square[i][3]) { // 기준과 다르면
				return false;
			}
		}
		for (int j = 0; j < 4; j++) { // 열의 합 확인하기
			if (sum != square[0][j] + square[1][j] + square[2][j] + square[3][j]) { // 기준과 다르면
				return false;
			}
		}
		return true;
	}
}


💾 제출 결과


보러 가기