[TIL-20260212] ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ๋ณต์Šต - ํƒ‘(Tower) ๋ฌธ์ œ

2026. 2. 14. 12:23ยทToday I Learned ๐Ÿง

 

๐Ÿ€ To Do List

โœ”๏ธ ์ฝ”ํ…Œ ๊ฐ•์˜ - stack

โœ”๏ธ ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ - ์œ ์ € ์ •๋ณด ์กฐํšŒ api, access token ์œ ํšจ์„ฑ ์ฒดํฌ api, dev ๋ฐฐํฌ

 

๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป Today I Learned ...

 

ํƒ‘(Tower) ๋ฌธ์ œ

 

https://www.acmicpc.net/problem/2493

 

 


์ด์ค‘ for๋ฌธ ๋ฐฉ์‹

์ž…๋ ฅ: [6, 9, 5, 7, 4]

์‹œ๊ฐํ™”:
๐Ÿ”ซ ๐Ÿ”ซ ๐Ÿ”ซ ๐Ÿ”ซ    ๋ ˆ์ด์ €์˜ ๋ฐฉํ–ฅ(์™ผ์ชฝ์œผ๋กœ)
   I
   I
   I     I
I  I     I
I  I  I  I
I  I  I  I  I
6  9  5  7  4

์ถœ๋ ฅ: [0, 0, 2, 2, 4]

 

  • ๊ฐ ํƒ‘์—์„œ ์™ผ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ ๋ ˆ์ด์ €๋ฅผ ๋ฐœ์‚ฌ
  • ์ž์‹ ๋ณด๋‹ค ๋†’๊ฑฐ๋‚˜ ๊ฐ™์€ ํƒ‘์„ ๋งŒ๋‚˜๋ฉด ์ˆ˜์‹ ๋จ
  • ์˜ค๋ฅธ์ชฝ๋ถ€ํ„ฐ ์—ญ์ˆœ์œผ๋กœ ํƒ์ƒ‰ํ•˜๋ฉด์„œ ์™ผ์ชฝ ํƒ‘๋“ค์„ ํ™•์ธ

 

def get_receiver_top_orders(heights):
    n = len(heights)
    result = [0] * n # ์‹ ํ˜ธ๋ฅผ ์ˆ˜์‹ ํ•˜๋Š” ํƒ‘์ด ์—†์œผ๋ฉด 0์œผ๋กœ ํ‘œ์‹œ

    # ์˜ค๋ฅธ์ชฝ๋ถ€ํ„ฐ ์—ญ์ˆœ ํƒ์ƒ‰
    for i in range(n - 1, -1, -1):
        # ํ˜„์žฌ ํƒ‘์˜ ์™ผ์ชฝ ํƒ‘๋“ค์„ ํ™•์ธ
        for j in range(i - 1, -1, -1):
            # ํ˜„์žฌ ํƒ‘๋ณด๋‹ค ๋†’๊ฑฐ๋‚˜ ๊ฐ™์€ ํƒ‘์„ ์ฐพ์œผ๋ฉด
            if heights[j] >= heights[i]:
                result[i] = j + 1  # 1-indexed ์œ„์น˜ ์ €์žฅ
                break

    return result

 

  • ๊ฐ ํƒ‘์—์„œ ์™ผ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ ๋ ˆ์ด์ €๋ฅผ ๋ฐœ์‚ฌํ•œ๋‹ค.
  • ์ž์‹ ๋ณด๋‹ค ๋†’๊ฑฐ๋‚˜ ๊ฐ™์€ ํƒ‘์„ ๋งŒ๋‚˜๋ฉด ์ˆ˜์‹ ๋œ๋‹ค.
  • ์˜ค๋ฅธ์ชฝ๋ถ€ํ„ฐ ์—ญ์ˆœ์œผ๋กœ ํƒ์ƒ‰ํ•˜๋ฉด์„œ ์™ผ์ชฝ ํƒ‘๋“ค์„ ํ™•์ธํ•œ๋‹ค.

 

Stack ํ™œ์šฉ ๋ฐฉ์‹

 

 

๐Ÿ’ก Stack์ด๋ž€?

  • ํ•œ์ชฝ ๋์œผ๋กœ๋งŒ ์ž๋ฃŒ๋ฅผ ๋„ฃ๊ณ  ๋บ„ ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ
  • ๊ธฐ๋Šฅ
    • `push(data)` : ๋งจ ์•ž์— ๋ฐ์ดํ„ฐ ๋„ฃ๊ธฐ
    • `pop()` : ๋งจ ์•ž์˜ ๋ฐ์ดํ„ฐ ๋ฝ‘๊ธฐ
    • `peek()` : ๋งจ ์•ž์˜ ๋ฐ์ดํ„ฐ ๋ณด๊ธฐ
    • `isEmpty()`: ์Šคํƒ์ด ๋น„์—ˆ๋Š”์ง€ ์•ˆ ๋น„์—ˆ๋Š”์ง€ ์—ฌ๋ถ€ ๋ฐ˜ํ™˜ํ•ด์ฃผ๊ธฐ

 

์ดˆ๊ธฐ: [6, 9, 5, 7, 4]
                  ↑
                 pop

