์ž๋ฃŒ๊ตฌ์กฐ/๐Ÿ‘‰์•Œ๊ณ ๋ฆฌ์ฆ˜ - 30

์˜ค๋Š˜ ๋“ค์€ ๊ฐ•์˜ ๋ชฉ๋ก

  1. ๊ธฐ๋ณธ ์ž๋ฃŒ๊ตฌ์กฐ - ๊ธฐ์ดˆ
  2. ๊ธฐ๋ณธ ์ž๋ฃŒ๊ตฌ์กฐ - ํ•ต์‹ฌ

์Œ๊ณ„

๋ฌธ์ œ

1์—์„œ 8 ์ˆœ์„œ๋Œ€๋กœ(์˜ค๋ฆ„์ฐจ์ˆœ)๋ผ๋ฉด ascending,
8์—์„œ 1 ์ˆœ์„œ๋Œ€๋กœ(๋‚ด๋ฆผ์ฐจ์ˆœ)๋ผ๋ฉด descending,
๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ mixed๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ

l = list(map(int, input().split(' ')))
asc, desc = True, True
for i in range(1, 7):
    if l[i] > l[i + 1]:
        asc = False
        if desc == False:
            break
    elif l[i] < l[i + 1]:
        desc = False
        if asc == False:
            break
if asc:
    print('ascending')
elif desc:
    print('descending')
else:
    print('mixed')

์ˆœ์ฐจํƒ์ƒ‰์„ ํ•˜๋ฉด์„œ,
์˜ค๋ฆ„์ฐจ์ˆœ ๊ตฌ์กฐ๊ฐ€ ๊นจ์ง€๋ฉด, asc = False
๋‚ด๋ฆผ์ฐจ์ˆœ ๊ตฌ์กฐ๊ฐ€ ๊นจ์ง€๋ฉด, desc = False
์ด๋Ÿฌํ•œ ์—ฐ์‚ฐ์„ ํ•˜๋„๋ก ํ–ˆ๋‹ค.
if desc == False, if asc == False๋Š” ์ค‘๊ฐ„์— ๋Š์–ด์ง€๋„๋ก ๊ตฌํ˜„ํ–ˆ๋Š”๋ฐ, ๊ตณ์ด ์•ˆํ•ด๋„ ๋˜๋Š” ๋ถ€๋ถ„์ด๋‹ค.

๋ฐ˜๋ณต๋ฌธ์ด ์ข…๋ฃŒ๋˜๋ฉด asc, desc์˜ ์ƒํƒœ์— ๋”ฐ๋ผ์„œ ์ถœ๋ ฅํ•˜๋„๋ก ํ–ˆ๋‹ค.

๊ฒฐ๊ณผ

๋ธ”๋ž™์žญ

๋ธ”๋ž™์žญ

์นด๋“œ์˜ ๊ฐฏ์ˆ˜ N๊ณผ ํ•œ๋„ M, N์žฅ์˜ ์นด๋“œ์— ์จ์ ธ ์žˆ๋Š” ์ˆซ์ž๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ,
M์„ ๋„˜์ง€ ์•Š์œผ๋ฉด์„œ M์— ์ตœ๋Œ€ํ•œ ๊ฐ€๊นŒ์šด ์นด๋“œ 3์žฅ์˜ ํ•ฉ์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ๋‹ค.

n, m = list(map(int, input().split(' ')))
cards = list(map(int, input().split(' ')))

v = 0
for i in range(n):
    for j in range(i + 1, n):
        for k in range(j + 1, n):
            curval = cards[i] + cards[j] + cards[k]
            if v < curval and curval <= m:
                v = curval
print(v)

3์žฅ์„ ๊ณ ๋ฅด๊ณ , ๊ทธ ํ•ฉ์ด m๋ณด๋‹ค ์ž‘๊ณ  v๋ณด๋‹ค ํฌ๋ฉด v๋ฅผ ์—…๋ฐ์ดํŠธํ•œ๋‹ค.

์Šคํƒ ์ˆ˜์—ด

์Šคํƒ ์ˆ˜์—ด

n์ด ์ฃผ์–ด์งˆ๋•Œ, 1๋ถ€ํ„ฐ n๊นŒ์ง€ ์Šคํƒ์— push, pop๋ฅผ ํ†ตํ•ด ์ฃผ์–ด์ง„ ์ˆ˜์—ด์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐฉ๋ฒ•์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ๋‹ค.

n = int(input())
nval = 1
s = []
result = ""
for i in range(n):
    v = int(input())
    while v >= nval:
        s.append(nval)
        nval += 1
        result += '+\n'
    if s[-1] != v:
        result = "NO"
        break
    s.pop()
    result += '-\n'
print(result)

