πŸ“ algorithm

JAVA | [λ°±μ€€] 곡 λ„£κΈ° (10810번)

c0zi 2023. 6. 16. 18:05

🚧 곡 λ„£κΈ°


πŸ” 문제 μ„€λͺ…

 

λ„ν˜„μ΄λŠ” λ°”κ΅¬λ‹ˆλ₯Ό 총 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을 좜λ ₯ν•œλ‹€.

 


πŸ“ λ¬Έμ œν’€μ΄

1. Mκ³Ό N을 μž…λ ₯λ°›κ³  크기 N의 배열을 λ§Œλ“ λ‹€.

2. i, j, kλ₯Ό μž…λ ₯ 받은 ν›„ for문을 톡해 λ°°μ—΄μ˜ i-1λΆ€ν„° j-1κΉŒμ§€ kλ₯Ό μž…λ ₯ν•œλ‹€.

3. 배열을 좜λ ₯ν•œλ‹€.

 

이 λ¬Έμ œλŠ” 전에 ν’€λ‹€κ°€ μ™œμΈμ§€ 좜λ ₯이 λ‹€λ₯΄κ²Œ λ‚˜μ™€μ„œ μ˜λ¬Έμ„ λͺ¨λ₯΄κ² λ˜ λ¬Έμ œμ˜€μ—ˆλ‹€. μ‹œν—˜κΈ°κ°„λ„ λ‹€κ°€μ˜€λ©΄μ„œ 해결은 λͺ»ν•˜κ³  κ·ΈλŒ€λ‘œ λ’€μ—ˆλŠ”λ°, μ•Œκ³ λ³΄λ‹ˆ λ§ˆμ§€λ§‰ 좜λ ₯ forλ¬Έμ—μ„œ μ•„λž˜μ²˜λŸΌ 잘λͺ» μ μ—ˆλ‹€ ....

 

for (int k : numarr) {
    System.out.print(numarr[k] + " "); // (k + " ")
}

 

κΈ‰ν•˜κ²Œ 문제λ₯Ό 많이 ν’€κ³  μ‹Άμ–΄μ„œ μ €μ§€λ₯Έ 바보 같은 μ‹€μˆ˜ .. γ…Žγ…Ž


πŸ–₯️ μž‘μ„± μ½”λ“œ
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {
    public static void main(String args[]) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(bf.readLine()," ");
        int n = Integer.parseInt(st.nextToken());
        int m = Integer.parseInt(st.nextToken());
        int[] numarr = new int[n];
       
        for (int i = 0; i < m; i++) {
            st = new StringTokenizer(bf.readLine()," ");
            int a = Integer.parseInt(st.nextToken());
            int b = Integer.parseInt(st.nextToken());
            int c = Integer.parseInt(st.nextToken());
            for (int j = a-1; j < b; j++) {
                numarr[j] = c;
            }
        }
        for (int k : numarr) {
            System.out.print(k + " ");
        }
    }
       
}