๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ง๊ฐ๋กœ๊ทธ

ํฌ๋ž˜ํ”„ํ†ค ์ •๊ธ€ WEEK6 Day 47 ๋ณธ๋ฌธ

Krafton jungle

ํฌ๋ž˜ํ”„ํ†ค ์ •๊ธ€ WEEK6 Day 47

habbn 2024. 2. 24. 22:59
728x90
๐Ÿ“†2024.02.24

1. ์ฝ”์–ดํƒ€์ž„(socket, file discriptor, proxy)
2. ๋ฐฑ์ค€/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

 

์ฝ”์–ดํƒ€์ž„

 

์ฝ”์–ดํƒ€์ž„ํ•˜๋ฉด์„œ ์•Œ๋ ค์ฃผ์‹  ์„ค๋ช… ๋„์ ..

 

์†Œ์ผ“(socket)

ip์ฃผ์†Œ์™€ ํฌํŠธ๋ฒˆํ˜ธ๋กœ ๊ตฌ์„ฑ

 

Stream Socket - TCP ,์—ฐ์†์ ์ธ ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ์œผ๋กœ ์ „์†ก

Datagram Socket - UDP, ํŒจํ‚ค์ง€๋กœ ์ „์†ก

 

Proxy(๋Œ€๋ฆฌ, ๋Œ€์‹ )  , Proxy-Server(๋Œ€์‹  ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ์„œ๋ฒ„)

- ๋น ๋ฅธ ์—‘์„ธ์Šค or ์•ˆ์ „ํ•œ ํ†ต์‹  ( ์ค‘๊ณ„ ์„œ๋ฒ„ )

 

ํฌ์›Œ๋“œ ํ”„๋ก์‹œ 

  • ํด๋ผ์ด์–ธํŠธ ์ชฝ์— ์œ„์น˜, ํด๋ผ์ด์–ธํŠธ๋ฅผ ๊ฐ์ถœ ์ˆ˜ ์žˆ์Œ

๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ

  • ์„œ๋ฒ„ ์ชฝ์— ์œ„์น˜, ์„œ๋ฒ„๋ฅผ ๊ฐ์ถœ ์ˆ˜ ์žˆ์Œ
  • ๋‚ด๋ถ€๋ง์— ์‚ฌ์šฉํ•œ๋‹ค. (๋ณด์•ˆ ์„œ๋น„์Šค)
  • load balancing ์„œ๋ฒ„ ๋ถ€ํ•˜๋ฅผ ๋ถ„์‚ฐํ•ด์ค€๋‹ค.

์™œ ์‚ฌ์šฉ?

๊ฐœ์ธ์ •๋ณด ๋ณดํ˜ธ

-> ํ”„๋ก์‹œ ์ •๋ณด๊ฐ€ ๋“ค์–ด์˜ด

 

์†๋„ ํ–ฅ์ƒ (์บ์‹œ์— ์ €์žฅ), ๋Œ€์—ญํญ ๊ฐ์†Œ

 

๋กœ๊ทธ ๊ธฐ๋ก/๊ด€๋ฆฌ

-> ์œ ํ•ด์‚ฌ์ดํŠธ ๋ง‰์„ ์ˆ˜ ์žˆ์Œ

 

๋ฐฑ์ค€

 

์˜ค๋Š˜์€ ์Šคํƒ, ํ ๋ฌธ์ œ๋งŒ ํ’€์—ˆ๋‹ค.

๋„ํ‚ค๋„ํ‚ค ๊ฐ„์‹๋“œ๋ฆฌ๋ฏธ ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š”๋ฐ ๋ฌธ์ œ ์ดํ•ด๋ฅผ ๋ชปํ•ด์„œ ๊ฒฐ๊ตญ ํ’€์ด๋ฅผ ๋ด๋ฒ„๋ ธ๋‹ค.

์Šคํƒ์ด๋ž‘ ํ๋ฅผ ๋™์‹œ์— ํŒŒ์•…ํ•ด์•ผํ•˜๋Š” ๋ฌธ์ œ์˜€๋‹ค. (queue์— ์žˆ๋Š” ์‚ฌ๋žŒ์ด ๋‹ค ๋น ์ง€๊ณ  stack์„ ์ƒ๊ฐํ•˜๋ฉด, ๋งŒ์•ฝ queue๋ณด๋‹ค stack์— ๋” ์ž‘์€ ๊ฐ’์ด ์žˆ์œผ๋ฉด stack์— ์žˆ๋Š” ์‚ฌ๋žŒ์„ ๋จผ์ € ๋นผ์ค˜์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ)

n = int(input())

standing = list(map(int,input().split()))
stack = []
target = 1

while standing:
    if standing[0] == target:
        standing.pop(0)
        target += 1
    else:
        stack.append(standing.pop(0))
    
    while stack:
        if stack[-1] == target:
            stack.pop()
            target += 1
        else:
            break

if len(stack) == 0:
    print("Nice")
else:
    print("Sad")

 

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

 

๊ตฌ์Šฌ์„ ๋‚˜๋ˆ„๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜

์กฐํ•ฉ ๋ฌธ์ œ์ด๋‹ค. ๊ตฌ์Šฌ์˜ ๊ฐœ์ˆ˜ balls์™€ ์นœ๊ตฌ๋“ค์—๊ฒŒ ๋‚˜๋ˆ„์–ด ์ค„ ๊ตฌ์Šฌ ๊ฐœ์ˆ˜ share์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, balls ๊ฐœ์˜ ๊ตฌ์ˆ  ์ค‘ share๊ฐœ์˜ ๊ตฌ์Šฌ์„ ๊ณ ๋ฅด๋Š” ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ return ํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.!

 

ํžŒํŠธ๋ฅผ ๋ณด๋‹ˆ ์กฐํ•ฉ์œผ๋กœ ํ’€๋ฉด ๋˜๋Š” ๊ฒƒ์ด์—ˆ๋‹ค.

 

์กฐํ•ฉ(combinations)

  • ์„œ๋กœ ๋‹ค๋ฅธ n๊ฐœ์—์„œ r๊ฐœ๋ฅผ ์„ ํƒํ•  ๋•Œ ์ˆœ์„œ๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ณ , ์ค‘๋ณต์—†์ด ๋ฝ‘์„ ๊ฒฝ์šฐ์˜ ์ˆ˜
  • nCr = n! / (n-r)! * r!

 

ํ’€์ด ๋ฐฉ๋ฒ•1

combinations() ์‚ฌ์šฉ

import math

def solution(balls, share):
    return math.comb(balls,share)

 

ํ’€์ด ๋ฐฉ๋ฒ•2

factorial() ์‚ฌ์šฉ

import math

def solution(balls, share):
    n = math.factorial(balls)
    m = math.factorial(share)
    bottom = math.factorial(balls - share) * m
    return n // bottom

 

 

get() - ๋”•์…”๋„ˆ๋ฆฌ์—์„œ key์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ

 

 

 

728x90