๐Ÿงฉ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค/์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ’€์ด(Java)

[ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค/Java ] ๋ง์น ํ•˜๊ธฐ

carrot0911 2025. 1. 17. 09:38

๋ฌธ์ œ ์„ค๋ช…

https://school.programmers.co.kr/learn/courses/30/lessons/161989?language=java

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก, ์ฑ„์šฉ๊นŒ์ง€ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr

์–ด๋Š ํ•™๊ต์— ํŽ˜์ธํŠธ๊ฐ€ ์น ํ•ด์ง„ ๊ธธ์ด๊ฐ€ n๋ฏธํ„ฐ์ธ ๋ฒฝ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฒฝ์— ๋™์•„๋ฆฌ · ํ•™ํšŒ ํ™๋ณด๋‚˜ ํšŒ์‚ฌ ์ฑ„์šฉ ๊ณต๊ณ  ํฌ์Šคํ„ฐ ๋“ฑ์„ ๊ฒŒ์‹œํ•˜๊ธฐ ์œ„ํ•ด ํ…Œ์ดํ”„๋กœ ๋ถ™์˜€๋‹ค๊ฐ€ ์ฒ ๊ฑฐํ•  ๋•Œ ๋–ผ๋Š” ์ผ์ด ๋งŽ๊ณ  ๊ทธ ๊ณผ์ •์—์„œ ํŽ˜์ธํŠธ๊ฐ€ ๋ฒ—๊ฒจ์ง€๊ณค ํ•ฉ๋‹ˆ๋‹ค. ํŽ˜์ธํŠธ๊ฐ€ ๋ฒ—๊ฒจ์ง„ ๋ฒฝ์ด ๋ณด๊ธฐ ํ‰ํ•ด์ ธ ํ•™๊ต๋Š” ๋ฒฝ์— ํŽ˜์ธํŠธ๋ฅผ ๋ง์น ํ•˜๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค.
๋„“์€ ๋ฒฝ ์ „์ฒด์— ํŽ˜์ธํŠธ๋ฅผ ์ƒˆ๋กœ ์น ํ•˜๋Š” ๋Œ€์‹ , ๊ตฌ์—ญ์„ ๋‚˜๋ˆ„์–ด ์ผ๋ถ€๋งŒ ํŽ˜์ธํŠธ๋ฅผ ์ƒˆ๋กœ ์น  ํ•จ์œผ๋กœ์จ ์˜ˆ์‚ฐ์„ ์•„๋ผ๋ ค ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๋ฒฝ์„ 1๋ฏธํ„ฐ ๊ธธ์ด์˜ ๊ตฌ์—ญ n๊ฐœ๋กœ ๋‚˜๋ˆ„๊ณ , ๊ฐ ๊ตฌ์—ญ์— ์™ผ์ชฝ๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ 1๋ฒˆ๋ถ€ํ„ฐ n๋ฒˆ๊นŒ์ง€ ๋ฒˆํ˜ธ๋ฅผ ๋ถ™์˜€์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํŽ˜์ธํŠธ๋ฅผ ๋‹ค์‹œ ์น ํ•ด์•ผ ํ•  ๊ตฌ์—ญ๋“ค์„ ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
๋ฒฝ์— ํŽ˜์ธํŠธ๋ฅผ ์น ํ•˜๋Š” ๋กค๋Ÿฌ์˜ ๊ธธ์ด๋Š” m๋ฏธํ„ฐ์ด๊ณ , ๋กค๋Ÿฌ๋กœ ๋ฒฝ์— ํŽ˜์ธํŠธ๋ฅผ ํ•œ ๋ฒˆ ์น ํ•˜๋Š” ๊ทœ์น™์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋กค๋Ÿฌ๊ฐ€ ๋ฒฝ์—์„œ ๋ฒ—์–ด๋‚˜๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค.
  • ๊ตฌ์—ญ์˜ ์ผ๋ถ€๋ถ„๋งŒ ํฌํ•จ๋˜๋„๋ก ์น ํ•˜๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

