[BaekJoon] 10810๋ฒˆ - ๊ณต ๋„ฃ๊ธฐ (java)

๐Ÿ“Œ 1. ๋ฌธ์ œ

๐Ÿ‘‰ ๋ฌธ์ œ ๋ฐ”๋กœ๊ฐ€๊ธฐ

- ์กฐ๊ฑด

์‹œ๊ฐ„ ์ œํ•œ ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ
1์ดˆ 256MB


- ๋ฌธ์ œ

๋„ํ˜„์ด๋Š” ๋ฐ”๊ตฌ๋‹ˆ๋ฅผ ์ด N๊ฐœ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ , ๊ฐ๊ฐ์˜ ๋ฐ”๊ตฌ๋‹ˆ์—๋Š” 1๋ฒˆ๋ถ€ํ„ฐ N๋ฒˆ๊นŒ์ง€ ๋ฒˆํ˜ธ๊ฐ€ ๋งค๊ฒจ์ ธ ์žˆ๋‹ค. ๋˜, 1๋ฒˆ๋ถ€ํ„ฐ N๋ฒˆ๊นŒ์ง€ ๋ฒˆํ˜ธ๊ฐ€ ์ ํ˜€์žˆ๋Š” ๊ณต์„ ๋งค์šฐ ๋งŽ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๊ฐ€์žฅ ์ฒ˜์Œ ๋ฐ”๊ตฌ๋‹ˆ์—๋Š” ๊ณต์ด ๋“ค์–ด์žˆ์ง€ ์•Š์œผ๋ฉฐ, ๋ฐ”๊ตฌ๋‹ˆ์—๋Š” ๊ณต์„ 1๊ฐœ๋งŒ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค.
๋„ํ˜„์ด๋Š” ์•ž์œผ๋กœ M๋ฒˆ ๊ณต์„ ๋„ฃ์œผ๋ ค๊ณ  ํ•œ๋‹ค. ๋„ํ˜„์ด๋Š” ํ•œ ๋ฒˆ ๊ณต์„ ๋„ฃ์„ ๋•Œ, ๊ณต์„ ๋„ฃ์„ ๋ฐ”๊ตฌ๋‹ˆ ๋ฒ”์œ„๋ฅผ ์ •ํ•˜๊ณ , ์ •ํ•œ ๋ฐ”๊ตฌ๋‹ˆ์— ๋ชจ๋‘ ๊ฐ™์€ ๋ฒˆํ˜ธ๊ฐ€ ์ ํ˜€์žˆ๋Š” ๊ณต์„ ๋„ฃ๋Š”๋‹ค. ๋งŒ์•ฝ, ๋ฐ”๊ตฌ๋‹ˆ์— ๊ณต์ด ์ด๋ฏธ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ๋“ค์–ด์žˆ๋Š” ๊ณต์„ ๋นผ๊ณ , ์ƒˆ๋กœ ๊ณต์„ ๋„ฃ๋Š”๋‹ค. ๊ณต์„ ๋„ฃ์„ ๋ฐ”๊ตฌ๋‹ˆ๋Š” ์—ฐ์†๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.
๊ณต์„ ์–ด๋–ป๊ฒŒ ๋„ฃ์„์ง€๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, M๋ฒˆ ๊ณต์„ ๋„ฃ์€ ์ดํ›„์— ๊ฐ ๋ฐ”๊ตฌ๋‹ˆ์— ์–ด๋–ค ๊ณต์ด ๋“ค์–ด ์žˆ๋Š”์ง€ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

- ์ž…๋ ฅ

๋„ํ˜„์ด๋Š” ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„ ์ˆœ์„œ๋Œ€๋กœ ๊ณต์„ ๋„ฃ๋Š”๋‹ค. ์ฒซ์งธ ์ค„์— N (1 โ‰ค N โ‰ค 100)๊ณผ M (1 โ‰ค M โ‰ค 100)์ด ์ฃผ์–ด์ง„๋‹ค.
๋‘˜์งธ ์ค„๋ถ€ํ„ฐ M๊ฐœ์˜ ์ค„์— ๊ฑธ์ณ์„œ ๊ณต์„ ๋„ฃ๋Š” ๋ฐฉ๋ฒ•์ด ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ๋ฐฉ๋ฒ•์€ ์„ธ ์ •์ˆ˜ i j k๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ, i๋ฒˆ ๋ฐ”๊ตฌ๋‹ˆ๋ถ€ํ„ฐ j๋ฒˆ ๋ฐ”๊ตฌ๋‹ˆ๊นŒ์ง€์— k๋ฒˆ ๋ฒˆํ˜ธ๊ฐ€ ์ ํ˜€์ ธ ์žˆ๋Š” ๊ณต์„ ๋„ฃ๋Š”๋‹ค๋Š” ๋œป์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 2 5 6์€ 2๋ฒˆ ๋ฐ”๊ตฌ๋‹ˆ๋ถ€ํ„ฐ 5๋ฒˆ ๋ฐ”๊ตฌ๋‹ˆ๊นŒ์ง€์— 6๋ฒˆ ๊ณต์„ ๋„ฃ๋Š”๋‹ค๋Š” ๋œป์ด๋‹ค. (1 โ‰ค i โ‰ค j โ‰ค N, 1 โ‰ค k โ‰ค N)

