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

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

  1. ๊ธฐ๋ณธ ์ •๋ ฌ ํ•ต์‹ฌ
  2. ์žฌ๊ท€ ํ˜ธ์ถœ ํ•ต์‹ฌ

๋‚˜์ด์ˆœ ์ •๋ ฌ

๋‚˜์ด์ˆœ ์ •๋ ฌ

๊ฐ„๋‹จํ•œ ํ‚ค(๋‚˜์ด)-๊ฐ’(์ด๋ฆ„)์˜ ํ˜•ํƒœ๋ฅผ ๊ฐ€์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•˜๋Š” ๋ฌธ์ œ.

import queue
pq = queue.PriorityQueue()
n = int(input())
f = 0
for _ in range(n):
    p, name = input().split(' ')
    p = int(p)
    pq.put([p, f, name])
    f += 1
while not pq.empty():
    e = pq.get()
    print(e[0], e[2])

์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ์ด์šฉํ•ด ์ž…๋ ฅ๋ฐ›์„๋•Œ๋งˆ๋‹ค ์ •๋ ฌํ•˜๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•

n = int(input())
f = 0
l = []
for _ in range(n):
    p, name = input().split(' ')
    p = int(p)
    l.append([p, f, name])
    f += 1
l.sort()
for e in l:
    print(e[0], e[2])

์ž…๋ ฅ ๋‹ค ๋ฐ›๊ณ  ์ •๋ ฌํ•˜๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•

์œ„ ๋‘ ๋ฐฉ์‹์—์„œ f๋ฅผ ์“ด ์ด์œ ๋Š” ์ž…๋ ฅ๋ฐ›์€ ์ˆœ์„œ๋ฅผ ์œ„ํ•œ ๊ฒƒ์ธ๋ฐ,
์ •๋ ฌ ๋ฐฉ์‹์ด 0๋ฒˆ์งธ ์š”์†Œ์—์„œ ๋น„๊ต, 1๋ฒˆ์งธ ์š”์†Œ์—์„œ ๋น„๊ต, 2๋ฒˆ์งธ ์š”์†Œ์—์„œ ๋น„๊ตํ•˜๊ธฐ๋•Œ๋ฌธ์ด๋‹ค.

์ •๋ ฌํ• ๋•Œ ์‚ฌ์šฉํ•  ๊ฐ’์„ ์ง€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์กด์žฌํ•œ๋‹ค.
์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด f๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

n = int(input())
f = 0
l = []
for _ in range(n):
    p, name = input().split(' ')
    p = int(p)
    l.append([p, name])
ใ…ฃ.sort(key=lambda x : x[0])
for e in l:
    print(e[0], e[1])

์—ฌ๊ธฐ์„œ ์‚ฌ์šฉํ•˜๋Š” sort์— key๋Š” ์ •๋ ฌํ• ๋•Œ ์‚ฌ์šฉํ•  ๊ฐ’์„ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค.
lambda๋Š” ํ•œ์ค„ ํ•จ์ˆ˜๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.
lambda ๋งค๊ฐœ๋ณ€์ˆ˜ : ๋ฐ˜ํ™˜๊ฐ’ ์ด๋Ÿฌํ•œ ํ˜•์‹์ด๋‹ค.

lambda parameters : expression # <-์ด๋Ÿฐ ๋žŒ๋‹ค์‹์€
def func(parameters): # <- ์ด๋Ÿฐ ํ•จ์ˆ˜์ฒ˜๋Ÿผ ๋™์ž‘
    return expression

์ขŒํ‘œ ์ •๋ ฌํ•˜๊ธฐ

์ขŒํ‘œ ์ •๋ ฌํ•˜๊ธฐ