์ฆ‰, ๋กค๋Ÿฌ์˜ ์ขŒ์šฐ์ธก ๋์„ ๊ตฌ์—ญ์˜ ๊ฒฝ๊ณ„์„  ํ˜น์€ ๋ฒฝ์˜ ์ขŒ์šฐ์ธก ๋๋ถ€๋ถ„์— ๋งž์ถ˜ ํ›„ ๋กค๋Ÿฌ๋ฅผ ์œ„์•„๋ž˜๋กœ ์›€์ง์ด๋ฉด์„œ ๋ฒฝ์„ ์น ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ํŽ˜์ธํŠธ๋ฅผ ์น ํ•˜๋Š” ๊ตฌ์—ญ๋“ค์„ ์™„์ „ํžˆ ์น ํ•œ ํ›„ ๋ฒฝ์—์„œ ๋กค๋Ÿฌ๋ฅผ ๋–ผ๋ฉฐ, ์ด๋ฅผ ๋ฒฝ์„ ํ•œ ๋ฒˆ ์น ํ–ˆ๋‹ค๊ณ  ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
ํ•œ ๊ตฌ์—ญ์— ํŽ˜์ธํŠธ๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ์น ํ•ด๋„ ๋˜๊ณ  ๋‹ค์‹œ ์น ํ•ด์•ผ ํ•  ๊ตฌ์—ญ์ด ์•„๋‹Œ ๊ณณ์— ํŽ˜์ธํŠธ๋ฅผ ์น ํ•ด๋„ ๋˜์ง€๋งŒ ๋‹ค์‹œ ์น ํ•˜๊ธฐ๋กœ ์ •ํ•œ ๊ตฌ์—ญ์€ ์ ์–ด๋„ ํ•œ ๋ฒˆ ํŽ˜์ธํŠธ์น ์„ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์‚ฐ์„ ์•„๋ผ๊ธฐ ์œ„ํ•ด ๋‹ค์‹œ ์น ํ•  ๊ตฌ์—ญ์„ ์ •ํ–ˆ๋“ฏ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋กค๋Ÿฌ๋กœ ํŽ˜์ธํŠธ์น ์„ ํ•˜๋Š” ํšŸ์ˆ˜๋ฅผ ์ตœ์†Œํ™”ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
์ •์ˆ˜ nm๊ณผ ๋‹ค์‹œ ํŽ˜์ธํŠธ๋ฅผ ์น ํ•˜๊ธฐ๋กœ ์ •ํ•œ ๊ตฌ์—ญ๋“ค์˜ ๋ฒˆํ˜ธ๊ฐ€ ๋‹ด๊ธด ์ •์ˆ˜ ๋ฐฐ์—ด section์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ ๋กค๋Ÿฌ๋กœ ํŽ˜์ธํŠธ์น ํ•ด์•ผ ํ•˜๋Š” ์ตœ์†Œ ํšŸ์ˆ˜๋ฅผ return ํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด ์ฃผ์„ธ์š”.

์ œํ•œ ์‚ฌํ•ญ

  • 1 ≤ m ≤ n ≤ 100,000
  • 1 ≤ section์˜ ๊ธธ์ด ≤ n
    • 1 ≤ section์˜ ์›์†Œ ≤ n
    • section์˜ ์›์†Œ๋Š” ํŽ˜์ธํŠธ๋ฅผ ๋‹ค์‹œ ์น ํ•ด์•ผ ํ•˜๋Š” ๊ตฌ์—ญ์˜ ๋ฒˆํ˜ธ์ž…๋‹ˆ๋‹ค.
    • section์—์„œ ๊ฐ™์€ ์›์†Œ๊ฐ€ ๋‘ ๋ฒˆ ์ด์ƒ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    • section์˜ ์›์†Œ๋Š” ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

