본문 바로가기
코딩/백준-자바

[자바] 백준 20125번: 쿠키의 신체 측정

by 철없는민물장어 2023. 2. 24.
728x90
반응형

https://www.acmicpc.net/problem/20125

 

20125번: 쿠키의 신체 측정

쿠키런은 데브시스터즈에서 제작한 모바일 러닝 액션 게임이다. 마녀의 오븐에서 탈출한 쿠키들과 함께 모험을 떠나는 게임으로, 점프와 슬라이드 2가지 버튼만으로 손쉽게 플레이할 수 있는

www.acmicpc.net

 

심장을 기준으로 상하좌우가 머리,허리,왼팔,오른팔로 이어져있기 때문에

현재칸을 기준으로 현재칸과 상하좌우가 다 *이라면 현재칸이 심장인것으로 생각할 수 있다.

심장의 위치를 찾았다면 반복문을 통해 *의 개수를 세서 팔다리허리의 길이를 재면 된다.

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
반응형

댓글