- ์ถœ๋ ฅ

1๋ฒˆ ๋ฐ”๊ตฌ๋‹ˆ๋ถ€ํ„ฐ N๋ฒˆ ๋ฐ”๊ตฌ๋‹ˆ์— ๋“ค์–ด์žˆ๋Š” ๊ณต์˜ ๋ฒˆํ˜ธ๋ฅผ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•ด ์ถœ๋ ฅํ•œ๋‹ค. ๊ณต์ด ๋“ค์–ด์žˆ์ง€ ์•Š์€ ๋ฐ”๊ตฌ๋‹ˆ๋Š” 0์„ ์ถœ๋ ฅํ•œ๋‹ค.

- ์˜ˆ์ œ

ย ย ์ž…๋ ฅย ย  ย ย  ์ถœ๋ ฅย ย 
5 4
1 2 3
3 4 4
1 4 1
2 2 2
1 2 1 1 0





๐Ÿ“Œ 2. ํ’€์ด

2-0. ์•Œ๊ณ ๋ฆฌ์ฆ˜

1๋ฒˆ ๋ฐ”๊ตฌ๋‹ˆ๋ถ€ํ„ฐ N๋ฒˆ ๋ฐ”๊ตฌ๋‹ˆ๊นŒ์ง€ ์ˆœ์„œ๋Œ€๋กœ ๋ฐ”๊ตฌ๋‹ˆ์— ๋“ค์–ด์žˆ๋Š” ๊ณต์˜ ๋ฒˆํ˜ธ๋ฅผ ์ถœ๋ ฅํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—,
๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•ด ๊ณต์˜ ๋ฒˆํ˜ธ๋ฅผ ์ €์žฅํ•œ๋‹ค.

๋ฐฐ์—ด์€ ์ธ๋ฑ์Šค 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— 1๋ฒˆ ๋ฐ”๊ตฌ๋‹ˆ ๊ณต์€ ์ธ๋ฑ์Šค 0์—, 2๋ฒˆ ๋ฐ”๊ตฌ๋‹ˆ ๊ณต์€ ์ธ๋ฑ์Šค 1์—,
N๋ฒˆ ๋ฐ”๊ตฌ๋‹ˆ ๊ณต์€ ์ธ๋ฑ์Šค N-1์— ์ €์žฅํ•˜๋ฉด ๋œ๋‹ค.

๋”ฐ๋ผ์„œ, for ๋ฌธ์„ ์‚ฌ์šฉํ•ด ์ธ๋ฑ์Šค i-1 ๋ถ€ํ„ฐ j-1 ๊นŒ์ง€์˜ ๊ฐ’์— k๋ฅผ ์ €์žฅํ•œ๋‹ค.

int[] arr = new int[N];

for(int b=i-1;b<j;b++) {
    arr[b] = k;
}





2๊ฐœ์˜ ์ž…๋ ฅ๋ฐฉ์‹๊ณผ 3๊ฐœ์˜ ์ถœ๋ ฅ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ด์„œ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

  1. Scanner ํด๋ž˜์Šค
  2. BufferedReader ํด๋ž˜์Šค




2-1. Scanner ํด๋ž˜์Šค

import java.util.Scanner;

public class Main {
	public static void main(String args[]) {
 
		Scanner sc = new Scanner(System.in);
		
		int N = sc.nextInt();
		int M = sc.nextInt();
		
		int[] arr = new int[N];
		
		for(int a=0;a<M;a++) {
			int i = sc.nextInt();
			int j = sc.nextInt();
			int k = sc.nextInt();
			
			for(int b=i-1;b<j;b++) {
				arr[b] = k;
			}
		}
		for(int num : arr) {
			System.out.print(num + " ");
		}
	}
}

