자바 백준 1652번
실버 5
https://www.acmicpc.net/problem/1652
문제 보기
분류: 구현, 문자열
코드 보기
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 방의 크기 N을 입력받음
int N = sc.nextInt();
// N x N 크기의 방 배열 선언
char[][] room = new char[N][N];
for (int i = 0; i < N; i++) {
// 한 칸의 상태 입력
String oneSpace = sc.next();
for (int j = 0; j < N; j++) {
room[i][j] = oneSpace.charAt(j);
}
}
// 누울 수 있는 자리 계산 함수 호출
int[] result = calculateLyingSpaces(N, room);
// 결과 출력
System.out.println(result[0] + " " + result[1]);
}
public static int[] calculateLyingSpaces(int N, char[][] room) {
int horizontalCount = 0; // 가로로 누울 수 있는 자리 개수
int verticalCount = 0; // 세로로 누울 수 있는 자리 개수
for (int i = 0; i < N; i++) {
int count = 0; // 연속된 빈 칸 개수 초기화
for (int j = 0; j < N; j++) {
if (room[i][j] == '.') { // 현재 위치가 빈 칸인 경우
count++; // 빈 칸 개수 증가
} else {
if (count >= 2) { // 연속된 빈 칸이 2개 이상인 경우
horizontalCount++; // 가로로 누울 수 있는 자리 개수 증가
}
count = 0; // 빈 칸 개수 초기화
}
}
if (count >= 2) { // 연속된 빈 칸이 2개 이상인 경우
horizontalCount++; // 가로로 누울 수 있는 자리 개수 증가
}
}
for (int j = 0; j < N; j++) {
int count = 0; // 연속된 빈 칸 개수 초기화
for (int i = 0; i < N; i++) {
if (room[i][j] == '.') { // 현재 위치가 빈 칸인 경우
count++; // 빈 칸 개수 증가
} else {
if (count >= 2) { // 연속된 빈 칸이 2개 이상인 경우
verticalCount++; // 세로로 누울 수 있는 자리 개수 증가
}
count = 0; // 빈 칸 개수 초기화
}
}
if (count >= 2) { // 연속된 빈 칸이 2개 이상인 경우
verticalCount++; // 세로로 누울 수 있는 자리 개수 증가
}
}
int[] result = {horizontalCount, verticalCount}; // 결과 배열 생성
return result; // 결과 반환
}
}
'공부하기 > 백준' 카테고리의 다른 글
[Java] 백준 풀기 11170 - 0의 개수 (0) | 2023.11.07 |
---|---|
[Java] 백준 풀기 3058 - 짝수를 찾아라 (0) | 2023.11.06 |
[Java] 백준 풀기 5355 - 화성 수학 (0) | 2023.10.31 |
[Python] 백준 풀기 2965 - 캥거루 세마리 (0) | 2023.10.30 |
[Java] 백준 풀기 2592 - 대표값 (0) | 2023.10.27 |