728x90
반응형
https://www.acmicpc.net/problem/20125
심장을 기준으로 상하좌우가 머리,허리,왼팔,오른팔로 이어져있기 때문에
현재칸을 기준으로 현재칸과 상하좌우가 다 *이라면 현재칸이 심장인것으로 생각할 수 있다.
심장의 위치를 찾았다면 반복문을 통해 *의 개수를 세서 팔다리허리의 길이를 재면 된다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class P20125 {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int[][] arr = new int[n][n];
for (int i = 0; i < n; i++) {
String line = br.readLine();
for (int j = 0; j < n; j++) {
if (line.charAt(j) == '_') {
arr[i][j] = 0;
} else {
arr[i][j] = 1;
}
}
}
int heart_x = 0, heart_y = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (i - 1 < 0 || j - 1 < 0 || i + 1 >= n || j + 1 >= n)
continue;
int up = arr[i - 1][j];
int down = arr[i + 1][j];
int left = arr[i][j - 1];
int right = arr[i][j + 1];
int now = arr[i][j];
if (now == 1 && up == 1 && down == 1 && left == 1 && right == 1) {
heart_x = j;
heart_y = i;
}
}
}
System.out.println((heart_y + 1) + " " + (heart_x + 1));
int arm_l = 0, arm_r = 0, waist = 0, leg_l = 0, leg_r = 0;
// 왼팔
for (int i = heart_x - 1; i >= 0; i--) {
if (arr[heart_y][i] == 1)
arm_l++;
else
break;
}
// 오른팔
for (int i = heart_x + 1; i < n; i++) {
if (arr[heart_y][i] == 1)
arm_r++;
else
break;
}
// 허리
for (int i = heart_y + 1; i < n; i++) {
if (arr[i][heart_x] == 1)
waist++;
else
break;
}
// 왼다리
for (int i = heart_y + waist + 1; i < n; i++) {
if (arr[i][heart_x - 1] == 1)
leg_l++;
else
break;
}
// 오른다리
for (int i = heart_y + waist + 1; i < n; i++) {
if (arr[i][heart_x + 1] == 1)
leg_r++;
else
break;
}
System.out.println(arm_l + " " + arm_r + " " + waist + " " + leg_l + " " + leg_r);
}
}
728x90
반응형
'코딩 > 백준-자바' 카테고리의 다른 글
[자바] 백준 9017번: 크로스 컨트리 (0) | 2023.02.26 |
---|---|
[자바] 백준 1244번: 스위치 켜고 끄기 (0) | 2023.02.25 |
[자바] 백준 25757번:임스와 함께하는 미니게임 (1) | 2023.02.23 |
[자바] 백준 4659번: 비밀번호 발음하기 (0) | 2023.02.22 |
[자바] 백준 10431번: 줄세우기 (0) | 2023.02.19 |
댓글