문제 : www.acmicpc.net/problem/10836
10282번: 해킹
문제 최흉최악의 해커 yum3이 네트워크 시설의 한 컴퓨터를 해킹했다! 이제 서로에 의존하는 컴퓨터들은 점차 하나둘 전염되기 시작한다. 어떤 컴퓨터 a가 다른 컴퓨터 b에 의존한다면, b가 감염��
www.acmicpc.net
문제 유형 : 시뮬레이션
풀이 방식 : 최적화를 해야 시간초과가 안나는 문제 => 입력받고 바로 map에 연산
소스 코드
package BOJ;
import java.io.*;
import java.util.*;
public class BOJ_10836_여왕벌_Main {
public static void main(String[] args) throws IOException {
// 1. 입력
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine()," ");
int M = Integer.parseInt(st.nextToken()); // 격자 크기
int N = Integer.parseInt(st.nextToken()); // 날짜 수
int[][] map = new int[M][M];
for (int i = 0; i < M; i++) {
Arrays.fill(map[i], 1);
}
for (int i = 0; i < N; i++) {
st = new StringTokenizer(br.readLine()," ");
int val0 = Integer.parseInt(st.nextToken()); // 0 개수
int val1 = Integer.parseInt(st.nextToken()); // 1 개수
int val2 = Integer.parseInt(st.nextToken()); // 2 개수
// 2. 구현
// 2-1. 애벌레 키우기
for (int r = M-1; r > -1; r--) {
if(val0!=0) {
val0--;
}else if(val1!=0) {
map[r][0] += 1;
val1--;
}else if(val2!=0) {
map[r][0] += 2;
val2--;
}
}
for (int c = 1; c < M; c++) {
if(val0!=0) {
val0--;
}else if(val1!=0) {
map[0][c] += 1;
val1--;
}else if(val2!=0) {
map[0][c] += 2;
val2--;
}
}
}
StringBuilder sb = new StringBuilder();
// 2-2. 나머지 애벌레
for (int r = 1; r < M; r++) {
for (int c = 1; c < M; c++) {
map[r][c] = (map[r-1][c]>map[r][c-1]) ? ((map[r-1][c]>map[r-1][c-1])?map[r-1][c]:map[r-1][c-1]) : ((map[r][c-1]>map[r-1][c-1])?map[r][c-1]:map[r-1][c-1]);
}
}
for (int i = 0; i < M; i++) {
for (int j = 0; j < M; j++) {
sb.append(map[i][j]+" ");
}sb.append("\n");
}
// 3. 출력
System.out.println(sb.toString());
}
}
'알고리즘 > 백준' 카테고리의 다른 글
[JAVA]백준_2346_풍선터뜨리기 (0) | 2020.08.14 |
---|---|
[JAVA]백준_1719_택배 (1) | 2020.08.13 |
[JAVA]백준_10282_해킹 (0) | 2020.08.12 |
[JAVA]백준_1713_후보추천하기 (0) | 2020.08.07 |
[JAVA]백준_9663_NQueen (4) | 2020.08.06 |