n m section result
8 4 [2, 3, 6] 2
5 4 [1, 3] 1
4 1 [1, 2, 3, 4] 4

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ #1

  • ์˜ˆ์ œ 1๋ฒˆ์€ 2, 3, 6๋ฒˆ ์˜์—ญ์— ํŽ˜์ธํŠธ๋ฅผ ๋‹ค์‹œ ์น ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋กค๋Ÿฌ์˜ ๊ธธ์ด๊ฐ€ 4๋ฏธํ„ฐ์ด๋ฏ€๋กœ ํ•œ ๋ฒˆ์˜ ํŽ˜์ธํŠธ์น ์— ์—ฐ์†๋œ 4๊ฐœ์˜ ๊ตฌ์—ญ์„ ์น ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒ˜์Œ์— 3, 4, 5, 6๋ฒˆ ์˜์—ญ์— ํŽ˜์ธํŠธ์น ์„ ํ•˜๋ฉด ์น ํ•ด์•ผ ํ•  ๊ณณ์œผ๋กœ 2๋ฒˆ ๊ตฌ์—ญ๋งŒ ๋‚จ๊ณ  1, 2, 3, 4๋ฒˆ ๊ตฌ์—ญ์— ํŽ˜์ธํŠธ์น ์„ ํ•˜๋ฉด 2๋ฒˆ ๋งŒ์— ๋‹ค์‹œ ์น ํ•ด์•ผ ํ•  ๊ณณ์— ๋ชจ๋‘ ํŽ˜์ธํŠธ์น ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • 2๋ฒˆ๋ณด๋‹ค ์ ์€ ํšŸ์ˆ˜๋กœ 2, 3, 6๋ฒˆ ์˜์—ญ์— ํŽ˜์ธํŠธ๋ฅผ ๋ง์น ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์—†์Šต๋‹ˆ๋‹ค.
  • ๋”ฐ๋ผ์„œ ์ตœ์†Œ ํšŸ์ˆ˜์ธ 2๋ฅผ return ํ•ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #2

  • ์˜ˆ์ œ 2๋ฒˆ์€ 1, 3๋ฒˆ ์˜์—ญ์— ํŽ˜์ธํŠธ๋ฅผ ๋‹ค์‹œ ์น ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋กค๋Ÿฌ์˜ ๊ธธ์ด๊ฐ€ 4๋ฏธํ„ฐ์ด๋ฏ€๋กœ ํ•œ ๋ฒˆ์˜ ํŽ˜์ธํŠธ์น ์— ์—ฐ์†๋œ 4๊ฐœ์˜ ๊ตฌ์—ญ์„ ์น ํ•  ์ˆ˜ ์žˆ๊ณ  1, 2, 3, 4๋ฒˆ ์˜์—ญ์— ํŽ˜์ธํŠธ์น ์„ ํ•˜๋ฉด ํ•œ ๋ฒˆ์— 1, 3๋ฒˆ ์˜์—ญ์„ ๋ชจ๋‘ ์น ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋”ฐ๋ผ์„œ ์ตœ์†Œ ํšŸ์ˆ˜์ธ 1์„ return ํ•ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #3

  • ์˜ˆ์ œ 3๋ฒˆ์€ ๋ชจ๋“  ๊ตฌ์—ญ์— ํŽ˜์ธํŠธ์น ์„ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋กค๋Ÿฌ์˜ ๊ธธ์ด๊ฐ€ 1๋ฏธํ„ฐ์ด๋ฏ€๋กœ ํ•œ ๋ฒˆ์— ํ•œ ๊ตฌ์—ญ๋ฐ–์— ์น ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ตฌ์—ญ์ด 4๊ฐœ์ด๋ฏ€๋กœ ๊ฐ ๊ตฌ์—ญ์„ ํ•œ ๋ฒˆ์”ฉ๋งŒ ์น ํ•˜๋Š” 4๋ฒˆ์ด ์ตœ์†Œ ํšŸ์ˆ˜๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
  • ๋”ฐ๋ผ์„œ 4๋ฅผ return ํ•ฉ๋‹ˆ๋‹ค.

 

๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ

class Solution {
    public int solution(int n, int m, int[] section) {
        int answer = 0;
        int max = 0;  // ๋กค๋Ÿฌ๊ฐ€ ๋งˆ์ง€๋ง‰์œผ๋กœ ์น ํ•œ ๊ตฌ์—ญ
        
        // ๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•ด section์— ์ €์žฅ๋œ ๊ตฌ์—ญ ํ•˜๋‚˜์”ฉ ์ˆœํšŒ
        for (int sec : section) {
            // max๋ณด๋‹ค sec์ด ํฌ๊ฑฐ๋‚˜ ๊ฐ™์„ ๊ฒฝ์šฐ ์‹คํ–‰
            if (max <= sec) {
                max = sec + m;
                answer++;  // answer 1 ์ฆ๊ฐ€
            }
        }
        return answer;  // answer ๋ฐ˜ํ™˜
    }
}