Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

main

[백준-2477번/Java] 참외밭 본문

Algorithm

[백준-2477번/Java] 참외밭

1984 2022. 11. 22. 20:56

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

 

2477번: 참외밭

첫 번째 줄에 1m2의 넓이에 자라는 참외의 개수를 나타내는 양의 정수 K (1 ≤ K ≤ 20)가 주어진다. 참외밭을 나타내는 육각형의 임의의 한 꼭짓점에서 출발하여 반시계방향으로 둘레를 돌면서 지

www.acmicpc.net

* 1, 2 방향의 값 중에서 가장 큰 값이 큰 사각형의 가로 / 3,4  방향의 값 중에서 가장 큰 값이 큰 사각형의 세로이다.

* 측정값을 배열에 넣고, 방향을 나타내는 값을 나열하였을 때,

3 -> 1 -> 3 -> 1 같이 반복되는 부분에서 중간 두개의 값이 제외해야 하는 사각형의 가로, 세로 넓이 이다.

import java.io.*;
import java.util.*;

public class Main {

	public static class Measurement {
		int direction;
		int length;

		public Measurement(int direction, int length) {
			this.direction = direction;
			this.length = length;
		}
	}

	public static void main(String[] args) throws IOException {
		Scanner in = new Scanner(System.in);
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

		int K = in.nextInt();

		int max_width = 0;
		int max_height = 0;
		Measurement[] squre_info = new Measurement[6];
		for (int i = 0; i < squre_info.length; i++) {
			int direction = in.nextInt();
			int length = in.nextInt();
			squre_info[i] = new Measurement(direction, length);
			if (direction == 1 || direction == 2) {
				max_width = length > max_width ? length : max_width;
			} else {
				max_height = length > max_height ? length : max_height;
			}
		}

		int except_area = 0;
		for (int i = 0; i < squre_info.length; i++) {
			// 비교 기준 : direction이 a1 - b1 - a2 - b2 로 반복 될 때,
			// b1, a2 값이 제외되어야 하는 사각형의 가로 세로 길이
			int index = i;
			int index_1 = i + 1 > squre_info.length - 1 ? i + 1 - squre_info.length : i + 1;
			int index_2 = i + 2 > squre_info.length - 1 ? i + 2 - squre_info.length : i + 2;
			int index_3 = i + 3 > squre_info.length - 1 ? i + 3 - squre_info.length : i + 3;

			if (squre_info[index].direction == squre_info[index_2].direction
					&& squre_info[index_1].direction == squre_info[index_3].direction) {
				except_area = squre_info[index_1].length * squre_info[index_2].length;
				break;
			}
		}

		System.out.println((max_width * max_height - except_area) * K);

	}

}
728x90
Comments