์ด ๋ฌธ์ œ๋Š” ์œ„ ๋ฌธ์ œ๋ณด๋‹ค ๋” ๊ฐ„๋‹จํ•˜๋‹ค.
๊ทธ๋ƒฅ ์ž…๋ ฅ๋ฐ›๊ณ  ์ •์ˆ˜ํ˜• ๊ฐ’์„ ๊ฐ€์ง€๋Š” ๋ฆฌ์ŠคํŠธ๋กœ ๋ณ€ํ™˜ํ•ด์„œ ๋ฆฌ์ŠคํŠธ์— ์‚ฝ์ž… ํ›„, sort ์‚ฌ์šฉํ•˜๋ฉด ๋๋‚œ๋‹ค.

n = int(input())
f = 0
l = []
for _ in range(n):
    l.append(list(map(int, input().split(' '))))
l.sort()
for e in l:
    print(e[0], e[1])

์ˆ˜ ์ •๋ ฌํ•˜๊ธฐ3

์ˆ˜ ์ •๋ ฌํ•˜๊ธฐ3

์ตœ๋Œ€๋กœ ์ฃผ์–ด์ง€๋Š” ์ˆ˜๋“ค์ด 10,000,000๊ฐœ๊ณ , ์‹œ๊ฐ„์ œํ•œ์ด 3์ดˆ๋ผ์„œ ๋„‰๋„‰ํ•ด๋ณด์ด๋Š”๋ฐ,
๊ทธ๋ƒฅ $O(nlogn)$์œผ๋กœ ํ•ด๋„ ๋˜๊ฒ ์ง€?

์ž…๋ ฅ๋ฐ›์„ ๊ฒƒ๋“ค์ด ๋งŽ์œผ๋ฉด sys.stdin.readline()๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.
์ž…์ถœ๋ ฅ ํ•˜๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์œผ๋กœ ์ธํ•ด์„œ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚œ๋‹ค.

import sys
n = int(sys.stdin.readline())
s = [0 for _ in range(10001)]
for _ in range(n):
    s[int(sys.stdin.readline())] += 1
for e in range(10001):
    if s[e]:
        print('{}\n'.format(e) * s[e], end='')

๋ฐ์ดํ„ฐ๋Š” 10,000,000๊ฐœ, ์‹œ๊ฐ„์ œํ•œ 3์ดˆ, ๋ฉ”๋ชจ๋ฆฌ 8MB,
์‹œ๊ฐ„์€ ๋„‰๋„‰ํ•œ๋ฐ ๋น„ํ•ด ๋ฉ”๋ชจ๋ฆฌ๋Š” ์—„์ฒญ ์ ๋‹ค.

์ •์ˆ˜ํ˜•์„ 4๋ฐ”์ดํŠธ๋ผ๊ณ  ํ• ๋•Œ 40,000,000Byte๋Š” ์•ฝ 40MB,
-> ์ด ๋ฐ์ดํ„ฐ๋“ค์„ ๋‹ค ์ €์žฅํ•˜๋ผ๋Š”๊ฒŒ ์•„๋‹˜ ์‹œ๊ฐ„์ œํ•œ 3์ดˆ์— NlogN? 232534966 ๊ฐ€๋Šฅํ•˜๊ธด ํ•˜๊ฒ ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ๋ฐ์ดํ„ฐ์˜ ๋ฒ”์œ„๋ฅผ ํ•œ๋ฒˆ ๋ณด์ž.
๋ฐ์ดํ„ฐ์˜ ๋ฒ”์œ„๋Š” 1 ~ 10000์œผ๋กœ, 10000000๊ฐœ์˜ ๋ฐ์ดํ„ฐ ์ค‘์—์„œ ์ค‘๋ณต์ด ์—„์ฒญ ๋งŽ์ด ์ผ์–ด๋‚˜๊ฒ ๋‹ค.
๊ทธ๋ ‡๋‹ค๋ฉด 1 ~ 10000๋ฒ”์œ„์˜ ์ˆซ์ž๋“ค์˜ ๊ฐฏ์ˆ˜๋ฅผ ์„ธ์„œ ์ถœ๋ ฅํ•˜๋Š”๊ฑด ์–ด๋–จ๊นŒ?
๋ฉ”๋ชจ๋ฆฌ๋„ 40KB์ •๋„ ๋“ค๊ณ , ์‹œ๊ฐ„๋ณต์žก๋„๋„ $O(n)$์ด๋‹ค.

