송진 가루와 함께 올라간 기온으로 봄이 왔음이 완연해진 한주였다. 24년의 봄이 다가오는 3월 넷째 주를 되돌아본다.
알고리즘 문제 풀이를 꾸준히 하고는 있다. 다른 개념 공부도 하고 싶은데 시간 분배가 어려워서 고민이 많다. 회사, 서블릿, 알고리즘 1문제 풀이가 끝나면 하루가 끝나기 때문이다. 주말 시간을 내서 공부를 해보려고 하지만 이래저래 일이 많아서 공부를 진득이 하지는 못하고 있다. (핑계임)
- 알고리즘 강의 복습은 회사 스터디 시간에 하려고 했지만, 회사 일정으로 스터디를 못하게 돼서 진행 못하고 있음
- CS 공부를 잠시 멈춰두고 토이 프로젝트를 시작하려고 했으나 서블릿 공부로 방향을 바꿈
한 가지 주제에 집중 못하고 이리저리 흔들리는 중이다.
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) {
try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
int[][] board = getInput(br);
int[][] ip = getInput(br);
Solution s = new Solution();
System.out.println(s.solution(board, ip));
} catch (IOException e) {
throw new RuntimeException(e);
}
}
private static int[][] getInput(BufferedReader br) throws IOException {
int[][] input = new int[5][5];
for (int i = 0; i < input.length; i++) {
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
for (int j = 0; j < input[i].length; j++) {
input[i][j] = Integer.parseInt(st.nextToken());
}
}
return input;
}
}
class Solution {
public int solution(int[][] board, int[][] input) {
Calculator c = new Calculator(board, input);
return c.getCnt();
}
class Calculator {
int[][] board;
boolean[][] check;
int[][] input;
int cnt = 0;
public Calculator(int[][] board, int[][] input) {
this.board = board;
this.check = new boolean[board.length][board[0].length];
this.input = input;
}
public int getCnt() {
for (int i = 0; i < this.input.length; i++) {
for (int j = 0; j < this.input[i].length; j++) {
check(this.input[i][j]);
if(isCompleted()) return this.cnt;
}
}
return -1;
}
private void check(int num) {
for (int i = 0; i < this.board.length; i++) {
for (int j = 0; j < this.board[i].length; j++) {
if (this.board[i][j] == num) {
this.check[i][j] = true;
this.cnt++;
}
}
}
}
private boolean isCompleted() {
int crossedLines = 0;
for (int i = 0; i < this.board.length; i++) {
int completeCnt1 = 0;
int completeCnt2 = 0;
for (int j = 0; j < this.board[i].length; j++) {
if(this.check[i][j]) completeCnt1++;
if(this.check[j][i]) completeCnt2++;
}
if(completeCnt1 == 5) crossedLines++;
if(completeCnt2 == 5) crossedLines++;
}
int completeCnt3 = 0;
int completeCnt4 = 0;
for (int i = 0; i < this.board.length; i++) {
if(this.check[i][i]) completeCnt3++;
if(this.check[i][this.board[i].length - 1 - i]) completeCnt4++;
}
if(completeCnt3 == 5) crossedLines++;
if(completeCnt4 == 5) crossedLines++;
return crossedLines >= 3;
}
}
}