[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.2 - ์—ฐ์†๋œ ๋ถ€๋ถ„ ์ˆ˜์—ด์˜ ํ•ฉ(C++)

2023. 6. 10. 21:48ยท๐Ÿ–ฅ๏ธ Study Note/Coding Test

https://school.programmers.co.kr/learn/courses/30/lessons/178870

๋ฌธ์ œ ์„ค๋ช…

๋น„๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ ์ˆ˜์—ด์ด ์ฃผ์–ด์งˆ ๋•Œ, ๋‹ค์Œ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด์„ ์ฐพ์œผ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

  • ๊ธฐ์กด ์ˆ˜์—ด์—์„œ ์ž„์˜์˜ ๋‘ ์ธ๋ฑ์Šค์˜ ์›์†Œ์™€ ๊ทธ ์‚ฌ์ด์˜ ์›์†Œ๋ฅผ ๋ชจ๋‘ ํฌํ•จํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ถ€๋ถ„ ์ˆ˜์—ด์˜ ํ•ฉ์€ k์ž…๋‹ˆ๋‹ค.
  • ํ•ฉ์ด k์ธ ๋ถ€๋ถ„ ์ˆ˜์—ด์ด ์—ฌ๋Ÿฌ ๊ฐœ์ธ ๊ฒฝ์šฐ ๊ธธ์ด๊ฐ€ ์งง์€ ์ˆ˜์—ด์„ ์ฐพ์Šต๋‹ˆ๋‹ค.
  • ๊ธธ์ด๊ฐ€ ์งง์€ ์ˆ˜์—ด์ด ์—ฌ๋Ÿฌ ๊ฐœ์ธ ๊ฒฝ์šฐ ์•ž์ชฝ(์‹œ์ž‘ ์ธ๋ฑ์Šค๊ฐ€ ์ž‘์€)์— ๋‚˜์˜ค๋Š” ์ˆ˜์—ด์„ ์ฐพ์Šต๋‹ˆ๋‹ค.

์ˆ˜์—ด์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ ๋ฐฐ์—ด sequence์™€ ๋ถ€๋ถ„ ์ˆ˜์—ด์˜ ํ•ฉ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ k๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์œ„ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด์˜ ์‹œ์ž‘ ์ธ๋ฑ์Šค์™€ ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค๋ฅผ ๋ฐฐ์—ด์— ๋‹ด์•„ return ํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”. ์ด๋•Œ ์ˆ˜์—ด์˜ ์ธ๋ฑ์Šค๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.


์ œํ•œ์‚ฌํ•ญ

  • 5 ≤ sequence์˜ ๊ธธ์ด ≤ 1,000,000
    • 1 ≤ sequence์˜ ์›์†Œ ≤ 1,000
    • sequence๋Š” ๋น„๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • 5 ≤ k ≤ 1,000,000,000
    • k๋Š” ํ•ญ์ƒ sequence์˜ ๋ถ€๋ถ„ ์ˆ˜์—ด๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฐ’์ž…๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

sequence k result

[1, 2, 3, 4, 5] 7 [2, 3]
[1, 1, 1, 2, 3, 4, 5] 5 [6, 6]
[2, 2, 2, 2, 2] 6 [0, 2]

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

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

[1, 2, 3, 4, 5]์—์„œ ํ•ฉ์ด 7์ธ ์—ฐ์†๋œ ๋ถ€๋ถ„ ์ˆ˜์—ด์€ [3, 4]๋ฟ์ด๋ฏ€๋กœ ํ•ด๋‹น ์ˆ˜์—ด์˜ ์‹œ์ž‘ ์ธ๋ฑ์Šค์ธ 2์™€ ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค 3์„ ๋ฐฐ์—ด์— ๋‹ด์•„ [2, 3]์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

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

[1, 1, 1, 2, 3, 4, 5]์—์„œ ํ•ฉ์ด 5์ธ ์—ฐ์†๋œ ๋ถ€๋ถ„ ์ˆ˜์—ด์€ [1, 1, 1, 2], [2, 3], [5]๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ค‘ [5]์˜ ๊ธธ์ด๊ฐ€ ์ œ์ผ ์งง์œผ๋ฏ€๋กœ ํ•ด๋‹น ์ˆ˜์—ด์˜ ์‹œ์ž‘ ์ธ๋ฑ์Šค์™€ ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค๋ฅผ ๋‹ด์€ [6, 6]์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

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

[2, 2, 2, 2, 2]์—์„œ ํ•ฉ์ด 6์ธ ์—ฐ์†๋œ ๋ถ€๋ถ„ ์ˆ˜์—ด์€ [2, 2, 2]๋กœ 3๊ฐ€์ง€ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š”๋ฐ, ๊ธธ์ด๊ฐ€ ์งง์€ ์ˆ˜์—ด์ด ์—ฌ๋Ÿฌ ๊ฐœ์ธ ๊ฒฝ์šฐ ์•ž์ชฝ์— ๋‚˜์˜จ ์ˆ˜์—ด์„ ์ฐพ์œผ๋ฏ€๋กœ [0, 2]๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.


๋‚ด ํ’€์ด

left ๊ฐ’๊ณผ right ๊ฐ’์„ ์ตœ์†Œํ•œ์˜ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฉด์„œ ์ฐพ๋Š”๊ฒŒ ํ•ต์‹ฌ์ด๋‹ค.

์ด์ค‘ for๋ฌธ์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ฉด ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚œ๋‹ค.

#include <vector>
#include <limits>

std::vector<int> solution(std::vector<int> sequence, int k) 
{
    std::vector<int> answer = {-1, -1};
    int min_length = std::numeric_limits<int>::max();
    int total = 0;
    int left = 0;
    
    for (int right = 0; right < sequence.size(); ++right) 
    {
        // right ์ธ๋ฑ์Šค์˜ ๊ฐ’์„ ๊ณ„์† ๋”ํ•œ๋‹ค
		total += sequence[right];
        
		// ํ•ฉ์นœ ๊ฐ’์ด ๋ชฉํ‘œ๊ฐ’๋ณด๋‹ค ์ปค์ง€๋ฉด left ์ธ๋ฑ์Šค๋ฅผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์˜ฎ๊ธฐ๋ฉฐ
		// ์ด์ „์— ๋”ํ–ˆ๋˜ left ์ธ๋ฑ์Šค์˜ ๊ฐ’์„ ๋นผ์ค€๋‹ค.
        while (total > k) 
        {
            total -= sequence[left];
            ++left;
        }
        
		// ํ•ฉ์นœ ๊ฐ’์ด k์— ๋„๋‹ฌํ•˜๋ฉด min_length๋ณด๋‹ค ์ž‘์€์ง€ ํ™•์ธํ•œ๋‹ค.
		// ์ž‘๋‹ค๋ฉด ํ˜„์žฌ left, right ๊ฐ’์„ answer์— ๋“ฑ๋กํ•˜๊ณ  min_length๋ฅผ ๊ฐฑ์‹ ํ•œ๋‹ค.
        if (total == k && (right - left) < min_length) 
        {
            answer[0] = left;
            answer[1] = right;
            min_length = right - left;
        }
    }
    
    return answer;
}

์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'๐Ÿ–ฅ๏ธ Study Note > Coding Test' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.2 - ์‹œ์†Œ ์ง๊ฟ(C++)  (1) 2023.06.12
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.1 - ํ•ธ๋“œํฐ ๋ฒˆํ˜ธ ๊ฐ€๋ฆฌ๊ธฐ(C++)  (0) 2023.06.11
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] level.2 - ์กฐ์ด์Šคํ‹ฑ(C++)  (1) 2023.06.10
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] level.2 - ๋กค์ผ€์ดํฌ ์ž๋ฅด๊ธฐ(C++)  (0) 2023.06.08
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] level.2 - ๋ฏธ๋กœ ํƒˆ์ถœ(C++)  (0) 2023.06.07
'๐Ÿ–ฅ๏ธ Study Note/Coding Test' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.2 - ์‹œ์†Œ ์ง๊ฟ(C++)
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.1 - ํ•ธ๋“œํฐ ๋ฒˆํ˜ธ ๊ฐ€๋ฆฌ๊ธฐ(C++)
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] level.2 - ์กฐ์ด์Šคํ‹ฑ(C++)
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] level.2 - ๋กค์ผ€์ดํฌ ์ž๋ฅด๊ธฐ(C++)
Beankong_
Beankong_
์ฃผ๋‹ˆ์–ด ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋ž˜๋จธ ๊ณต๋ถ€ ๊ธฐ๋ก
  • Beankong_
    Beankong's Devlog
    Beankong_
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ์ „์ฒด ๊ธ€ (145) N
      • โ›… Daily (0)
      • ๐Ÿ–ฅ๏ธ Study Note (1) N
        • C++ (1) N
        • Unreal Engine (5)
        • Coding Test (123)
        • Design Patteren (5)
        • VCS (Git..) (1)
        • Server (1)
      • ๐Ÿงญ Devlog (8) N
        • ์˜ค๋‹ต๋…ธํŠธ (4) N
        • UE5 GameLift Server Test Project (1)
        • TIL (3)
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
Beankong_
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.2 - ์—ฐ์†๋œ ๋ถ€๋ถ„ ์ˆ˜์—ด์˜ ํ•ฉ(C++)
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”