์ˆซ์ž๋“ค์˜ ๊ฐฏ์ˆ˜๋ฅผ ์„ธ์„œ ์ •๋ ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์€ Counting sort(๊ณ„์ˆ˜ ์ •๋ ฌ)์ด๋ผ๊ณ  ํ•œ๋‹ค.

์•„๋ž˜๋Š” input์‚ฌ์šฉํ•˜๋‹ค๊ฐ€ ์‹œ๊ฐ„์ดˆ๊ณผ ๋‚œ ๊ฒฝ์šฐ์™€ sys.stdin.readline() ์‚ฌ์šฉํ•ด์„œ ์‹œ๊ฐ„์ดˆ๊ณผ ํ•ด๊ฒฐํ•œ ๊ฒฝ์šฐ

10989

ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜

ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜

n๋ฒˆ์งธ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ

n = int(input())
memo = [0 for _ in range(n + 1)]
memo[1] = 1
for i in range(2, n+1):
    memo[i] = memo[i - 1] + memo[i - 2]
print(memo[n])

DP์˜ ๋ฉ”๋ชจ์ด์ œ์ด์…˜ ์ด์šฉํ•ด์„œ ํ’€์—ˆ๋‹ค.

n = int(input())
a, b = 0, 1
while n > 0:
    a, b = b, a + b
    n -= 1
print(a)

๋ฉ”๋ชจ๋ฅผ ์œ„ํ•œ ๋ณ€์ˆ˜๋ฅผ ๋‹จ ๋‘๊ฐœ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ‘ธ๋Š” ์ฝ”๋“œ

2747

1๋ฒˆ์ด ์œ„์—์„œ ์ฒ˜์Œ์œผ๋กœ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๊ณ ,
2๋ฒˆ์ด ๊ทธ ๋‹ค์Œ์œผ๋กœ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋‹ค.
๋‘๋ฒˆ์งธ ์ฝ”๋“œ๊ฐ€ ์‹œ๊ฐ„๋„ ๋” ๋น ๋ฅด๊ณ  ๋ฉ”๋ชจ๋ฆฌ๋„ ํ›จ์”ฌ ์ ๊ฒ ๋‹ค ์ƒ๊ฐํ–ˆ๋Š”๋ฐ,
๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰๋„ ๊ฐ™๊ณ , ์‹œ๊ฐ„๋„ ๋” ๋А๋ ธ๋‹ค.
๋˜ ์ค‘๊ฐ„์— ์žˆ๋Š” ๋ถ€๋ถ„์€ while์„ for-range๋กœ ์ž‘์„ฑํ•œ ๋ถ€๋ถ„์ธ๋ฐ, ์‹œ๊ฐ„์ด ๊ฐ€์žฅ๋งŽ์ด ๊ฑธ๋ ธ๋‹ค.
(range์—์„œ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•ด์„œ ๋ฐ˜ํ™˜ํ•˜๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์ธ๊ฐ€๋ถ€๋‹ค)

Z

Z

def search(fx, tx, fy, ty, x, y):
    if fx + 1== tx:
        return 1
    mx, my = (fx + tx) // 2, (fy + ty) // 2
    block = (tx - mx) ** 2
    if x < mx:
        if y < my:
            res = search(fx, mx, fy, my, x, y)
            return res
        else:
            res = block + search(fx, mx, my, ty, x, y)
            return res
    else:
        if y < my:
            res = block * 2 + search(mx, tx, fy, my, x, y)
            return res
        else:
            res = block * 3 + search(mx, tx, my, ty, x, y)
            return res
