From 4a2d08618493a3f1ccf2bf0eb09ffd5db12fde4e Mon Sep 17 00:00:00 2001 From: Hexeong <123macanic@naver.com> Date: Thu, 2 Apr 2026 13:18:59 +0900 Subject: [PATCH] =?UTF-8?q?[Week13]=20PGS=2060059:=20=EC=9E=90=EB=AC=BC?= =?UTF-8?q?=EC=87=A0=EC=99=80=20=EC=97=B4=EC=87=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Hexeong.java" | 0 .../Hexeong.java" | 92 +++++++++++++++++++ 2 files changed, 92 insertions(+) rename "weekly/week13/PGS_ 42892_\352\270\270\354\260\276\352\270\260\352\262\214\354\236\204/Hexeong.java" => "weekly/week13/PGS_42892_\352\270\270\354\260\276\352\270\260\352\262\214\354\236\204/Hexeong.java" (100%) create mode 100644 "weekly/week13/PGS_60059_\354\236\220\353\254\274\354\207\240\354\231\200\354\227\264\354\207\240/Hexeong.java" diff --git "a/weekly/week13/PGS_ 42892_\352\270\270\354\260\276\352\270\260\352\262\214\354\236\204/Hexeong.java" "b/weekly/week13/PGS_42892_\352\270\270\354\260\276\352\270\260\352\262\214\354\236\204/Hexeong.java" similarity index 100% rename from "weekly/week13/PGS_ 42892_\352\270\270\354\260\276\352\270\260\352\262\214\354\236\204/Hexeong.java" rename to "weekly/week13/PGS_42892_\352\270\270\354\260\276\352\270\260\352\262\214\354\236\204/Hexeong.java" diff --git "a/weekly/week13/PGS_60059_\354\236\220\353\254\274\354\207\240\354\231\200\354\227\264\354\207\240/Hexeong.java" "b/weekly/week13/PGS_60059_\354\236\220\353\254\274\354\207\240\354\231\200\354\227\264\354\207\240/Hexeong.java" new file mode 100644 index 0000000..2569ec5 --- /dev/null +++ "b/weekly/week13/PGS_60059_\354\236\220\353\254\274\354\207\240\354\231\200\354\227\264\354\207\240/Hexeong.java" @@ -0,0 +1,92 @@ +import java.util.*; + +class Solution { + public boolean solution(int[][] key, int[][] lock) { + boolean answer = false; + + int degree = 0; + while (degree < 360) { + int[][] new_key = rotate(key, degree); + + boolean flag = false; + for (int i = - new_key.length + 1; i < lock.length; i++) { + if (answer) { + break; + } + + for (int j = - new_key[0].length + 1; j < lock[0].length; j++) { + if (isSolved(new_key, lock, i, j)) { + answer = true; + break; + } + } + } + if (answer) { + break; + } + + degree += 90; + } + + return answer; + } + + public boolean isSolved(int[][] key, int[][] lock, int pos_x, int pos_y) { + boolean result = true; + for (int i = 0; i < lock.length; i++) { + if (!result) { + break; + } + + for (int j = 0; j < lock[0].length; j++) { + if (pos_y <= i && i < pos_y + key.length + && pos_x <= j && j < pos_x + key[0].length) { + if (1 != lock[i][j] + key[i - pos_y][j - pos_x]) { + result = false; + break; + } + } + else if (1 != lock[i][j]) { + result = false; + break; + } + } + } + + return result; + } + + public int[][] rotate(int[][] key, int degree) { + if (degree == 90) { + int[][] new_key = new int[key[0].length][key.length]; + for (int i = 0; i < key.length; i++) { + for (int j = 0; j < key[0].length; j++) { + new_key[key[0].length - j - 1][i] = key[i][j]; + } + } + return new_key; + } + + if (degree == 180) { + int[][] new_key = new int[key.length][key[0].length]; + for (int i = 0; i < key.length; i++) { + for (int j = 0; j < key[0].length; j++) { + new_key[key.length - i - 1][key[0].length - j - 1] = key[i][j]; + } + } + return new_key; + } + + if (degree == 270) { + int[][] new_key = new int[key[0].length][key.length]; + for (int i = 0; i < key.length; i++) { + for (int j = 0; j < key[0].length; j++) { + new_key[j][key.length - i - 1] = key[i][j]; + } + } + return new_key; + } + + return key; + } +} \ No newline at end of file