1. 문제
https://www.acmicpc.net/problem/10836
2. 풀이과정
자라는 정도가 아래에서 위로 & 왼쪽에서 오른쪽으로 갈수록 증가한다.
따라서 가장 왼쪽 열과 가장 위쪽 행을 제외한 다른 칸들은 윗칸과 동일한 값을 가질 수 밖에 없다.
날짜수만큼 반복문을 돌면서, +1이 시작하는 위치와 +2가 시작하는 위치를 계산해서 해당 위치에 +1을 해준다.
반복문이 끝나면 증가량을 기록한 배열의 0번째 부터 끝까지 돌면서 (자신) + (이전 값)을 해주면, 해당 칸의 총 증가량을 계산할 수 있다.
+) +2가 시작하는 위치는 0의 개수 + 1의 개수이다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int day = Integer.parseInt(st.nextToken());
int size = 2*N-1;
int[] up = new int[size+1];
while(day-- > 0){
st = new StringTokenizer(br.readLine());
int zero = Integer.parseInt(st.nextToken());
int one = zero + Integer.parseInt(st.nextToken());
up[zero]++;
up[one]++;
}
for(int i=0; i<size; i++){
up[i+1] += up[i];
}
StringBuilder sb = new StringBuilder();
for(int i=N-1; i>=0; i--){
sb.append(up[i]+1);
for(int j=N; j<size; j++){
sb.append(" ").append(up[j]+1);
}
sb.append("\n");
}
System.out.print(sb);
}
}
결과
'코딩문제풀이 > Baekjoon' 카테고리의 다른 글
[Java] 백준 1406번 : 에디터* (0) | 2023.02.25 |
---|---|
[Java] 백준 13549번 : 숨바꼭질 3 (0) | 2023.02.21 |
[Java] 백준 16953번 : A -> B (0) | 2023.02.17 |
[Java] 백준 14722번 : 우유 도시 (0) | 2023.02.15 |
[Java] 백준 2668번 : 숫자고르기 (0) | 2023.02.13 |