n, x, y = list(map(int, input().split(' ')))
print(search(0, 2 << n, 0, 2 << n, x, y) - 1)

1074

ํ‰๋ฉด [fx, tx), [fy, ty)์— ๋Œ€ํ•ด 4๋“ฑ๋ถ„ํ•˜์—ฌ,
๋ฐฉ๋ฌธํ•˜๋Š” ์ˆœ์„œ๋Œ€๋กœ ์™ผ์ชฝ ์œ„๋ฅผ 0, ์˜ค๋ฅธ์ชฝ ์œ„๋ฅผ 1, ์™ผ์ชฝ ์•„๋ž˜๋ฅผ 2, ์˜ค๋ฅธ์ชฝ ์•„๋ž˜๋ฅผ 3์œผ๋กœ ๋‘๊ณ ,
์ด๋“ค์„ ํ‰๋ฉด์— ๋Œ€ํ•ด ๋ถ€๋ถ„๊ณต๊ฐ„์ด๋ผ๊ณ  ํ•  ๋•Œ,

0๋ฒˆ์งธ ๋ถ€๋ถ„๊ณต๊ฐ„์€ ์•ž์— ๋” ์ด์ƒ์˜ ๋ถ€๋ถ„๊ณต๊ฐ„์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค.
1๋ฒˆ์งธ ๋ถ€๋ถ„๊ณต๊ฐ„์€ ์•ž์— 1๊ฐœ ๋ถ€๋ถ„๊ณต๊ฐ„์ด ์กด์žฌํ•œ๋‹ค.
2๋ฒˆ์งธ ๋ถ€๋ถ„๊ณต๊ฐ„์€ ์•ž์— 2๊ฐœ ๋ถ€๋ถ„๊ณต๊ฐ„์ด ์กด์žฌํ•œ๋‹ค.
3๋ฒˆ์งธ ๋ถ€๋ถ„๊ณต๊ฐ„์€ ์•ž์— 3๊ฐœ ๋ถ€๋ถ„๊ณต๊ฐ„์ด ์กด์žฌํ•œ๋‹ค.
๋”ฐ๋ผ์„œ n๋ฒˆ์งธ ๋ถ€๋ถ„๊ณต๊ฐ„์˜ ์•ž์—๋Š” n๊ฐœ์˜ ๋ถ€๋ถ„๊ณต๊ฐ„์ด ์กด์žฌํ•œ๋‹ค.
์ด๋ฅผ ์ด์šฉํ•˜์—ฌ ํ‰๋ฉด์—์„œ ์ขŒํ‘œ(x, y)๋ฅผ ์ฐพ์œผ๋ ค๋ฉด, n๋ฒˆ์งธ ๋ถ€๋ถ„๊ณต๊ฐ„์—์„œ ์ฐพ๋Š”๋ฐ์˜ ์ˆœ์„œ + n๊ฐœ์˜ ๋ถ€๋ถ„๊ณต๊ฐ„์˜ ๋„“์ด๋ฅผ ํ†ตํ•ด ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.
๊ฐ ํ‰๋ฉด์—์„œ ํ•˜๋‚˜์˜ ๋ถ€๋ถ„๊ณต๊ฐ„์˜ ๋„“์ด๋ฅผ block์ด๋ผ ํ• ๋•Œ, -> $block * n + search(n๋ฒˆ์งธ ๋ถ€๋ถ„๊ณต๊ฐ„ ์˜์—ญ, x, y)$์ด๋ผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

block = ํ•œ ๋ณ€์˜ ๊ธธ์ด๋ฅผ $(fx + tx)/2$๋กœ ํ•˜๋Š” ์ •์‚ฌ๊ฐํ˜• ํ˜•ํƒœ์˜ ๋ถ€๋ถ„๊ณต๊ฐ„

0 ๋งŒ๋“ค๊ธฐ

0 ๋งŒ๋“ค๊ธฐ

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