https://www.acmicpc.net/problem/14719
나의풀이
import java.io.*;
import java.util.*;
public class Main {
public static void main(String args[]) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int h = Integer.parseInt(st.nextToken());//세로
int w = Integer.parseInt(st.nextToken());//가로
int[][] arr = new int[w][h];//2차원 좌표
st = new StringTokenizer(br.readLine());
for(int i=0; i<w ; i++){
int temp=Integer.parseInt(st.nextToken());
for(int j=0 ; j<temp ; j++){
arr[i][j]=1 ; //블록이 있는 곳을 1로 표시
}
}
int answer=0;
for(int i=0; i<h; i++){
int cnt=0;
boolean start=false;
for(int j=0; j<w; j++){//맨 밑에서부터 한줄씩
if(start == false && arr[j][i] == 1){//블록이 있을 때부터 카운트 시작
start=true;
continue;
}
if(start == true && arr[j][i] == 0){
cnt++;
}
if(start == true && arr[j][i] == 1){//끝나는 벽이 나타났을때 카운트 종료
answer+=cnt;
cnt=0;
}
}
}
bw.write(Integer.toString(answer));
bw.flush();
br.close();
bw.close();
}
}
Tip.
간단한 구현 문제.
2차원 좌표 속에서 맨 밑에 줄 부터 위로 올라가면서 각 줄마다 시작 블록이 있을 때 카운트를 시작하고, 종료 블록이 있을때 카운트를 종료한다.
'코테풀이' 카테고리의 다른 글
[백준] BOJ - 20437 문자열 게임 2 자바 java (골드5) (1) | 2023.03.14 |
---|---|
[백준] BOJ - 5972 택배 배송 자바 java (골드5) (0) | 2023.03.13 |
[백준] BOJ - 20922 겹치는 건 싫어 자바 java (실버 1) (0) | 2023.03.12 |
[백준] BOJ - 14940 쉬운 최단거리 자바 java (실버1) (0) | 2023.03.10 |
[백준] BOJ - 19637 IF문 좀 대신 써줘 자바 java (실버 3) (2) | 2023.03.08 |