From 89a9d7afeded80f3c3c24484c6fb7cb349d5109c Mon Sep 17 00:00:00 2001 From: Ho-Da-Dak Date: Mon, 28 Jul 2025 00:34:23 +0900 Subject: [PATCH 1/2] =?UTF-8?q?[20250725]=20SEA/Pro/=EA=B3=84=EC=82=B0?= =?UTF-8?q?=EA=B2=8C=EC=9E=84/=EA=B9=80=EB=93=9D=ED=98=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...4\354\202\260 \352\262\214\354\236\204.md" | 141 ++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 "Ho/202507/25 \352\263\204\354\202\260 \352\262\214\354\236\204.md" diff --git "a/Ho/202507/25 \352\263\204\354\202\260 \352\262\214\354\236\204.md" "b/Ho/202507/25 \352\263\204\354\202\260 \352\262\214\354\236\204.md" new file mode 100644 index 0000000..5f6cc3d --- /dev/null +++ "b/Ho/202507/25 \352\263\204\354\202\260 \352\262\214\354\236\204.md" @@ -0,0 +1,141 @@ +```java +import java.util.ArrayDeque; +import java.util.Iterator; + +class UserSolution { + + static int INIT_IDX = 50_000; + static int MAX_SIZE = 100_000; + static int MOD = 20; + int leftIdx; + int rightIdx; + int jokerNumber; + int[] cards; + ArrayDeque[][] answerList; + + void init(int mJoker, int mNumbers[]) { + cards = new int[MAX_SIZE]; + leftIdx = INIT_IDX; + rightIdx = INIT_IDX; + jokerNumber = mJoker; + + answerList = new ArrayDeque[MOD][MOD]; + + // 정답지 관리하기 + for (int i = 0; i < 20; i++) { + for (int j = 0; j < 20; j++) { + answerList[i][j] = new ArrayDeque<>(); + } + } + + // 오른쪽에 삽입하는 경우 + appendRight(mNumbers); + for (int joker = 0; joker < 20; joker++) { + + for (int i = 0; i < 2; i++) { + int sum = 0; + for (int j = 0; j < 4; j++) { + int curNum = cards[leftIdx + i + j]; + if(curNum == -1) { + curNum = joker; + } + sum += curNum; + } + int curMod = sum % 20; + // 시작 인덱스 넣어주기 + answerList[joker][curMod].addLast(leftIdx + i); + } + } + } + + void putCards(int mDir, int mNumbers[]) { + if (mDir == 0) { + appendLeft(mNumbers); + calcNumber(mDir); + }else{ + appendRight(mNumbers); + calcNumber(mDir); + } + } + + int findNumber(int mNum, int mNth, int ret[]) { + // 정답지에서 찾기 + ArrayDeque current = answerList[jokerNumber% MOD][mNum]; + if(current.size() < mNth) return 0; + Iterator iter = current.iterator(); + Integer cur = 0; + + while (mNth-- > 0 && iter.hasNext()) { + cur = iter.next(); + } + + for (int i = 0; i < 4; i++) { + ret[i] = cards[cur + i]; + } + + return 1; + } + + void changeJoker(int mValue) { + jokerNumber = mValue % MOD; + } + + void appendRight(int[] arr) { + for (int i = 0; i < 5; i++) { + cards[rightIdx] = arr[i]; + rightIdx++; + } + } + + void appendLeft(int[] arr) { + leftIdx -= 5; + for(int i = 0; i < 5; i++) { + cards[leftIdx + i] = arr[i]; + } + } + + void calcNumber(int mDir) { + // 추가된 카드 계산을 반영하기 + + if(mDir == 0) { + // 조커가 MOD 때문에 20까지니까 모두 추가하기 + for (int joker = 0; joker < MOD; joker++) { + // 왼쪽 삽입인 경우 + for (int i = 4; i >= 0; i--) { + int sum = 0; + for (int j = 0; j < 4; j++) { + int curNum = cards[leftIdx + i + j]; + if(curNum == -1) { + curNum = joker; + } + sum += curNum; + } + int curMod = sum % 20; + // 시작 인덱스 넣어주기 + answerList[joker][curMod].addFirst(leftIdx + i); + } + } + } + else { + // 조커가 MOD 때문에 20까지니까 모두 추가하기 + for (int joker = 0; joker < MOD; joker++) { + // 오른쪽 삽입인 경우 + for (int i = -8; i < -3; i++) { + int sum = 0; + for (int j = 0; j < 4; j++) { + int curNum = cards[rightIdx + i + j]; + if(curNum == -1) { + curNum = joker; + } + sum += curNum; + } + int curMod = sum % 20; + // 시작 인덱스 넣어주기 + answerList[joker][curMod].addLast(rightIdx + i); + } + } + } + + } +} +``` \ No newline at end of file From fee917f8583a6c51b1d22e53b1909cca1764aad8 Mon Sep 17 00:00:00 2001 From: Ho-Da-Dak Date: Wed, 30 Jul 2025 23:10:27 +0900 Subject: [PATCH 2/2] =?UTF-8?q?[20250730]=20SWA/Pro/AI=20=EB=A1=9C?= =?UTF-8?q?=EB=B4=87/=EA=B9=80=EB=93=9D=ED=98=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "Ho/202507/30 AI \353\241\234\353\264\207.md" | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 "Ho/202507/30 AI \353\241\234\353\264\207.md" diff --git "a/Ho/202507/30 AI \353\241\234\353\264\207.md" "b/Ho/202507/30 AI \353\241\234\353\264\207.md" new file mode 100644 index 0000000..e69de29