์ˆœ์„œ๋Œ€๋กœ ๋„ฃ๊ธฐ ์œ„ํ•œ nval(pushํ• ๋•Œ๋งˆ๋‹ค ์ฆ๊ฐ€),
์ˆ˜์—ด์˜ ๋‹ค์Œ ์ˆ˜์„ ์ž…๋ ฅ๋ฐ›๊ธฐ ์œ„ํ•œ v,
์ˆ˜์—ด์— ๋‹ค์Œ์œผ๋กœ ๋“ค์–ด๊ฐˆ ๊ฐ’(nval)์ด ๋‹ค์Œ ์ˆ˜(v)๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด pushํ•˜๋„๋ก ํ–ˆ๋‹ค.
nval๊ณผ v๊ฐ€ ๊ฐ™์„๋•Œ ๊นŒ์ง€ pushํ•˜๊ณ  popํ•˜๋ฉด ๋ฐ”๋กœ v๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค. ๋˜, v๊ฐ€ nval๋ณด๋‹ค ์ž‘์€ ๊ฒฝ์šฐ์—๋Š” v๊ฐ€ ์ด์ „์— ์Šคํƒ์— ๋‚จ์•„์žˆ๋˜ ๊ฐ’์ด ๋˜์–ด์•ผ ํ•˜๋ฏ€๋กœ s[-1]์„ ํ†ตํ•ด์„œ ํ™•์ธํ•˜๊ณ ,
๋‹ค๋ฅธ ๊ฒฝ์šฐ NO๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ์ข…๋ฃŒํ•˜๋„๋ก ํ–ˆ๋‹ค. ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” popํ•˜๋„๋ก ํ–ˆ๋‹ค.

NO๋ฅผ No๋กœ ์ถœ๋ ฅํ•ด์„œ ์—„์ฒญํ‹€๋ ธ๋Š”๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ž˜๋ชป๋ฌ๋‚˜??ํ•˜๊ณ  ํ•œ์ฐธ๋ดค๋‹ค..ใ…‹ใ…‹
(boj ๋„ˆ๋ฌด ์˜ค๋žœ๋งŒ์ด๋ผ์„œ ์ด๋Ÿฐ ์‹ค์ˆ˜๋„ ํ•œ๋‹ค.)

์ˆ˜์—ด

์˜ˆ์ „์— c++๋กœ ํ’€์—ˆ๋˜ ๋ฌธ์ œ์ธ๋ฐ, ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๊ฐ™์€๋ฐ ์–ธ์–ด๋•Œ๋ฌธ์ธ์ง€ ์‹œ๊ฐ„์ด ์—„์ฒญ ์ฐจ์ด๋‚œ๋‹ค.

ํ”„๋ฆฐํ„ฐํ

ํ”„๋ฆฐํ„ฐํ

  1. ํ˜„์žฌ Queue์˜ ๊ฐ€์žฅ ์•ž์— ์žˆ๋Š” ๋ฌธ์„œ์˜ โ€˜์ค‘์š”๋„โ€™๋ฅผ ํ™•์ธํ•œ๋‹ค.
  2. ๋‚˜๋จธ์ง€ ๋ฌธ์„œ๋“ค ์ค‘ ํ˜„์žฌ ๋ฌธ์„œ๋ณด๋‹ค ์ค‘์š”๋„๊ฐ€ ๋†’์€ ๋ฌธ์„œ๊ฐ€ ํ•˜๋‚˜๋ผ๋„ ์žˆ๋‹ค๋ฉด, ์ด ๋ฌธ์„œ๋ฅผ ์ธ์‡„ํ•˜์ง€ ์•Š๊ณ  Queue์˜ ๊ฐ€์žฅ ๋’ค์— ์žฌ๋ฐฐ์น˜ ํ•œ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ๋ฐ”๋กœ ์ธ์‡„๋ฅผ ํ•œ๋‹ค.

์ด ๋‘ ๋ฌธ์žฅ์„ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๋Š” ๋ฌธ์ œ๋‹ค.

์ฒ˜์Œ ๋ณด๊ณ  ์šฐ์„ ์ˆœ์œ„ ํ?? ๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค ์ˆ˜ ์žˆ๋Š”๋ฐ,
๋ฌธ์„œ์˜ ์ˆ˜ $N < 100$, ์‹œ๊ฐ„์ œํ•œ 2์ดˆ๋กœ ๊ทธ๋ƒฅ ํ๋กœ ์œ„ ๋ฌธ์žฅ ๊ทธ๋Œ€๋กœ ๊ตฌํ˜„ํ•˜๋ฉด ๋˜๋Š” ๋ฌธ์ œ๋‹ค.

import queue
tc = int(input())

for t in range(tc):
    n, m = list(map(int, input().split(' ')))
    l = list(map(int, input().split(' ')))
    cnt = 1
    pq = queue.PriorityQueue()
    q = queue.Queue()
    for i in range(n):
        val = l[i]
        q.put((val, True if i == m else False))
        pq.put((-val, val))
    while not q.empty():
        while pq.queue[0][1] > q.queue[0][0]:
            q.put(q.get())
        if q.get()[1] == True:
            print(cnt)
            break
        pq.get()
        cnt += 1

์šฐ์„ ์ˆœ์œ„ ํ์™€ ํ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์šฐ์„ ์ˆœ์œ„ ํ๋กœ๋Š” ํ˜„์žฌ ํ๋ณด๋‹ค ๋” ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ๊ฐ’์ด ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จ(์‹œ๊ฐ„์ด ๋„๋„ํ•ด์„œ ๋งค๋ฒˆ ํƒ์ƒ‰ํ•ด๋„ ๋˜์ง€๋งŒ ๊ท€์ฐฎ์•„์„œ..),
ํ๋Š” ์ถœ๋ ฅํ•˜๋Š” ์ˆœ์„œ๋ฅผ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ–ˆ๋‹ค.

ํ”„๋ฆฐํ„ฐํ

ํ‚ค๋กœ๊ฑฐ

ํ‚ค๋กœ๊ฑฐ

์ด ๋ฌธ์ œ๋„ ํ’€์–ด๋ณด์ž

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