์œ„์™€๊ฐ™์ด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ, Scanner(System.in) ์—์„œ System.in ์€ ์ž…๋ ฅํ•œ ๊ฐ’์„ Byte ๋‹จ์œ„๋กœ ์ฝ๋Š” ๊ฒƒ์„ ๋œปํ•œ๋‹ค.

intํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅ๋ฐ›๊ธฐ ์œ„ํ•ด nextInt() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

ํ™•์žฅ for ๋ฌธ ์„ ์‚ฌ์šฉํ•ด ๋ฐฐ์—ด์˜ ๊ฐ’์„ ๋ชจ๋‘ ์ถœ๋ ฅํ•œ๋‹ค.



[์—ฌ๊ธฐ์„œ ์ž ๊น!]

Scanner์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์•Œ๊ณ ์‹ถ๋‹ค๋ฉด ์—ฌ๊ธฐ ๋ฅผ ํด๋ฆญํ•˜์„ธ์š”




2-2. BufferedReader ํด๋ž˜์Šค ์‚ฌ์šฉ

3๊ฐ€์ง€ ์ถœ๋ ฅ ๋ฐฉ์‹์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด๊ณ  ๋น„๊ตํ•ด๋ณด์ž.



ย ย ย ย  โ‘  System.out.println()
ย ย ย ย  โ‘ก BufferedWriter
ย ย ย ย  โ‘ข StringBuilder



โ‘  BufferedReader + System.out.println()

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import java.io.IOException;
 
public class Main {
	public static void main(String args[]) throws IOException {
 
		BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
        
		int N = Integer.parseInt(st.nextToken());
		int M = Integer.parseInt(st.nextToken());
		
		int[] arr = new int[N];
		
		for(int a=0;a<M;a++) {
            st = new StringTokenizer(br.readLine());
            
			int i = Integer.parseInt(st.nextToken());
			int j = Integer.parseInt(st.nextToken());
			int k = Integer.parseInt(st.nextToken());
			
			for(int b=i-1;b<j;b++) {
				arr[b] = k;
			}
		}
		for(int num : arr) {
			System.out.print(num + " ");
		}
		br.close();
	}
 
}

StringTokenizer ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•ด โ€œ โ€œ (๊ณต๋ฐฑ)์„ ๊ธฐ์ค€์œผ๋กœ ๊ฐ’์„ ๊ตฌ๋ถ„ํ•˜๊ณ , nextToken()๋ฅผ ์‚ฌ์šฉํ•ด ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋œ ์ž…๋ ฅ๊ฐ’๋“ค์„ ์ˆœ์„œ๋Œ€๋กœ ๊ฐ€์ ธ์˜จ๋‹ค.

Integer.parseInt()์„ ์‚ฌ์šฉํ•ด Stringํ˜•์„ intํ˜•์œผ๋กœ ๋ณ€ํ™˜์‹œ์ผœ์ค€๋‹ค.





โ‘ก BufferedReader + BufferedWriter

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.io.IOException;
import java.util.StringTokenizer;

public class Main{
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st = new StringTokenizer(br.readLine());
        
        int N = Integer.parseInt(st.nextToken());
		int M = Integer.parseInt(st.nextToken());
		
		int[] arr = new int[N];
		
		for(int a=0;a<M;a++) {
            st = new StringTokenizer(br.readLine());
            
			int i = Integer.parseInt(st.nextToken());
			int j = Integer.parseInt(st.nextToken());
			int k = Integer.parseInt(st.nextToken());
			
			for(int b=i-1;b<j;b++) {
				arr[b] = k;
			}
		}
		for(int num : arr) {
			bw.write(num + " ");
		}
		br.close();
        bw.flush();
        bw.close();
    }
}

BufferedWriter ํด๋ž˜์Šค์˜ write() ๋ฉ”์†Œ๋“œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‚ด๋ถ€ ๋ฒ„ํผ์— ์ €์žฅํ•˜๊ณ , flush() ๋ฉ”์†Œ๋“œ ๋ฅผ ์‚ฌ์šฉํ•ด ๋ฒ„ํผ๋ฅผ ๋น„์šฐ๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

