Skip to content
33 changes: 33 additions & 0 deletions src/main/java/com/goorm/week2/day3/songju/Solution.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package com.goorm.week2.day3.songju;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/* 통증
* Day : 23.08.23
* Solving time : 18:22 ~ 18:28
*/
public class Solution {
private static final int[] items = {14, 7, 1};

public static void main(String[] args) {
try {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println(solution(br));
} catch (IOException e) {
e.printStackTrace();
}
}

static int solution(BufferedReader br) throws IOException {
int N = Integer.parseInt(br.readLine());
int result = 0;
for (int i = 0; i < items.length; i++) {
result += N / items[i];
N %= items[i];
if (N == 0) break;
}
return result;
}
}
62 changes: 62 additions & 0 deletions src/main/java/com/goorm/week2/day4/songju/Solution.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
package com.goorm.week2.day4.songju;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

/* 폭탄 구현하기(2)
* Day : 23.08.24
* Solving time : 14:50 ~ 15:30
*/
public class Solution {
private static int N, K;
private static char [][] board;
private static int [][] boom;
private static int result;
private static final int [] dx = {-1, 0, 0, 1};
private static final int [] dy = {0, -1, 1, 0};

public static void main(String[] args) {
try {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println(solution(br));
} catch (IOException e) {
e.printStackTrace();
}
}

static int solution(BufferedReader br) throws IOException {
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
N = Integer.parseInt(st.nextToken());
K = Integer.parseInt(st.nextToken());
board = new char[N][N];
boom = new int[N][N];
result = 0;
for(int i=0;i<N;i++){
board[i] = br.readLine().replaceAll(" ", "").toCharArray();
}

for(int i=0;i<K;i++){
st = new StringTokenizer(br.readLine(), " ");
int y = Integer.parseInt(st.nextToken())-1;
int x = Integer.parseInt(st.nextToken())-1;
dropBoom(x, y);
}

return result;
}

private static void dropBoom(int x, int y){
if(board[y][x] !='#')
boom[y][x] += (board[y][x] == '0' ? 1 : 2);
for(int i=0;i<4;i++){
int moveX = x + dx[i];
int moveY = y + dy[i];
if(moveX >= 0 && moveX<N && moveY>=0 && moveY<N&&board[moveY][moveX] != '#'){
boom[moveY][moveX] += (board[moveY][moveX] == '0' ? 1 : 2);
result = Math.max(result, Math.max(boom[moveY][moveX], boom[y][x]));
}
}
}
}
75 changes: 75 additions & 0 deletions src/main/java/com/goorm/week2/day5/songju/Solution.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
package com.goorm.week2.day5.songju;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

/* GameJame
* Day : 23.08.26
* Solving time : 20:01 ~ 20:43
*/
public class Solution {
private static int N;
private static String[][] turn;

public static void main(String[] args) {
try {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println(solution(br));
} catch (IOException e) {
e.printStackTrace();
}
}

static String solution(BufferedReader br) throws IOException {
StringBuilder result = new StringBuilder();
N = Integer.parseInt(br.readLine());
int[][] startPosList = new int[2][2];
startPosList[0] = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
startPosList[1] = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
turn = new String[N][N];
for (int i = 0; i < N; i++) {
turn[i] = br.readLine().split(" ");
}

int gScore = playGame(startPosList[0][0] - 1, startPosList[0][1] - 1);
int pScore = playGame(startPosList[1][0] - 1, startPosList[1][1] - 1);

if (gScore > pScore) {
result.append("goorm").append(" ").append(gScore);
} else {
result.append("player").append(" ").append(pScore);
}
return result.toString();
}

static int playGame(int y, int x) {
int score = 1;
boolean[][] visited = new boolean[N][N];
visited[y][x] = true;
while (true) {
int distance = Integer.parseInt(turn[y][x].substring(0, turn[y][x].length() - 1));
String dir = turn[y][x].substring(turn[y][x].length() - 1);
for (int i = 0; i < distance; i++) {
switch (dir) {
case "L" -> { x += -1; }
case "R" -> { x += 1; }
case "D" -> { y += 1; }
case "U" -> { y += -1; }
}
x = changePos(x);
y = changePos(y);
if (visited[y][x]) {
return score;
}
score++;
visited[y][x] = true;
}
}
}

static int changePos(int index) {
return (index < 0 ? index + N : index) % N;
}
}
36 changes: 36 additions & 0 deletions src/main/java/com/goorm/week3/day1/songju/Solution.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package com.goorm.week3.day1.songju;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

