πŸ“ algorithm

[λ°±μ€€] 2669 μ§μ‚¬κ°ν˜• λ„€κ°œμ˜ ν•©μ§‘ν•©μ˜ 면적 κ΅¬ν•˜κΈ° Java 풀이 (μ‚Όμ„± sw μ—­λŸ‰ν…ŒμŠ€νŠΈ IM λŒ€λΉ„ - 4)

c0zi 2024. 1. 28. 13:27

πŸ“‘ 문제 μ„€λͺ…

 

평면에 λ„€ κ°œμ˜ μ§μ‚¬κ°ν˜•이 λ†“μ—¬ μžˆλŠ”λ° κ·Έ λ°‘변은 λͺ¨λ‘ κ°€λ‘œμΆ•에 ν‰ν–‰ν•˜λ‹€. μ΄ λ„€ κ°œμ˜ μ§μ‚¬κ°ν˜•듀은 μ„œλ‘œ λ–¨μ–΄μ Έ μžˆμ„ μˆ˜λ„ μžˆκ³ , κ²Ήμ³ μžˆμ„ μˆ˜λ„ μžˆκ³ , ν•˜λ‚˜κ°€ λ‹€λ₯Έ ν•˜λ‚˜λ₯Ό ν¬ν•¨ν•  μˆ˜λ„ μžˆμœΌλ©°, λ³€μ΄λ‚˜ κΌ­μ§“점이 κ²ΉμΉ  μˆ˜λ„ μžˆλ‹€.

이 μ§μ‚¬κ°ν˜•듀이 μ°¨μ§€ν•˜λŠ” λ©΄μ μ„ κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

 

 

 

⌨️ μž…λ ₯

 

μž…λ ₯은 λ„€ μ€„이며, κ° μ€„은 μ§μ‚¬κ°ν˜•μ˜ μœ„μΉ˜λ₯Ό λ‚˜νƒ€λ‚΄λŠ” λ„€ κ°œμ˜ μ •μˆ˜λ‘œ μ£Όμ–΄μ§„λ‹€. μ²« λ²ˆμ§Έμ™€ λ‘ λ²ˆμ§Έμ˜ μ •μˆ˜λŠ” μ‚¬κ°ν˜•μ˜ μ™Όμͺ½ μ•„λž˜ κΌ­μ§“μ μ˜ xμ’Œν‘œ, yμ’Œν‘œμ΄κ³  μ„Έ λ²ˆμ§Έμ™€ λ„€ λ²ˆμ§Έμ˜ μ •μˆ˜λŠ” μ‚¬κ°ν˜•μ˜ μ˜€λ₯Έμͺ½ μœ„ κΌ­μ§“μ μ˜ xμ’Œν‘œ, yμ’Œν‘œμ΄λ‹€. λͺ¨λ“  xμ’Œν‘œμ™€ yμ’Œν‘œλŠ” 1이상이고 100μ΄ν•˜μΈ μ •μˆ˜μ΄λ‹€.

 

πŸ–₯️ 좜λ ₯

 

첫 쀄에 λ„€κ°œμ˜ μ§μ‚¬κ°ν˜•μ΄ μ°¨μ§€ν•˜λŠ” 면적을 좜λ ₯ν•œλ‹€.

 

μž…λ ₯ 예제 1 : 
1 2 4 4
2 3 5 7
3 1 6 5
7 3 8 6
좜λ ₯ 예제 1 :
26

 

πŸ“ 문제 풀이

 

벌써 λ„€λ²ˆμ§Έ 문제λ₯Ό ν’€μ–΄μ„œ 올리게 λ˜μ—ˆλŠ”λ°, 생각보닀 백쀀은 술술 ν’€λ¦¬λŠ” 것 같은데 swea ν’€λ €λ‹ˆκΉŒ μ’€ μ–΄λ €μ›Œμ„œ λ§‰ν˜”λ‹€. λ°±μ€€ λΉ λ₯΄κ²Œ ν’€κ³  sweaλ₯Ό 풀어봐야겠닀고 생각이 λ“€μ—ˆλ‹€. λ‹€μŒμ€ λ„ˆλ‘œ μ •ν–ˆλ‹€ 😊

 

μš°μ„  λ‚˜μ˜ 이번 문제 풀이 방법은 λ‹€μŒκ³Ό κ°™λ‹€.

 

1. StringTokenizerλ₯Ό μ‚¬μš©ν•΄ 4개의 숫자λ₯Ό μž…λ ₯λ°›λŠ”λ‹€.

2. for문을 μ΄μš©ν•΄ λ°°μ—΄μ˜ 면적에 ν•΄λ‹Ήν•˜λŠ” 값듀을 1둜 λ°”κΏ”μ€€λ‹€.

3. 면적에 ν•΄λ‹Ήν•˜λŠ” λ°°μ—΄ 값듀을 1둜 μ§€μ •ν•΄μ£Όμ—ˆκΈ° λ•Œλ¬Έμ— sum에 κ·ΈλŒ€λ‘œ 더해쀀닀.

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.StringTokenizer;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int sum = 0;
        int[][] xy = new int[100][100];
        StringTokenizer st;

        for (int i = 0; i < 4; i++) {
        	// μ—¬λŸ¬λ²ˆ μ΄ˆκΈ°ν™”λ  수 μžˆλŠ” StringTokenizerλ₯Ό λ°–μ—μ„œ μ„ μ–Έν•΄μ€€λ‹€.
            st = new StringTokenizer(br.readLine());

			// 곡백으둜 κ΅¬λΆ„λ˜λŠ” λ„€κ°€μ§€ 숫자λ₯Ό 읽어 μ’Œν‘œκ°’μ„ μ§€μ •ν•œλ‹€.
            int x1 = Integer.parseInt(st.nextToken());
            int y1 = Integer.parseInt(st.nextToken());
            int x2 = Integer.parseInt(st.nextToken());
            int y2 = Integer.parseInt(st.nextToken());

			// ν•΄λ‹Ή μ’Œν‘œ κ°’λ§ŒνΌ λŒλ©΄μ„œ 0으둜 μ΄ˆκΈ°ν™”λ˜μ–΄ μžˆλŠ” 값듀을 1둜 λ°”κΏ”μ€€λ‹€.
            for (int x = x1; x < x2; x++) {
                for (int y = y1; y < y2; y++) {
                    xy[x][y] = 1;
                }
            }
        }

        // 2차원 λ°°μ—΄μ˜ 값을 sum에 λ„£μ–΄μ€€λ‹€. (1 or 0)
        for (int x = 0; x < 100; x++) {
            for (int y = 0; y < 100; y++) {
                sum += xy[x][y];
            }
        }
        System.out.println(sum);
    }
}

 

🀭 였늘의 λŠλ‚€μ  !!!
항상 둜직 금방 짜고 μ΄μƒν•œλ°μ„œ μ‹€μˆ˜ν•΄μ„œ ν‹€λ¦¬λŠ” λ‚˜ …
forλ¬Έ μ‚¬μš©ν•  λ•Œ x < x2인데 κ·Έκ±°λ₯Ό x ≤ x2라고 μ μ–΄μ„œ ν‹€λ¦Ό ;;;