BufferedWriter ํด๋ž˜์Šค์˜ write() ๋ฉ”์†Œ๋“œ๋Š” ๋‹จ๋…์œผ๋กœ int ํ˜• ๊ฐ’๋งŒ ๋„ฃ์„ ๊ฒฝ์šฐ ์•„์Šคํ‚ค ์ฝ”๋“œ๊ฐ’์œผ๋กœ ์ธ์‹๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ๋ฌธ์ž๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค. ๋•Œ๋ฌธ์— ๋ฐ˜๋“œ์‹œ ๋ฌธ์ž์—ด๊ณผ int ํ˜•์„ ํ•จ๊ป˜ ๋„ฃ์–ด์ค˜์•ผ int ๊ฐ’์„ ์ œ๋Œ€๋กœ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค.



[์—ฌ๊ธฐ์„œ ์ž ๊น!]

BufferedReader๏ผBufferedWriter ํด๋ž˜์Šค์— ๋Œ€ํ•ด ๋” ์•Œ์•„๋ณด๊ณ  ์‹ถ์œผ๋ฉด ์—ฌ๊ธฐ๋ฅผ ํด๋ฆญํ•˜๋ฉด ๋œ๋‹ค.





โ‘ข BufferedReader + StringBuilder

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

public class Main{
    public static void main(String[] args)throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        StringBuilder sb = new StringBuilder();
        
        int N = Integer.parseInt(st.nextToken());
		int M = Integer.parseInt(st.nextToken());
		
		int[] arr = new int[N];
		
		for(int a=0;a<M;a++) {
            st = new StringTokenizer(br.readLine());
            
			int i = Integer.parseInt(st.nextToken());
			int j = Integer.parseInt(st.nextToken());
			int k = Integer.parseInt(st.nextToken());
			
			for(int b=i-1;b<j;b++) {
				arr[b] = k;
			}
		}
		for(int num : arr) {
			sb.append(num).append(" ");
		}
        System.out.println(sb);
    }
}

StringBuilder ํด๋ž˜์Šค๋Š” ๋ฌธ์ž์—ด์„ ๋™์ ์œผ๋กœ ์กฐ์ž‘ํ•˜๊ธฐ ์œ„ํ•œ ํด๋ž˜์Šค๋กœ, append() ๋ฅผ ์‚ฌ์šฉํ•ด ๋ฌธ์ž์—ด์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด์„ ์ƒ์„ฑํ•œ๋‹ค.

append() ๋ฅผ ์œ„์™€ ๊ฐ™์ด ๋‚˜๋ˆ ์„œ ์“ฐ๋ฉด ํƒ€์ž… ๋ณ€ํ™˜๊ณผ ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ ์—ฐ์‚ฐ์ด ์ถ”๊ฐ€์ ์œผ๋กœ ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ณ  StringBuilder์— ์ง์ ‘ ์ถ”๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณด๋‹ค ๋” ํšจ์œจ์ ์ด๊ณ  ๋น ๋ฅด๋‹ค.





๐Ÿ“Œ 3. ์„ฑ๋Šฅ ๋น„๊ต

image

์œ„์—์„œ ๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ

BufferedReader + StringBuilder
BufferedReader + BufferedWriter
BufferedReader + System.out.println()
Scanner

์œ„์™€๊ฐ™์ด ์ž…๋ ฅ ๋ฉ”์†Œ๋“œ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฌํ˜„ ๋ฐฉ๋ฒ•์— ๋”ฐ๋ผ ์‹œ๊ฐ„์ด ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค.

์ž…๋ ฅ์˜ ๊ฒฝ์šฐ ํ™•์‹คํžˆ Scanner ๋ณด๋‹ค๋Š” BufferedReader ๊ฐ€ ๋น ๋ฅธ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์ถœ๋ ฅ์˜ ๊ฒฝ์šฐ StringBuilder ๊ฐ€ ์ œ์ผ ๋น ๋ฅด๋‹ค.
BufferedWriter๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ I/O ์ž‘์—…์œผ๋กœ ์ธํ•ด ๋น„๊ต์  ๋Š๋ฆด ์ˆ˜ ์žˆ๋‹ค.
๋ฐ˜๋ฉด์— StringBuilder๋Š” ๋ฌธ์ž์—ด ์กฐ์ž‘์— ์ตœ์ ํ™”๋œ ํด๋ž˜์Šค๋กœ, ๋ฌธ์ž์—ด ์—ฐ์‚ฐ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์—์„œ ์ˆ˜ํ–‰๋˜๋ฏ€๋กœ ์ƒ๋Œ€์ ์œผ๋กœ ๋น ๋ฅผ ์ˆ˜ ์žˆ๋‹ค.





๊ด€๋ จ ํŽ˜์ด์ง€

Categories:

Updated:

Leave a comment