/* 통증(2)
* Day : 23.08.28
* Solving time : 18:30 ~ 18:45
*/
public class Solution {
public static void main(String[] args) {
try {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println(solution(br));
} catch (IOException e) {
e.printStackTrace();
}
}

static int solution(BufferedReader br) throws IOException {
int N = Integer.parseInt(br.readLine());
int[] items = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).sorted().toArray();
int bigItemUseCnt = N / items[1];
int result = -1;
for (int i = bigItemUseCnt; i >= 0; i--) {
int num = N - i * items[1];
if (num % items[0] == 0) {
result = i + num / items[0];
break;
}
}
return result;
}
}
67 changes: 67 additions & 0 deletions src/main/java/com/goorm/week3/day2/songju/Solution.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
package com.goorm.week3.day2.songju;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.Arrays;
import java.util.Deque;

/* 발전기
* Day : 23.08.29
* Solving time : 18:30 ~ 19:58
*/
public class Solution {
private static int N;
private static int[][] village;
private static boolean[][] visited;
private static final int[] dx = {-1, 0, 0, 1};
private static final int[] dy = {0, -1, 1, 0};

public static void main(String[] args) {
try {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println(solution(br));
} catch (IOException e) {
e.printStackTrace();
}
}

static int solution(BufferedReader br) throws IOException {
N = Integer.parseInt(br.readLine());
village = new int[N][N];
visited = new boolean[N][N];
int result = 0;
for (int i = 0; i < N; i++) {
village[i] = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
}
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
if (!visited[i][j] && village[i][j] == 1) {
check(j, i);
result++;
}
}
}
return result;
}

static void check(int x, int y) {
Deque<int[]> deque = new ArrayDeque<>();
deque.add(new int[]{x, y});
visited[y][x] = true;
while (!deque.isEmpty()) {
int[] pos = deque.poll();
int posX = pos[0];
int posY = pos[1];
for (int i = 0; i < 4; i++) {
int mx = posX + dx[i];
int my = posY + dy[i];
if (mx >= 0 && mx < N && my >= 0 && my < N && village[my][mx] == 1 && !visited[my][mx]) {
deque.offer(new int[]{mx, my});
visited[my][mx] = true;
}
}
}
}
}
29 changes: 29 additions & 0 deletions src/test/java/com/goorm/week2/day3/songju/SolutionTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.goorm.week2.day3.songju;

import com.goorm.common.TestFileUtil;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;

import java.io.BufferedReader;

import static org.junit.jupiter.api.Assertions.assertEquals;

@DisplayName("통증 - 송주")
class SolutionTest {
@Test
@DisplayName("통증 - 케이스1")
void test_case_1() throws Exception {
BufferedReader reader = TestFileUtil.getReader(this.getClass(), "testcase/week2/day3/test_case1.txt");
int solution = Solution.solution(reader);
assertEquals(2, solution);
}

@Test
@DisplayName("통증 - 케이스2")
void test_case_2() throws Exception {
BufferedReader reader = TestFileUtil.getReader(this.getClass(), "testcase/week2/day3/test_case2.txt");
int solution = Solution.solution(reader);
assertEquals(9, solution);
}

}
29 changes: 29 additions & 0 deletions src/test/java/com/goorm/week2/day4/songju/SolutionTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.goorm.week2.day4.songju;

import com.goorm.common.TestFileUtil;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;

import java.io.BufferedReader;

import static org.junit.jupiter.api.Assertions.assertEquals;

@DisplayName("폭탄 구현하기(2) - 송주")
class SolutionTest {
@Test
@DisplayName("폭탄 구현하기(2) - 케이스1")
void test_case_1() throws Exception {
BufferedReader reader = TestFileUtil.getReader(this.getClass(), "testcase/week2/day4/test_case1.txt");
int solution = Solution.solution(reader);
assertEquals(6, solution);
}

@Test
@DisplayName("폭탄 구현하기(2) - 케이스2")
void test_case_2() throws Exception {
BufferedReader reader = TestFileUtil.getReader(this.getClass(), "testcase/week2/day4/test_case2.txt");
int solution = Solution.solution(reader);
assertEquals(8, solution);
}

}
29 changes: 29 additions & 0 deletions src/test/java/com/goorm/week2/day5/songju/SolutionTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.goorm.week2.day5.songju;

import com.goorm.common.TestFileUtil;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;

import java.io.BufferedReader;

import static org.junit.jupiter.api.Assertions.assertEquals;

@DisplayName("GameJame - 송주")
class SolutionTest {
@Test
@DisplayName("GameJame - 케이스1")
void test_case_1() throws Exception {
BufferedReader reader = TestFileUtil.getReader(this.getClass(), "testcase/week2/day5/test_case1.txt");
String solution = Solution.solution(reader);
assertEquals("goorm 4", solution);
}

@Test
@DisplayName("GameJame - 케이스2")
void test_case_2() throws Exception {
BufferedReader reader = TestFileUtil.getReader(this.getClass(), "testcase/week2/day5/test_case2.txt");
String solution = Solution.solution(reader);
assertEquals("player 6", solution);
}

}
Loading