1. pop(4) → [6, 9, 5, 7]๊ณผ ๋น„๊ต → 7 ์ฐพ์Œ → answer[4] = 4
2. pop(7) → [6, 9, 5]์™€ ๋น„๊ต → 9 ์ฐพ์Œ → answer[3] = 2
3. pop(5) → [6, 9]์™€ ๋น„๊ต → 9 ์ฐพ์Œ → answer[2] = 2
4. pop(9) → [6]๊ณผ ๋น„๊ต → ์—†์Œ → answer[1] = 0
5. pop(6) → []์™€ ๋น„๊ต → ์—†์Œ → answer[0] = 0
  • ๋ฐฐ์—ด์„ Stack์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•œ๋‹ค.
  • ๋งจ ๋’ค(์˜ค๋ฅธ์ชฝ)๋ถ€ํ„ฐ `pop()` ํ•˜๋ฉด์„œ ์ฒ˜๋ฆฌํ•œ๋‹ค.
  • `pop()`๋œ ๊ฐ’๊ณผ ๋‚จ์€ ๋ฐฐ์—ด(์™ผ์ชฝ ํƒ‘๋“ค)์„ ๋น„๊ตํ•œ๋‹ค.
  • ์ž์‹ ๋ณด๋‹ค ๋†’๊ฑฐ๋‚˜ ๊ฐ™์€ ํƒ‘์„ ์ฐพ์œผ๋ฉด ํ•ด๋‹น ์œ„์น˜ ์ €์žฅํ•œ๋‹ค.

 

def get_receiver_top_orders_stack(heights):
    answer = [0] * len(heights)

    while heights:
        # ๋งจ ๋’ค(์˜ค๋ฅธ์ชฝ) ํƒ‘ ๊บผ๋‚ด๊ธฐ
        height = heights.pop()

        # ๋‚จ์€ ๋ฐฐ์—ด(์™ผ์ชฝ ํƒ‘๋“ค)์„ ์—ญ์ˆœ์œผ๋กœ ํƒ์ƒ‰
        for index in range(len(heights) - 1, -1, -1):
            # ์ž์‹ ๋ณด๋‹ค ๋†’๊ฑฐ๋‚˜ ๊ฐ™์€ ํƒ‘ ๋ฐœ๊ฒฌ
            if height <= heights[index]:
                # ํ˜„์žฌ ๋‚จ์€ ๋ฐฐ์—ด์˜ ๊ธธ์ด = ์›๋ž˜ ๋ฐฐ์—ด์—์„œ์˜ ์ธ๋ฑ์Šค
                answer[len(heights)] = index + 1
                break

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

'Today I Learned ๐Ÿง' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[TIL-20260215] iOS ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ Google ์†Œ์…œ ๋กœ๊ทธ์ธ ์ด์Šˆ ํ•ด๊ฒฐ  (0) 2026.02.15
[TIL-20260213] Swagger์—์„œ ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ ํ…Œ์ŠคํŠธ  (0) 2026.02.14
[TIL-20260211] ์ฝ”ํ…Œ - ๋ณ‘ํ•ฉ ์ •๋ ฌ , Open API 3.0 Swagger ๋ฌธ์„œ ์ž‘์„ฑ  (0) 2026.02.12
[TIL-20260208] Instant๋กœ ํ† ํฐ ๋งŒ๋ฃŒ ์ž„๋ฐ• ์—ฌ๋ถ€ ์ฒดํฌ  (0) 2026.02.08
[TIL-20260206] Duration์œผ๋กœ ํ† ํฐ ๋งŒ๋ฃŒ ์ž„๋ฐ• ์—ฌ๋ถ€ ์ฒดํฌ  (0) 2026.02.07
'Today I Learned ๐Ÿง' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [TIL-20260215] iOS ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ Google ์†Œ์…œ ๋กœ๊ทธ์ธ ์ด์Šˆ ํ•ด๊ฒฐ
  • [TIL-20260213] Swagger์—์„œ ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ ํ…Œ์ŠคํŠธ
  • [TIL-20260211] ์ฝ”ํ…Œ - ๋ณ‘ํ•ฉ ์ •๋ ฌ , Open API 3.0 Swagger ๋ฌธ์„œ ์ž‘์„ฑ
  • [TIL-20260208] Instant๋กœ ํ† ํฐ ๋งŒ๋ฃŒ ์ž„๋ฐ• ์—ฌ๋ถ€ ์ฒดํฌ
ํ•ด๋‹ˆ ๐ŸŒฑ
ํ•ด๋‹ˆ ๐ŸŒฑ
๊ธฐ๋ก์ด ์ž์‚ฐ์ด๋‹ค ( •ฬ€แด—•ฬ )ูˆโœ๏ธ
  • ํ•ด๋‹ˆ ๐ŸŒฑ
    haeni.dev
    ํ•ด๋‹ˆ ๐ŸŒฑ
  • ๋งํฌ

    • github
    • velog
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (25) N
      • ์šฐ์‚ฌ๊ธฐ ๊ฐœ๋ฐœ์ผ์ง€ ๐Ÿฐ (4)
      • Today I Learned ๐Ÿง (19) N
      • ๋ถ„๋…ธ์˜ ํƒ€์ดํ•‘ ๋กœ๊ทธ ๐Ÿ”ฅ (2)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    IT
    springboot
    ci/cd
    ๊ฐœ๋ฐœ์ž
    til
    ๊ฐœ๋ฐœ
    ์ฝ”ํ…Œ
    ์ฝ”๋”ฉํ…Œ์ŠคํŠธ
    ๋ฐฑ์—”๋“œ
    AWS
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.5
ํ•ด๋‹ˆ ๐ŸŒฑ
[TIL-20260212] ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ๋ณต์Šต - ํƒ‘(Tower) ๋ฌธ์ œ
์ƒ๋‹จ์œผ๋กœ

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