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

 

๋ฌธ์ œ

 

๋ฌธ์ œ ์„ค๋ช…

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ํŒ€์—์„œ๋Š” ๊ธฐ๋Šฅ ๊ฐœ์„  ์ž‘์—…์„ ์ˆ˜ํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค. ๊ฐ ๊ธฐ๋Šฅ์€ ์ง„๋„๊ฐ€ 100%์ผ ๋•Œ ์„œ๋น„์Šค์— ๋ฐ˜์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋˜, ๊ฐ ๊ธฐ๋Šฅ์˜ ๊ฐœ๋ฐœ์†๋„๋Š” ๋ชจ๋‘ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๋’ค์— ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ์•ž์— ์žˆ๋Š” ๊ธฐ๋Šฅ๋ณด๋‹ค ๋จผ์ € ๊ฐœ๋ฐœ๋  ์ˆ˜ ์žˆ๊ณ , ์ด๋•Œ ๋’ค์— ์žˆ๋Š” ๊ธฐ๋Šฅ์€ ์•ž์— ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ๋ฐฐํฌ๋  ๋•Œ ํ•จ๊ป˜ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.
๋จผ์ € ๋ฐฐํฌ๋˜์–ด์•ผ ํ•˜๋Š” ์ˆœ์„œ๋Œ€๋กœ ์ž‘์—…์˜ ์ง„๋„๊ฐ€ ์ ํžŒ ์ •์ˆ˜ ๋ฐฐ์—ด progresses์™€ ๊ฐ ์ž‘์—…์˜ ๊ฐœ๋ฐœ ์†๋„๊ฐ€ ์ ํžŒ ์ •์ˆ˜ ๋ฐฐ์—ด speeds๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ ๊ฐ ๋ฐฐํฌ๋งˆ๋‹ค ๋ช‡ ๊ฐœ์˜ ๊ธฐ๋Šฅ์ด ๋ฐฐํฌ๋˜๋Š”์ง€๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•˜์„ธ์š”.

 

์ œํ•œ ์‚ฌํ•ญ

  • ์ž‘์—…์˜ ๊ฐœ์ˆ˜(progresses, speeds๋ฐฐ์—ด์˜ ๊ธธ์ด)๋Š” 100๊ฐœ ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • ์ž‘์—… ์ง„๋„๋Š” 100 ๋ฏธ๋งŒ์˜ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • ์ž‘์—… ์†๋„๋Š” 100 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • ๋ฐฐํฌ๋Š” ํ•˜๋ฃจ์— ํ•œ ๋ฒˆ๋งŒ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ•˜๋ฃจ์˜ ๋์— ์ด๋ฃจ์–ด์ง„๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ง„๋„์œจ์ด 95%์ธ ์ž‘์—…์˜
    ๊ฐœ๋ฐœ ์†๋„๊ฐ€ ํ•˜๋ฃจ์— 4%๋ผ๋ฉด ๋ฐฐํฌ๋Š” 2์ผ ๋’ค์— ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

 

์ž…์ถœ๋ ฅ ์˜ˆ

progresses speeds return
[93, 30, 55] [1, 30, 5] [2, 1]
[95, 90, 99, 99, 80, 99] [1, 1, 1, 1, 1] [1, 3, 2]

 

 

์†Œ์Šค ์ฝ”๋“œ
# 1
import math

def solution(progresses, speeds):
    n = len(progresses)
    answers = []

    # ๊ฐ ์ž‘์—…์ด 100% ๋˜๊ธฐ ์œ„ํ•ด ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„
    times = [math.ceil((100-progresses[i])/speeds[i]) for i in range(n)]

    cnt = 1                 # ์™„๋ฃŒ๋œ ์ž‘์—…์˜ ์ˆ˜
    max_time = times[0]     # ์ฒซ ๋ฒˆ์งธ ์ž‘์—…์˜ ์‹œ๊ฐ„์„ max_time์œผ๋กœ ์ง€์ •

    # ์‹œ๊ฐ„ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋Œ๋ฉด์„œ max_time๊ณผ ๋น„๊ต
    for i in range(1,n):
        if times[i] <= max_time:    # 1. ํ•„์š”ํ•œ ์‹œ๊ฐ„์ด max_time๋ณด๋‹ค ์ ์œผ๋ฉด
            cnt += 1                #    ์ž‘์—…์ด ์™„๋ฃŒ๋œ ๊ฒƒ์ด๋ฏ€๋กœ ์ž‘์—…์˜ ์ˆ˜ +1
        else:                       # 2. ํ•„์š”ํ•œ ์‹œ๊ฐ„์ด max_time๋ณด๋‹ค ๋งŽ์œผ๋ฉด
            answers.append(cnt)     #    ํ˜„์žฌ๊นŒ์ง€ ์™„๋ฃŒํ•œ ์ž‘์—…์˜ ์ˆ˜๋ฅผ answers์— ์ถ”๊ฐ€
            max_time = times[i]     #    max_time์„ ํ˜„์žฌ ์ž‘์—…์˜ ๋‚จ์€์‹œ๊ฐ„์œผ๋กœ ๋ณ€๊ฒฝ
            cnt = 1                 #    ์ž‘์—…์˜ ์ˆ˜ ์ดˆ๊ธฐํ™”
    
    answers.append(cnt)             # 3. ๋งˆ์ง€๋ง‰ ์ž‘์—…์ด ์ถ”๊ฐ€๋˜์ง€ ์•Š๊ณ  for๋ฌธ ์ข…๋ฃŒ๋˜์—ˆ์œผ๋ฏ€๋กœ ๋งˆ์ง€๋ง‰ ์ž‘์—… ์ˆ˜ ์ถ”๊ฐ€
        
    return answers

 

ํ’€์ด #1

  • ์ฃผ์–ด์ง„ ์ž‘์—…์˜ ์ˆ˜๋ฅผ n์œผ๋กœ ์ •์˜
  • ์•„๋ž˜์˜ ๊ณต์‹์„ ์ฐธ๊ณ ํ•˜์—ฌ ๊ฐ ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ ค๋ฉด ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์„ times ๋ฆฌ์ŠคํŠธ๋กœ ์ƒ์„ฑ
    • progresses(ํ˜„์žฌ ์™„๋ฃŒ๋œ ์ž‘์—…์˜ ์ •๋„) + (speeds(์ž‘์—…์˜ ์†๋„) * times(์ž‘์—… ์‹œ๊ฐ„) = 100%
  • cnt : ์™„๋ฃŒ๋œ ์ž‘์—…์˜ ์ˆ˜ / max_time : ์•ž๋ถ€๋ถ„ ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ ค๋ฉด ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„
  • ํ˜„์žฌ ์ž‘์—…์˜ ๋‚จ์€ ์‹œ๊ฐ„(times[i])๊ณผ ๊ธฐ์ค€์ด ๋˜๋Š” ์‹œ๊ฐ„(max_time)์„ ๋น„๊ต
    • times[i] ๊ฐ€ max_time๋ณด๋‹ค ์ ๋‹ค๋ฉด ํ˜„์žฌ์˜ ์ž‘์—…์ด ์™„๋ฃŒ๋œ ๊ฒƒ์ด๋ฏ€๋กœ cnt + 1
    • times[i]๊ฐ€ max_time๋ณด๋‹ค ๋งŽ๋‹ค๋ฉด ์ž‘์—…์ด ์™„๋ฃŒ๋˜๊ธฐ๊นŒ์ง€ ์‹œ๊ฐ„์ด ๋” ํ•„์š”ํ•œ ๊ฒƒ
      • ํ˜„์žฌ๊นŒ์ง€ ์™„๋ฃŒ๋œ ์ž‘์—…์˜ ์ˆ˜๋ฅผ answers์— ์ถ”๊ฐ€
      • ๊ธฐ์ค€์ด ๋˜๋Š” ์‹œ๊ฐ„(max_time)์„ ํ˜„์žฌ ์‹œ๊ฐ„์œผ๋กœ ๋ฐ”๊พธ๊ณ  cnt๋„ ์ดˆ๊ธฐํ™”

 

# 2
def solution(progresses, speeds):
    answers = []
    time = 0    # ์ž‘์—…์ด ํ•„์š”ํ•œ ์‹œ๊ฐ„
    cnt = 0     # ์™„๋ฃŒ๋œ ์ž‘์—…์˜ ์ˆ˜

    while len(progresses) > 0:
    	# 1. ์ง„ํ–‰ ์ƒํ™ฉ์ด 100 ์ด์ƒ์ด ๋œ ๊ฒฝ์šฐ
        if(progresses[0] + time * speeds[0]) >= 100:
            progresses.pop(0)   # ์ž‘์—…์ด ์™„๋ฃŒ๋œ ๊ฒƒ์ด๋ฏ€๋กœ progresses์—์„œ ํ•ด๋‹น ์ž‘์—… ์ œ๊ฑฐ
            speeds.pop(0)       # ์ž‘์—…๊ณผ ์†๋„์˜ ์ธ๋ฑ์Šค๋ฅผ ๋งž์ถ”์–ด์•ผ ํ•˜๋ฏ€๋กœ speeds์—์„œ๋„ ์ œ๊ฑฐ
            cnt += 1            # ์ž‘์—…์˜ ์ˆ˜ + 1
        # 2. ์ง„ํ–‰ ์ƒํ™ฉ์ด 100 ๋ฏธ๋งŒ์ธ ๊ฒฝ์šฐ
        else:
            if cnt > 0:                 # ์™„๋ฃŒ๋œ ์ž‘์—…์ด ์žˆ๋‹ค๋ฉด
                answers.append(cnt)     # ํ˜„์žฌ๊นŒ์ง€ ์™„๋ฃŒํ•œ ์ž‘์—…์„ answers์— ์ถ”๊ฐ€
                cnt = 0                 # ์ž‘์—…์˜ ์ˆ˜ ์ดˆ๊ธฐํ™”
            else:                       # ์™„๋ฃŒ๋œ ์ž‘์—…์ด ์—†๋‹ค๋ฉด
                time += 1               # ํ•„์š”ํ•œ ์‹œ๊ฐ„์„ ์ถ”๊ฐ€
    
    # 3. ๋งˆ์ง€๋ง‰ ์ž‘์—…์ด ์ถ”๊ฐ€๋˜์ง€ ์•Š๊ณ  while๋ฌธ ์ข…๋ฃŒ๋˜์—ˆ์œผ๋ฏ€๋กœ ๋งˆ์ง€๋ง‰ ์ž‘์—… ์ˆ˜ ์ถ”๊ฐ€
    answers.append(cnt)

    return answers

 

ํ’€์ด #2

  • ์ž‘์—…์ด ํ•„์š”ํ•œ ์‹œ๊ฐ„๊ณผ ์™„๋ฃŒ๋œ ์ž‘์—…์˜ ์ˆ˜๋ฅผ ๊ฐ๊ฐ time, cnt๋กœ ์ •์˜
  • ์ง„ํ–‰ ์ค‘์ธ ์ž‘์—…์ด ์žˆ๋Š” ๋ฆฌ์ŠคํŠธ(progresses)์˜ ๊ธธ์ด๊ฐ€ 0๋ณด๋‹ค ํฌ๋ฉด ์•„๋ž˜์˜ ๋‚ด์šฉ์„ ๋ฐ˜๋ณตํ•ด์„œ ์ง„ํ–‰
    • ์•„๋ž˜์˜ ๊ณต์‹์ด 100์ด์ƒ์ด๋ฉด ์ž‘์—…์ด ์™„๋ฃŒ๋œ ๊ฒƒ์ด๋ฏ€๋กœ progresses์™€ speed์—์„œ ํ•ด๋‹น ์ž‘์—… ์ œ๊ฑฐ
      • progresses(ํ˜„์žฌ ์™„๋ฃŒ๋œ ์ž‘์—…์˜ ์ •๋„) + (speeds(์ž‘์—…์˜ ์†๋„) * times(์ž‘์—… ์‹œ๊ฐ„) = 100%
      • ์™„๋ฃŒ๋œ ์ž‘์—…์˜ ์ˆ˜ cnt + 1
    • cnt๊ฐ€ 0๋ณด๋‹ค ํฌ๋‹ค๋ฉด ์™„๋ฃŒ๋œ ์ž‘์—…์ด ์žˆ๋Š” ๊ฒƒ์ด๋ฏ€๋กœ answers์— ์™„๋ฃŒ๋œ ์ž‘์—…์˜ ์ˆ˜ ์ถ”๊ฐ€ํ•˜๊ณ  ์ดˆ๊ธฐํ™”
    • ์™„๋ฃŒ๋œ ์ž‘์—…์ด ์—†๋‹ค๋ฉด ์‹œ๊ฐ„์ด ๋” ํ•„์š”ํ•œ ๊ฒƒ์ด๋ฏ€๋กœ ์‹œ๊ฐ„์„ ์ถ”๊ฐ€

 

์‰ฝ๊ฒŒ ํ’€๋ฆด ๊ฒƒ ๊ฐ™์•˜๋Š”๋ฐ ์€๊ทผํžˆ ํ’€๊ธฐ ์–ด๋ ค์šด ๋ฌธ์ œ์˜€๋‹ค.....๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์„ ๊ธฐ์ค€์œผ๋กœ ๋‘๊ณ  ๋น„๊ตํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์ง„ํ–‰์ƒํ™ฉ์„ ํŒ๋‹จํ•ด์„œ ๋น„๊ตํ•˜๋Š” 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์–ด์„œ ํŽธํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.
 

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

 

๋ฌธ์ œ

 

๋ฌธ์ œ ์„ค๋ช…

์ดˆ ๋‹จ์œ„๋กœ ๊ธฐ๋ก๋œ ์ฃผ์‹๊ฐ€๊ฒฉ์ด ๋‹ด๊ธด ๋ฐฐ์—ด prices๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ๊ฐ€๊ฒฉ์ด ๋–จ์–ด์ง€์ง€ ์•Š์€ ๊ธฐ๊ฐ„์€ ๋ช‡ ์ดˆ์ธ์ง€๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•˜์„ธ์š”.

 

 

์ œํ•œ ์‚ฌํ•ญ

  • prices์˜ ๊ฐ ๊ฐ€๊ฒฉ์€ 1 ์ด์ƒ 10,000 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • prices์˜ ๊ธธ์ด๋Š” 2 ์ด์ƒ 100,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.

 

์ž…์ถœ๋ ฅ ์˜ˆ

prices return
[1, 2, 3, 2, 3] [4, 3, 1, 1, 0]

 

 

์†Œ์Šค ์ฝ”๋“œ
# 1
def solution(prices):
    n = len(prices)
    answer = []

    for i in range(n):
        idx = 0
        for j in range(i+1,n):
            if prices[j] < prices[i]:   # ํ˜„์žฌ ์ฃผ์‹๊ฐ€๊ฒฉ๋ณด๋‹ค ๋–จ์–ด์ง„ ๊ฒฝ์šฐ
                idx = j                 # ๋–จ์–ด์ง„ ์‹œ์ ์„ idx์— ์ €์žฅํ•˜๊ณ  ์ข…๋ฃŒ
                break

        if idx==0:                      # ํ˜„์žฌ ์ฃผ์‹๊ฐ€๊ฒฉ์—์„œ ๋–จ์–ด์ง€์ง€ ์•Š์€ ๊ฒฝ์šฐ
            answer.append(n-i-1)        # ์ „์ฒด ๊ธธ์ด์—์„œ ํ˜„์žฌ ์ธ๋ฑ์Šค๋ฅผ ๋บ€ ๊ฐ’
        else:
            answer.append(idx-i)        # ๋–จ์–ด์ง„ ์‹œ์ ์—์„œ ํ˜„์žฌ ์ธ๋ฑ์Šค๋ฅผ ๋บธ ๊ฐ’

    return(answer)

 

ํ’€์ด # 1

  • ํ˜„์žฌ์˜ ์ฃผ์‹๊ฐ€๊ฒฉ์€ i๋ฒˆ์งธ์— ์žˆ๋Š” ๊ฐ’์ด๊ณ  ๋‚˜๋จธ์ง€ ์ฃผ์‹๊ฐ€๊ฒฉ์€ j๋ฒˆ์งธ์— ์žˆ๋Š” ๊ฐ’
  • ํ˜„์žฌ ์ฃผ์‹๊ฐ€๊ฒฉ๊ณผ ๋‚˜๋จธ์ง€ ์ฃผ์‹๊ฐ€๊ฒฉ์„ ๋น„๊ตํ•ด์„œ ๊ฐ€๊ฒฉ์ด ๋–จ์–ด์ง€๋Š” ์‹œ์ ์„ idx์— ์ €์žฅ
    • ๊ฐ€๊ฒฉ์ด ๋–จ์–ด์กŒ๋‹ค๋ฉด for๋ฌธ ๋น ์ ธ๋‚˜์˜ค๊ธฐ
  • idx๊ฐ€ 0์ด๋ฉด ๊ฐ€๊ฒฉ์ด ๋–จ์–ด์ง€์ง€ ์•Š์€ ๊ฒƒ์ด๋ฏ€๋กœ ์ „์ฒด๊ธธ์ด์—์„œ ํ˜„์žฌ ์ฃผ์‹๊ฐ€๊ฒฉ์˜ ์ธ๋ฑ์Šค ๋นผ๊ธฐ
  • idx๊ฐ€ 0์ด ์•„๋‹ˆ๋ฉด ๊ฐ€๊ฒฉ์ด ๋–จ์–ด์ง„ ์‹œ์ ์ด idx์ด๋ฏ€๋กœ ๋–จ์–ด์ง„ ์‹œ์ ์—์„œ ํ˜„์žฌ ์ธ๋ฑ์Šค ๋นผ๊ธฐ

 

# 2
def solution(prices):
    n = len(prices)
    answer = [0] * n     

    for i in range(n):
        for j in range(i+1, n):
            answer[i] += 1
            if prices[i] > prices[j]:   # ๊ฐ€๊ฒฉ์ด ๋–จ์–ด์ง„ ๊ฒฝ์šฐ
                break                   # for๋ฌธ ์ข…๋ฃŒ

    return answer

 

ํ’€์ด #2

  • ์ฃผ์‹๊ฐ€๊ฒฉ ๊ธธ์ด๋งŒํผ์˜ ๋ฆฌ์ŠคํŠธ ์ƒ์„ฑ
  • ํ˜„์žฌ ์ฃผ์‹๊ฐ€๊ฒฉ์€ i๋ฒˆ์งธ์— ์žˆ๋Š” ๊ฐ’์ด๊ณ  ๋‚˜๋จธ์ง€ ์ฃผ์‹๊ฐ€๊ฒฉ์€ j๋ฒˆ์งธ์— ์žˆ๋Š” ๊ฐ’
  • answer ๋ฆฌ์ŠคํŠธ์— 1์„ ๋”ํ•˜๊ณ  ๊ฐ€๊ฒฉ์ด ๋–จ์–ด์กŒ๋‹ค๋ฉด for๋ฌธ์„ ์ข…๋ฃŒ
    • ๊ฐ€๊ฒฉ์ด ๋–จ์–ด์ง€์ง€ ์•Š์•˜๋‹ค๋ฉด for๋ฌธ์œผ๋กœ ๋Œ๋ฉด์„œ +1 ์—ฐ์‚ฐ์„ ์ง„ํ–‰

 

์ฒ˜์Œ์—๋Š” ๋ฌธ์ œ ์ดํ•ด๊ฐ€ ์•ˆ๋์—ˆ๋Š”๋ฐ ๋‹จ์ˆœํ•˜๊ฒŒ ์ƒ๊ฐํ•ด๋ณด๋‹ˆ ํ˜„์žฌ ์ธ๋ฑ์Šค ๊ฐ’๊ณผ ๋‚˜๋จธ์ง€ ์ธ๋ฑ์Šค ๊ฐ’์„ ๋น„๊ตํ•ด์„œ ๊ฐ€๊ฒฉ์ด ๋–จ์–ด์ง€๊ธฐ ์ „๊นŒ์ง€ ์‹œ๊ฐ„์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์˜€๋‹ค. ์ •ํ™•๋„์™€ ํšจ์œจ์„ฑ์„ ๋ชจ๋‘ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฌธ์ œ๋ผ์„œ ์–ด๋ ต๊ฒŒ ์ƒ๊ฐํ–ˆ์—ˆ๋Š”๋ฐ ํ•„์š”์—†๋Š” ์—ฐ์‚ฐ์„ ์ง€์šฐ๊ณ  ์ฃผ์‹๊ฐ€๊ฒฉ์ด ๋–จ์–ด์ง€๋Š” ์ˆœ๊ฐ„๊นŒ์ง€๋งŒ ์—ฐ์‚ฐ์„ ์ง„ํ–‰ํ•˜๋‹ˆ ์˜์™ธ๋กœ ์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

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

 

๋ฌธ์ œ

 

๋ฌธ์ œ ์„ค๋ช…

๋‹ค์Œ ๊ทœ์น™์„ ์ง€ํ‚ค๋Š” ๋ฌธ์ž์—ด์„ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ด๋ผ๊ณ  ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

 

  • (), [], {} ๋Š” ๋ชจ๋‘ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
  • ๋งŒ์•ฝ A๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ด๋ผ๋ฉด, (A), [A], {A} ๋„ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
    ์˜ˆ๋ฅผ ๋“ค์–ด, [] ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ด๋ฏ€๋กœ, ([]) ๋„ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
  • ๋งŒ์•ฝ A, B๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ด๋ผ๋ฉด, AB ๋„ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
    ์˜ˆ๋ฅผ ๋“ค์–ด, {} ์™€ ([]) ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ด๋ฏ€๋กœ, {}([]) ๋„ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.

 

๋Œ€๊ด„ํ˜ธ, ์ค‘๊ด„ํ˜ธ, ๊ทธ๋ฆฌ๊ณ  ์†Œ๊ด„ํ˜ธ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์ž์—ด s๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ์ด s๋ฅผ ์™ผ์ชฝ์œผ๋กœ x (0 ≤ x < (s์˜ ๊ธธ์ด)) ์นธ๋งŒํผ ํšŒ์ „์‹œ์ผฐ์„ ๋•Œ s๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ด ๋˜๊ฒŒ ํ•˜๋Š” x์˜ ๊ฐœ์ˆ˜๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

 

 

์ œํ•œ ์‚ฌํ•ญ

  • s์˜ ๊ธธ์ด๋Š” 1์ด์ƒ 1,000์ดํ•˜์ž…๋‹ˆ๋‹ค.

 

์ž…์ถœ๋ ฅ ์˜ˆ

s result
"[](){}" 3
"}]()[{" 2
"[)(]" 0
"}}}" 0

 

 

์†Œ์Šค ์ฝ”๋“œ
def solution(s):
    answer = 0
    n = len(s)

    for i in range(n):
        stack = []  
        for j in range(n):
            # ๋ฌธ์ž์—ด ํšŒ์ „
            c = s[(i+j)%n]

            # ์—ด๋ฆฐ๊ด„ํ˜ธ์˜ ๊ฒฝ์šฐ
            if c=="(" or c=="[" or c=="{":
                stack.append(c)
            # ๋‹ซํžŒ๊ด„ํ˜ธ์˜ ๊ฒฝ์šฐ
            else:
                # ์Šคํƒ์ด ๋น„์–ด์žˆ๋‹ค๋ฉด 0์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์ข…๋ฃŒ
                if len(stack)==0:
                    stack.append(0)
                    break
                # ์Šคํƒ์˜ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์„ ํ™•์ธํ•˜๊ณ  ์ง์ด ๋งž๋‹ค๋ฉด ์ œ๊ฑฐ
                elif c==")" and stack[-1]=="(":     
                    stack.pop()
                elif c=="]" and stack[-1]=="[":
                    stack.pop()
                elif c=="}" and stack[-1]=="{":
                    stack.pop()
                # ์ง์ด ๋งž์ง€ ์•Š์€ ๊ฒฝ์šฐ 0์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์ข…๋ฃŒ
                else:
                    stack.append(0)
                    break
        
        # ์ค‘๊ฐ„์— ์ข…๋ฃŒ๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด ์Šคํƒ์€ ๋น„์–ด์žˆ์œผ๋ฏ€๋กœ +1
        if not stack:
            answer += 1

    return answer

 

ํ’€์ด

  • for๋ฌธ์— ๋”ฐ๋ผ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์„ ํšŒ์ „
  • ๋ฌธ์ž์—ด์ด ์—ด๋ฆฐ๊ด„ํ˜ธ์ธ ๊ฒฝ์šฐ ์Šคํƒ์— ๊ด„ํ˜ธ๋ฅผ ์ถ”๊ฐ€
  • ๋ฌธ์ž์—ด์ด ๋‹ซํžŒ๊ด„ํ˜ธ์ธ ๊ฒฝ์šฐ
    • ๋‹ซํžŒ๊ด„ํ˜ธ์ด๋ฉด์„œ ์Šคํƒ์ด ๋น„์–ด์žˆ๋‹ค๋ฉด ์•ž์— ์—ด๋ฆฐ๊ด„ํ˜ธ๊ฐ€ ์—†๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ์Šคํƒ์— 0์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์ข…๋ฃŒ
    • ๋‹ซํžŒ๊ด„ํ˜ธ์™€ ์Šคํƒ์— ๋งˆ์ง€๋ง‰ ๋ฌธ์ž์™€ ์ง ๋งž์ถ”๊ธฐ (์ง์ด ๋งž๋‹ค๋ฉด ์ œ๊ฑฐ)
    • ์ง์ด ๋งž์ง€ ์•Š๋‹ค๋ฉด ์Šคํƒ์— 0์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์ข…๋ฃŒ
  • ์ค‘๊ฐ„์— ์ข…๋ฃŒ๋˜์—ˆ๋‹ค๋ฉด ์Šคํƒ์— 0์ด ์žˆ์„ ๊ฒƒ์ด๊ณ  ์•„๋‹ˆ๋ผ๋ฉด ์Šคํƒ์ด ๋น„์–ด์žˆ์„ ๊ฒƒ์ด๋ฏ€๋กœ answer + 1

 

๋ฌธ์ž์—ด์„ ํšŒ์ „ํ•˜๋ฉด์„œ ์ง์„ ๋งž์ถฐ์•ผํ•˜๋Š” ๋ฌธ์ œ์˜€๋‹ค. ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋‚˜๋ˆ„์–ด์„œ ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์ด ์ข€ ์–ด๋ ค์› ๋‹ค... ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ฑ…์—์„œ ์Šคํƒ์˜ ์˜ˆ์‹œ ๋ฌธ์ œ๋กœ ๋‚˜์™€์žˆ์–ด์„œ ์Šคํƒ์œผ๋กœ ํ’€์–ด์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์—ˆ๋Š”๋ฐ ๋ฌธ์ œ๋งŒ ๋ดค์„ ๋•Œ๋Š” ์Šคํƒ์„ ๋– ์˜ฌ๋ฆฌ๊ธฐ ํž˜๋“ค์—ˆ์„ ๊ฒƒ ๊ฐ™๋‹ค.

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

(์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ˆ˜์—… ๋ฌธ์ œ๋Š” ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ๋ฌด์—‡์ธ์ง€ ํ™•์ธํ•˜๊ณ  ํ’€์–ด๋ณด๊ธฐ)

 

๋ฌธ์ œ

 

์˜ค๋Š˜๋„ ์„œ์ค€์ด๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ˆ˜ํ–‰์‹œ๊ฐ„ ์ˆ˜์—… ์กฐ๊ต๋ฅผ ํ•˜๊ณ  ์žˆ๋‹ค. ์•„๋น ๊ฐ€ ์ˆ˜์—…ํ•œ ๋‚ด์šฉ์„ ํ•™์ƒ๋“ค์ด ์ž˜ ์ดํ•ดํ–ˆ๋Š”์ง€ ๋ฌธ์ œ๋ฅผ ํ†ตํ•ด์„œ ํ™•์ธํ•ด๋ณด์ž.

์ž…๋ ฅ์˜ ํฌ๊ธฐ n์ด ์ฃผ์–ด์ง€๋ฉด MenOfPassion ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ˆ˜ํ–‰ ์‹œ๊ฐ„์„ ์˜ˆ์ œ ์ถœ๋ ฅ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ถœ๋ ฅํ•ด๋ณด์ž.

MenOfPassion ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

MenOfPassion(A[], n) {
    sum <- 0;
    for i <- 1 to n - 1
        for j <- i + 1 to n
            sum <- sum + A[i] × A[j]; # ์ฝ”๋“œ1
    return sum;
}

 

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์ž…๋ ฅ์˜ ํฌ๊ธฐ n(1 ≤ n ≤ 500,000)์ด ์ฃผ์–ด์ง„๋‹ค.

 

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ์ฝ”๋“œ1 ์˜ ์ˆ˜ํ–‰ ํšŸ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

๋‘˜์งธ ์ค„์— ์ฝ”๋“œ1์˜ ์ˆ˜ํ–‰ ํšŸ์ˆ˜๋ฅผ ๋‹คํ•ญ์‹์œผ๋กœ ๋‚˜ํƒ€๋‚ด์—ˆ์„ ๋•Œ, ์ตœ๊ณ ์ฐจํ•ญ์˜ ์ฐจ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋‹จ, ๋‹คํ•ญ์‹์œผ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์—†๊ฑฐ๋‚˜ ์ตœ๊ณ ์ฐจํ•ญ์˜ ์ฐจ์ˆ˜๊ฐ€ 3๋ณด๋‹ค ํฌ๋ฉด 4๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

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

 

์ฝ”๋“œ1 ์ด 21ํšŒ ์ˆ˜ํ–‰๋˜๊ณ  ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ˆ˜ํ–‰ ์‹œ๊ฐ„์ด n²์— ๋น„๋ก€ํ•œ๋‹ค.

 

์†Œ์Šค ์ฝ”๋“œ
# ๋ฌธ์ œ ์‹œ๊ฐํ™”
n = int(input())
sum = 0
count = 0

for i in range(1,n):
    for j in range(i+1,n+1):
        sum += (i * j)    # ์ฝ”๋“œ 1
        count += 1
        print("{:^4}+({}*{})={:^4} ({:^2}๋ฒˆ ์ˆ˜ํ–‰)\t".format(sum-(i*j),i,j,sum,count), end="   ")
    print()
# ์ •๋‹ต ์ฝ”๋“œ
n = int(input())

print(int(n*(n-1)/2))
print(2)

 

ํ’€์ด

๋ฌธ์ œ ์‹œ๊ฐํ™”

  • ์ฒซ ๋ฒˆ์งธ for๋ฌธ์€ ์ด n๋ฒˆ ์ˆ˜ํ–‰
  • ๋‘ ๋ฒˆ์งธ for๋ฌธ์€ n-i๋ฒˆ ์ˆ˜ํ–‰
    • i=1์ธ ๊ฒฝ์šฐ, n-1๋ฒˆ ์ˆ˜ํ–‰
    • i=2์ธ ๊ฒฝ์šฐ, n-2๋ฒˆ ์ˆ˜ํ–‰
  • ์ˆ˜ํ–‰ ํšŸ์ˆ˜ ๊ณต์‹์„ ์ฒซ ๋ฒˆ์งธ ์ค„์— ์ถœ๋ ฅ
    • ์ฒซ ๋ฒˆ์งธ for๋ฌธ์ด ์ˆ˜ํ–‰๋œ ํšŸ์ˆ˜ n๊ณผ ๋‘ ๋ฒˆ์งธ for๋ฌธ์ด ์ˆ˜ํ–‰๋œ ํšŸ์ˆ˜ n-i๋ฅผ ๊ณฑํ•œ ๊ฐ’ (์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด 2๋กœ ๋‚˜๋ˆ„๊ธฐ)
  • ์œ„์˜ ๊ณต์‹์—์„œ ์ตœ๊ณ ์ฐจํ•ญ์˜ ์ฐจ์ˆ˜์ธ 2๋ฅผ ๋‘ ๋ฒˆ์งธ ์ค„์— ์ถœ๋ ฅ
    • ์‹œ๊ฐ„ ๋ณต์žก๋„(=์ฝ”๋“œ1์˜ ์ˆ˜ํ–‰ํšŸ์ˆ˜)๋Š” n*(n-1)/2์ด๋ฏ€๋กœ ์ตœ๊ณ ์ฐจํ•ญ์˜ ์ฐจ์ˆ˜๋Š” 2

 

์ด์ „ ํฌ์ŠคํŒ…๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์‹œ๊ฐ„ ๋ณต์žก๋„์— ๋Œ€ํ•ด ์•Œ๋ฉด ์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์˜€๋‹ค. ์ต์ˆ™ํ•œ ์–ธ์–ด๋กœ for๋ฌธ์ด ์ด ๋ช‡ ๋ฒˆ ์ˆ˜ํ–‰๋˜๋Š”์ง€๋ฅผ ์‹œ๊ฐํ™”ํ•ด๋ณด๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.

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

(์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ˆ˜์—… ๋ฌธ์ œ๋Š” ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ๋ฌด์—‡์ธ์ง€ ํ™•์ธํ•˜๊ณ  ํ’€์–ด๋ณด๊ธฐ)

 

๋ฌธ์ œ

 

์˜ค๋Š˜๋„ ์„œ์ค€์ด๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ˆ˜ํ–‰์‹œ๊ฐ„ ์ˆ˜์—… ์กฐ๊ต๋ฅผ ํ•˜๊ณ  ์žˆ๋‹ค. ์•„๋น ๊ฐ€ ์ˆ˜์—…ํ•œ ๋‚ด์šฉ์„ ํ•™์ƒ๋“ค์ด ์ž˜ ์ดํ•ดํ–ˆ๋Š”์ง€ ๋ฌธ์ œ๋ฅผ ํ†ตํ•ด์„œ ํ™•์ธํ•ด๋ณด์ž.

์ž…๋ ฅ์˜ ํฌ๊ธฐ n์ด ์ฃผ์–ด์ง€๋ฉด MenOfPassion ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ˆ˜ํ–‰ ์‹œ๊ฐ„์„ ์˜ˆ์ œ ์ถœ๋ ฅ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ถœ๋ ฅํ•ด๋ณด์ž.

MenOfPassion ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

MenOfPassion(A[], n) {
    sum <- 0;
    for i <- 1 to n
        sum <- sum + A[i]; # ์ฝ”๋“œ1
    return sum;
}

 

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์ž…๋ ฅ์˜ ํฌ๊ธฐ n(1 ≤ n ≤ 500,000)์ด ์ฃผ์–ด์ง„๋‹ค.

 

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ์ฝ”๋“œ1 ์˜ ์ˆ˜ํ–‰ ํšŸ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

๋‘˜์งธ ์ค„์— ์ฝ”๋“œ1์˜ ์ˆ˜ํ–‰ ํšŸ์ˆ˜๋ฅผ ๋‹คํ•ญ์‹์œผ๋กœ ๋‚˜ํƒ€๋‚ด์—ˆ์„ ๋•Œ, ์ตœ๊ณ ์ฐจํ•ญ์˜ ์ฐจ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋‹จ, ๋‹คํ•ญ์‹์œผ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์—†๊ฑฐ๋‚˜ ์ตœ๊ณ ์ฐจํ•ญ์˜ ์ฐจ์ˆ˜๊ฐ€ 3๋ณด๋‹ค ํฌ๋ฉด 4๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

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

 

→ ์ฝ”๋“œ 1์ด 7ํšŒ ์ˆ˜ํ–‰๋˜๊ณ  ์ˆ˜ํ–‰ ์‹œ๊ฐ„์ด n์— ๋น„๋ก€ํ•œ๋‹ค.

 

์†Œ์Šค ์ฝ”๋“œ
# ๋ฌธ์ œ ์‹œ๊ฐํ™”
n = int(input())
sum = 0

for i in range(1,n+1):
    sum += i    # ์ฝ”๋“œ 1
    print(sum-i, "+", i, "=", sum, "\t", i,"๋ฒˆ ์ˆ˜ํ–‰")
# ์ •๋‹ต ์ฝ”๋“œ
n = int(input())

print(n)
print(1)

 

ํ’€์ด

๋ฌธ์ œ ์‹œ๊ฐํ™”

  • ๋ฌธ์ œ์—์„œ ์ฝ”๋“œ1์€ ์ด n๋ฒˆ ์ˆ˜ํ–‰
  • ์ž…๋ ฅ์˜ ํฌ๊ธฐ n์„ ์ฒซ ๋ฒˆ์งธ ์ค„์— ์ถœ๋ ฅ
  • ์ตœ๊ณ ์ฐจํ•ญ์˜ ์ฐจ์ˆ˜์ธ 1์„ ๋‘ ๋ฒˆ์งธ ์ค„์— ์ถœ๋ ฅ
    • ์‹œ๊ฐ„ ๋ณต์žก๋„(=์ฝ”๋“œ1์˜ ์ˆ˜ํ–‰ํšŸ์ˆ˜)๋Š” n์ด๋ฏ€๋กœ ์ตœ๊ณ ์ฐจํ•ญ์˜ ์ฐจ์ˆ˜๋Š” 1

 

์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ๋ญ”์ง€ ๋ชฐ๋ž์„ ๋•Œ๋Š” ๋ฌธ์ œ ์ดํ•ด๊ฐ€ ์•„์˜ˆ ์•ˆ๋๋Š”๋ฐ ๊ฐœ๋…์„ ์•Œ๊ณ  ๋‚˜์„œ ํ‘ธ๋‹ˆ๊นŒ ์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์ผ๋‹จ ๋ฌธ์ œ์˜ ๋‚ด์šฉ์„ ์‹œ๊ฐํ™”ํ•ด์„œ ์ฝ”๋“œ๊ฐ€ ์ด ๋ช‡ ๋ฒˆ ์ˆ˜ํ–‰๋˜๋Š”์ง€ ์•Œ๋ฉด ์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ๋‹ค!!!

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

 

๋ฌธ์ œ

 

B์ง„๋ฒ• ์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค. ์ด ์ˆ˜๋ฅผ 10์ง„๋ฒ•์œผ๋กœ ๋ฐ”๊ฟ” ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

10์ง„๋ฒ•์„ ๋„˜์–ด๊ฐ€๋Š” ์ง„๋ฒ•์€ ์ˆซ์ž๋กœ ํ‘œ์‹œํ•  ์ˆ˜ ์—†๋Š” ์ž๋ฆฌ๊ฐ€ ์žˆ๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์•ŒํŒŒ๋ฒณ ๋Œ€๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35

 

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— N๊ณผ B๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (2 ≤ B ≤ 36)

B์ง„๋ฒ• ์ˆ˜ N์„ 10์ง„๋ฒ•์œผ๋กœ ๋ฐ”๊พธ๋ฉด, ํ•ญ์ƒ 10์–ต๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค.

 

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— B์ง„๋ฒ• ์ˆ˜ N์„ 10์ง„๋ฒ•์œผ๋กœ ์ถœ๋ ฅํ•œ๋‹ค.

 

์˜ˆ์ œ ์ž…๋ ฅ1 ์˜ˆ์ œ ์ถœ๋ ฅ1
ZZZZZ 36 60466175

 

 

์†Œ์Šค ์ฝ”๋“œ
# 1
N,B = input().split()

idx = len(N) - 1
decimal_num = 0

for num in N:
    add_num = 0
    if num.isdigit():
        add_num = int(num) * (int(B)**idx)
    else:
        add_num = (ord(num)-55) * (int(B)**idx)
    decimal_num += add_num
    idx -= 1

print(decimal_num)

 

ํ’€์ด # 1

  • ์ˆซ์ž๋ฅผ N, ์ง„๋ฒ•์„ B์— ์ €์žฅ
  • ์ˆซ์ž์˜ ๊ธธ์ด์—์„œ 1์„ ๋บ€ ๊ฐ’์„ idx์— ์ €์žฅ (์ง„๋ฒ• ๊ณ„์‚ฐ ์‹œ ์‚ฌ์šฉ)
  • N์„ ํ•œ ์ž๋ฆฌ์”ฉ ๋Œ๋ฉด์„œ ์ˆซ์ž์ธ์ง€ ๋ฌธ์ž์ธ์ง€ ํ™•์ธ
    • ์ˆซ์ž์ธ ๊ฒฝ์šฐ ํ•ด๋‹น ์ˆซ์ž์— idx ์ œ๊ณฑ์„ add_num์œผ๋กœ ์‚ฌ์šฉ
    • ๋ฌธ์ž์ธ ๊ฒฝ์šฐ ํ•ด๋‹น ๋ฌธ์ž์˜ ์•„์Šคํ‚ค ์ฝ”๋“œ ๋ฒˆํ˜ธ์—์„œ 55๋ฅผ ๋บ€ ์ˆ˜์— idx ์ œ๊ณฑ์„ add_num์œผ๋กœ ์‚ฌ์šฉ
  • decimal_num์— ์œ„์—์„œ ๊ตฌํ•œ ์ˆ˜๋ฅผ ๋”ํ•˜๊ณ  ์ž๋ฆฟ์ˆ˜ idx์—๋Š” 1์„ ๋บด๊ธฐ

 

# 2
N,B = input().split()

N = N[::-1]
numbers = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
decimal_num = 0

for idx,num in enumerate(N):
    decimal_num += (int(B)**idx)*(numbers.index(num))

print(decimal_num)

 

ํ’€์ด # 2

  • ์ˆซ์ž๋ฅผ N, ์ง„๋ฒ•์„ B์— ์ €์žฅ
  • ์ˆซ์ž N์„ ๊ฑฐ๊พธ๋กœ ๋งŒ๋“ค๊ธฐ (์ง„๋ฒ• ๊ณ„์‚ฐ์‹œ์— ์•ž์—์„œ๋ถ€ํ„ฐ ์ž๋ฆฟ๊ฐ’์„ ๊ณฑํ•˜๊ธฐ ์œ„ํ•œ ๊ณผ์ •)
  • ์ˆซ์ž์™€ ๋ฌธ์ž๋ฅผ numbers์— ์ €์žฅ
  • N์„ ํ•œ ์ž๋ฆฌ์”ฉ ๋Œ๋ฉด์„œ ๊ฐ’ ๋”ํ•˜๊ธฐ
    • (B์ง„๋ฒ•์˜ idx ์ œ๊ณฑ) x (numbers์—์„œ num์˜ ์ธ๋ฑ์Šค ๋ฒˆํ˜ธ)

 

์•„์Šคํ‚ค์ฝ”๋“œ ๋ฒˆํ˜ธ๋ฅผ ์ด์šฉํ•œ ์ฒซ ๋ฒˆ์งธ ํ’€์ด๋กœ ํ’€์—ˆ๋Š”๋ฐ ๋‹ค๋ฅธ ํ’€์ด๋ฅผ ์ฐพ์•„๋ณด๋‹ˆ ๋Œ€๋ถ€๋ถ„ ๋‘ ๋ฒˆ์งธ ํ’€์ด๋กœ ํ‘ผ ๊ฒƒ ๊ฐ™๋‹ค. ํ™•์ธํ•ด๋ณด๋‹ˆ ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ์™€ ์‹œ๊ฐ„์€ ๋˜‘๊ฐ™์•„์„œ ํŽธํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ํ’€๋ฉด ๋  ๋“ฏ ํ•˜๋‹ค.

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

 

๋ฌธ์ œ

 

๊ฐ€๋กœ, ์„ธ๋กœ์˜ ํฌ๊ธฐ๊ฐ€ ๊ฐ๊ฐ 100์ธ ์ •์‚ฌ๊ฐํ˜• ๋ชจ์–‘์˜ ํฐ์ƒ‰ ๋„ํ™”์ง€๊ฐ€ ์žˆ๋‹ค. ์ด ๋„ํ™”์ง€ ์œ„์— ๊ฐ€๋กœ, ์„ธ๋กœ์˜ ํฌ๊ธฐ๊ฐ€ ๊ฐ๊ฐ 10์ธ ์ •์‚ฌ๊ฐํ˜• ๋ชจ์–‘์˜ ๊ฒ€์€์ƒ‰ ์ƒ‰์ข…์ด๋ฅผ ์ƒ‰์ข…์ด์˜ ๋ณ€๊ณผ ๋„ํ™”์ง€์˜ ๋ณ€์ด ํ‰ํ–‰ํ•˜๋„๋ก ๋ถ™์ธ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์œผ๋กœ ์ƒ‰์ข…์ด๋ฅผ ํ•œ ์žฅ ๋˜๋Š” ์—ฌ๋Ÿฌ ์žฅ ๋ถ™์ธ ํ›„ ์ƒ‰์ข…์ด๊ฐ€ ๋ถ™์€ ๊ฒ€์€ ์˜์—ญ์˜ ๋„“์ด๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด ํฐ์ƒ‰ ๋„ํ™”์ง€ ์œ„์— ์„ธ ์žฅ์˜ ๊ฒ€์€์ƒ‰ ์ƒ‰์ข…์ด๋ฅผ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์€ ๋ชจ์–‘์œผ๋กœ ๋ถ™์˜€๋‹ค๋ฉด ๊ฒ€์€์ƒ‰ ์˜์—ญ์˜ ๋„“์ด๋Š” 260์ด ๋œ๋‹ค.

 

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์ƒ‰์ข…์ด์˜ ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ด์–ด ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ์ƒ‰์ข…์ด๋ฅผ ๋ถ™์ธ ์œ„์น˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ƒ‰์ข…์ด๋ฅผ ๋ถ™์ธ ์œ„์น˜๋Š” ๋‘ ๊ฐœ์˜ ์ž์—ฐ์ˆ˜๋กœ ์ฃผ์–ด์ง€๋Š”๋ฐ ์ฒซ ๋ฒˆ์งธ ์ž์—ฐ์ˆ˜๋Š” ์ƒ‰์ข…์ด์˜ ์™ผ์ชฝ ๋ณ€๊ณผ ๋„ํ™”์ง€์˜ ์™ผ์ชฝ ๋ณ€ ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ์ด๊ณ , ๋‘ ๋ฒˆ์งธ ์ž์—ฐ์ˆ˜๋Š” ์ƒ‰์ข…์ด์˜ ์•„๋ž˜์ชฝ ๋ณ€๊ณผ ๋„ํ™”์ง€์˜ ์•„๋ž˜์ชฝ ๋ณ€ ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ์ด๋‹ค. ์ƒ‰์ข…์ด์˜ ์ˆ˜๋Š” 100 ์ดํ•˜์ด๋ฉฐ, ์ƒ‰์ข…์ด๊ฐ€ ๋„ํ™”์ง€ ๋ฐ–์œผ๋กœ ๋‚˜๊ฐ€๋Š” ๊ฒฝ์šฐ๋Š” ์—†๋‹ค.

 

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ์ƒ‰์ข…์ด๊ฐ€ ๋ถ™์€ ๊ฒ€์€ ์˜์—ญ์˜ ๋„“์ด๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

์˜ˆ์ œ ์ž…๋ ฅ1 ์˜ˆ์ œ ์ถœ๋ ฅ1
3
3 7
15 7
5 2
260

 

 

์†Œ์Šค ์ฝ”๋“œ
# ๋„ํ™”์ง€
paper = [[0 for col in range(100)] for row in range(100)]

n = int(input())

for _ in range(n):
    x,y = map(int, input().split())

    temp_x = x
    temp_y = y

    # ์ƒ‰์น ํ•˜๊ธฐ
    while temp_x < x + 10:
        for idx in range(10):
            paper[temp_x][temp_y+idx] += 1
        temp_x += 1

# ๋„ํ™”์ง€๋ฅผ ๋Œ๋ฉด์„œ ์ƒ‰์น ๋˜์–ด ์žˆ์œผ๋ฉด cnt+1
cnt = 0
for row in paper:
    for col in row:
        if col > 0:
            cnt += 1

print(cnt)

 

ํ’€์ด

  • 100 x 100 ํฌ๊ธฐ ๋„ํ™”์ง€ 2์ฐจ์› ๋ฆฌ์ŠคํŠธ๋กœ ์ •์˜
  • ์ƒ‰์ข…์ด์˜ ์ˆ˜๋ฅผ n์— ์ €์žฅ
  • ์ƒ‰์ข…์ด์˜ ์ˆ˜๋งŒํผ ์ƒ‰์น ํ•˜๋Š” ๊ณผ์ •์„ ๋ฐ˜๋ณต
    • ์ƒ‰์ข…์ด์˜ ํ–‰ ๋ฒˆํ˜ธ๋ฅผ x, ์—ด ๋ฒˆํ˜ธ๋ฅผ y์— ์ €์žฅ
    • ํ–‰ ๋ฒˆํ˜ธ์™€ ์—ด ๋ฒˆํ˜ธ๋ฅผ ์ž„์‹œ๋กœ temp_x, temp_y์— ์ €์žฅ
    • ์ƒ‰์ข…์ด์˜ ๊ธธ์ด๊ฐ€ ๊ฐ€๋กœ์„ธ๋กœ 10์ด๋ฏ€๋กœ ํ–‰์—ด๋ฒˆํ˜ธ์˜ +10๋งŒํผ์„ ์ƒ‰์น 
  • ๋„ํ™”์ง€๋ฅผ ๋Œ๋ฉด์„œ ๊ฐ’์ด 1๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ์— cnt+1

 

์ฒ˜์Œ์— ๋„ํ™”์ง€๋ฅผ ์ •์˜ํ•  ๋•Œ [[0]*100]*100์œผ๋กœ ์ •์˜ํ–ˆ์—ˆ๋Š”๋ฐ ์›ํ•˜๋Š” ๋Œ€๋กœ ๋‚˜์˜ค์ง€ ์•Š์•„์„œ ์ฐพ์•„๋ณด๋‹ˆ ์—ฐ์‚ฐ์ž *๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐฐ์—ด์„ ์„ ์–ธํ•˜๋ฉด ๋‹จ์ˆœํ•˜๊ฒŒ ์š”์†Œ๋งŒ ๋ณต์‚ฌํ•˜๋Š” ์–•์€ ๋ณต์‚ฌ(shallow copy)๊ฐ€ ์ผ์–ด๋‚œ๋‹ค๊ณ  ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ๋ฐ”๋ผ๋ณด๋Š” ๊ฐ์ฒด๋Š” ๋™์ผํ•˜๊ณ  ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ๊ฒฝ์šฐ์— ๋‹ค๋ฅธ ์›์†Œ์˜ ๊ฐ’๋„ ๋ณ€ํ•˜๋Š” ํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜๋‹ˆ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค๊ณ  ํ•œ๋‹ค. ์„ ์–ธ ๋ฐฉ์‹์„ ๋ณ€๊ฒฝํ•˜๋‹ˆ๊นŒ ๋‹คํ–‰ํžˆ ๋ฌธ์ œ์—†์ด ์ •๋‹ต์„ ๊ตฌํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค!!

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

 

๋ฌธ์ œ

 

๋ฌธ์ œ ์„ค๋ช…

์„ ๋ฌผ์„ ์ง์ ‘ ์ „ํ•˜๊ธฐ ํž˜๋“ค ๋•Œ ์นด์นด์˜คํ†ก ์„ ๋ฌผํ•˜๊ธฐ ๊ธฐ๋Šฅ์„ ์ด์šฉํ•ด ์ถ•ํ•˜ ์„ ๋ฌผ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์˜ ์นœ๊ตฌ๋“ค์ด ์ด๋ฒˆ ๋‹ฌ๊นŒ์ง€ ์„ ๋ฌผ์„ ์ฃผ๊ณ ๋ฐ›์€ ๊ธฐ๋ก์„ ๋ฐ”ํƒ•์œผ๋กœ ๋‹ค์Œ ๋‹ฌ์— ๋ˆ„๊ฐ€ ์„ ๋ฌผ์„ ๋งŽ์ด ๋ฐ›์„์ง€ ์˜ˆ์ธกํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๋‘ ์‚ฌ๋žŒ์ด ์„ ๋ฌผ์„ ์ฃผ๊ณ ๋ฐ›์€ ๊ธฐ๋ก์ด ์žˆ๋‹ค๋ฉด, ์ด๋ฒˆ ๋‹ฌ๊นŒ์ง€ ๋‘ ์‚ฌ๋žŒ ์‚ฌ์ด์— ๋” ๋งŽ์€ ์„ ๋ฌผ์„ ์ค€ ์‚ฌ๋žŒ์ด ๋‹ค์Œ ๋‹ฌ์— ์„ ๋ฌผ์„ ํ•˜๋‚˜ ๋ฐ›์Šต๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด A๊ฐ€ B์—๊ฒŒ ์„ ๋ฌผ์„ 5๋ฒˆ ์คฌ๊ณ , B๊ฐ€ A์—๊ฒŒ ์„ ๋ฌผ์„ 3๋ฒˆ ์คฌ๋‹ค๋ฉด ๋‹ค์Œ ๋‹ฌ์—” A๊ฐ€ B์—๊ฒŒ ์„ ๋ฌผ์„ ํ•˜๋‚˜ ๋ฐ›์Šต๋‹ˆ๋‹ค.
๋‘ ์‚ฌ๋žŒ์ด ์„ ๋ฌผ์„ ์ฃผ๊ณ ๋ฐ›์€ ๊ธฐ๋ก์ด ํ•˜๋‚˜๋„ ์—†๊ฑฐ๋‚˜ ์ฃผ๊ณ ๋ฐ›์€ ์ˆ˜๊ฐ€ ๊ฐ™๋‹ค๋ฉด, ์„ ๋ฌผ ์ง€์ˆ˜๊ฐ€ ๋” ํฐ ์‚ฌ๋žŒ์ด ์„ ๋ฌผ ์ง€์ˆ˜๊ฐ€ ๋” ์ž‘์€ ์‚ฌ๋žŒ์—๊ฒŒ ์„ ๋ฌผ์„ ํ•˜๋‚˜ ๋ฐ›์Šต๋‹ˆ๋‹ค.
์„ ๋ฌผ ์ง€์ˆ˜๋Š” ์ด๋ฒˆ ๋‹ฌ๊นŒ์ง€ ์ž์‹ ์ด ์นœ๊ตฌ๋“ค์—๊ฒŒ ์ค€ ์„ ๋ฌผ์˜ ์ˆ˜์—์„œ ๋ฐ›์€ ์„ ๋ฌผ์˜ ์ˆ˜๋ฅผ ๋บ€ ๊ฐ’์ž…๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด A๊ฐ€ ์นœ๊ตฌ๋“ค์—๊ฒŒ ์ค€ ์„ ๋ฌผ์ด 3๊ฐœ๊ณ  ๋ฐ›์€ ์„ ๋ฌผ์ด 10๊ฐœ๋ผ๋ฉด A์˜ ์„ ๋ฌผ ์ง€์ˆ˜๋Š” -7์ž…๋‹ˆ๋‹ค. B๊ฐ€ ์นœ๊ตฌ๋“ค์—๊ฒŒ ์ค€ ์„ ๋ฌผ์ด 3๊ฐœ๊ณ  ๋ฐ›์€ ์„ ๋ฌผ์ด 2๊ฐœ๋ผ๋ฉด B์˜ ์„ ๋ฌผ ์ง€์ˆ˜๋Š” 1์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ A์™€ B๊ฐ€ ์„ ๋ฌผ์„ ์ฃผ๊ณ ๋ฐ›์€ ์ ์ด ์—†๊ฑฐ๋‚˜ ์ •ํ™•ํžˆ ๊ฐ™์€ ์ˆ˜๋กœ ์„ ๋ฌผ์„ ์ฃผ๊ณ ๋ฐ›์•˜๋‹ค๋ฉด, ๋‹ค์Œ ๋‹ฌ์—” B๊ฐ€ A์—๊ฒŒ ์„ ๋ฌผ์„ ํ•˜๋‚˜ ๋ฐ›์Šต๋‹ˆ๋‹ค.
๋งŒ์•ฝ ๋‘ ์‚ฌ๋žŒ์˜ ์„ ๋ฌผ ์ง€์ˆ˜๋„ ๊ฐ™๋‹ค๋ฉด ๋‹ค์Œ ๋‹ฌ์— ์„ ๋ฌผ์„ ์ฃผ๊ณ ๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์œ„์—์„œ ์„ค๋ช…ํ•œ ๊ทœ์น™๋Œ€๋กœ ๋‹ค์Œ ๋‹ฌ์— ์„ ๋ฌผ์„ ์ฃผ๊ณ ๋ฐ›์„ ๋•Œ, ๋‹น์‹ ์€ ์„ ๋ฌผ์„ ๊ฐ€์žฅ ๋งŽ์ด ๋ฐ›์„ ์นœ๊ตฌ๊ฐ€ ๋ฐ›์„ ์„ ๋ฌผ์˜ ์ˆ˜๋ฅผ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์นœ๊ตฌ๋“ค์˜ ์ด๋ฆ„์„ ๋‹ด์€ 1์ฐจ์› ๋ฌธ์ž์—ด ๋ฐฐ์—ด friends ์ด๋ฒˆ ๋‹ฌ๊นŒ์ง€ ์นœ๊ตฌ๋“ค์ด ์ฃผ๊ณ ๋ฐ›์€ ์„ ๋ฌผ ๊ธฐ๋ก์„ ๋‹ด์€ 1์ฐจ์› ๋ฌธ์ž์—ด ๋ฐฐ์—ด gifts๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ์ด๋•Œ, ๋‹ค์Œ๋‹ฌ์— ๊ฐ€์žฅ ๋งŽ์€ ์„ ๋ฌผ์„ ๋ฐ›๋Š” ์นœ๊ตฌ๊ฐ€ ๋ฐ›์„ ์„ ๋ฌผ์˜ ์ˆ˜๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”.

 

์ œํ•œ ์‚ฌํ•ญ

  • 2 ≤ friends์˜ ๊ธธ์ด = ์นœ๊ตฌ๋“ค์˜ ์ˆ˜ ≤ 50
    • friends์˜ ์›์†Œ๋Š” ์นœ๊ตฌ์˜ ์ด๋ฆ„์„ ์˜๋ฏธํ•˜๋Š” ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด์ง„ ๊ธธ์ด๊ฐ€ 10 ์ดํ•˜์ธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
    • ์ด๋ฆ„์ด ๊ฐ™์€ ์นœ๊ตฌ๋Š” ์—†์Šต๋‹ˆ๋‹ค.
  • 1 ≤ gifts์˜ ๊ธธ์ด ≤ 10,000
    • gifts์˜ ์›์†Œ๋Š” "A B"ํ˜•ํƒœ์˜ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
    • A๋Š” ์„ ๋ฌผ์„ ์ค€ ์นœ๊ตฌ์˜ ์ด๋ฆ„์„ B๋Š” ์„ ๋ฌผ์„ ๋ฐ›์€ ์นœ๊ตฌ์˜ ์ด๋ฆ„์„ ์˜๋ฏธํ•˜๋ฉฐ ๊ณต๋ฐฑ ํ•˜๋‚˜๋กœ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค.
    • A์™€ B๋Š” friends์˜ ์›์†Œ์ด๋ฉฐ A์™€ B๊ฐ€ ๊ฐ™์€ ์ด๋ฆ„์ธ ๊ฒฝ์šฐ๋Š” ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

 

์ž…์ถœ๋ ฅ ์˜ˆ

friends gifts result
["muzi", "ryan", "frodo", "neo"] ["muzi frodo", "muzi frodo", "ryan muzi", "ryan muzi", "ryan muzi", "frodo muzi", "frodo ryan", "neo muzi"] 2
["joy", "brad", "alessandro", "conan", "david"] ["alessandro brad", "alessandro joy", "alessandro conan", "david alessandro", "alessandro david"] 4
["a", "b", "c"] ["a b", "b a", "c a", "a c", "a c", "c a"] 0

 

 

์†Œ์Šค ์ฝ”๋“œ
# 1
def solution(friends, gifts):
    num = len(friends)

    # ์„ ๋ฌผ ์ฃผ๊ณ ๋ฐ›์€ ๊ธฐ๋ก ๋ฐ ์ ์ˆ˜ ์ƒ์„ฑ
    record = []
    score = [0]*num
    for name in friends:
        take_list = [0]*num
        for give_take in gifts:
            give, take = give_take.split(" ")
            if name == give:
                take_list[friends.index(take)] += 1
                score[friends.index(give)] += 1
            elif name == take:
                score[friends.index(take)] -= 1
        record.append(take_list)    

    # ๊ธฐ๋ก์„ ๋Œ๋ฉด์„œ ์„ ๋ฌผ์„ ๋” ๋งŽ์ด ์ค€ ์นœ๊ตฌ์˜ cnt ๋”ํ•˜๊ธฐ
    # ๊ธฐ๋ก์ด ์—†๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด ์„ ๋ฌผ์ง€์ˆ˜ score๋ฅผ ๋น„๊ต
    cnt = [0]*num
    for i in range(1,num):        
        for j in range(num-1):
            if i > j:
                if record[i][j] > record[j][i]:
                    cnt[i] += 1              
                elif record[i][j] < record[j][i]:
                    cnt[j] += 1
                elif i!=j and record[i][j] == record[j][i]:
                    if score[i] > score[j]:
                        cnt[i] += 1
                    elif score[i] < score[j]:
                        cnt[j] += 1     

    return max(cnt)

 

ํ’€์ด # 1

  • ์„ ๋ฌผ์„ ์ฃผ๊ณ ๋ฐ›์€ ๊ธฐ๋ก์ด record์™€ ์„ ๋ฌผ์ง€์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” score๋ฅผ ์ •์˜
  • friends ๋ฆฌ์ŠคํŠธ ๋Œ๋ฉด์„œ ์„ ๋ฌผ์ง€์ˆ˜๋ฅผ ๊ตฌํ•˜๊ณ  ์„ ๋ฌผ๊ธฐ๋ก์€ 2์ฐจ์› ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค๊ธฐ
    • friends ๋ฆฌ์ŠคํŠธ์˜ ์ด๋ฆ„์ด ์„ ๋ฌผ์„ ์ค€ ์ด๋ฆ„๊ณผ ๊ฐ™๋‹ค๋ฉด take_list์—์„œ ์„ ๋ฌผ์„ ๋ฐ›์€ ์นœ๊ตฌ ์ธ๋ฑ์Šค์— +1
    • ์„ ๋ฌผ์„ ์ค€ ๊ฒฝ์šฐ์— ์„ ๋ฌผ์ง€์ˆ˜์— +1 / ์„ ๋ฌผ์„ ๋ฐ›์€ ๊ฒฝ์šฐ์— ์„ ๋ฌผ์ง€์ˆ˜์— -1
  • ์„ ๋ฌผ์„ ์ฃผ๊ณ ๋ฐ›์€ 2์ฐจ์› ๋ฐฐ์—ด record๋ฅผ ๋Œ๋ฉด์„œ ๊ฐ ์นœ๊ตฌ๋“ค์ด ๋ฐ›์„ ์„ ๋ฌผ์˜ ๊ฐฏ์ˆ˜ ๊ณ„์‚ฐ
    • ์„ ๋ฌผ์„ ์ฃผ๊ณ ๋ฐ›์€ ์นœ๊ตฌ๊ฐ€ ๊ฐ™๊ฑฐ๋‚˜ ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€ ๊ฒฝ์šฐ๋Š” ์ œ์™ธํ•˜๊ธฐ ์œ„ํ•ด i>j ์กฐ๊ฑด ์ถ”๊ฐ€
  • ๋‹ค์Œ๋‹ฌ์— ๋ฐ›์„ ์„ ๋ฌผ์˜ ๊ฐฏ์ˆ˜๊ฐ€ ๋‹ด๊ธด cnt์—์„œ ๊ฐ€์žฅ ํฐ ๊ฐ’ ๊ตฌํ•˜๊ธฐ

 

# 2
def solution(friends, gifts):
    record = {}
    for name1 in friends:
        # ์„ ๋ฌผ์ง€์ˆ˜์™€ ์„ ๋ฌผ๊ธฐ๋ก
        record[name1] = [0,{}]
        for name2 in friends:
            if name1 != name2:
                record[name1][1][name2] = 0

    for give_take in gifts:
        give, take = give_take.split(" ")

        record[give][0] += 1            # ์„ ๋ฌผ์ง€์ˆ˜ ๊ณ„์‚ฐ
        record[give][1][take] += 1      # ์„ ๋ฌผ์„ ์ค€ ๊ฒฝ์šฐ +1 

        record[take][0] -= 1            # ์„ ๋ฌผ์ง€์ˆ˜ ๊ณ„์‚ฐ
        record[take][1][give] -= 1      # ์„ ๋ฌผ์„ ๋ฐ›์€ ๊ฒฝ์šฐ -1


    answer = [0] * len(friends)
    for give_name, values in record.items():
        give_idx = friends.index(give_name)
        score = values[0]
        for take_name, cnt in values[1].items():
            # cnt๊ฐ€ 0๋ณด๋‹ค ํฌ๋ฉด give_name์ด ์„ ๋ฌผ์„ ๋” ๋งŽ์ด ์ค€ ๊ฒฝ์šฐ
            if cnt > 0:
                answer[give_idx] += 1
            # cnt๊ฐ€ 0์ด๋ฉด ๊ธฐ๋ก์ด ์—†๊ฑฐ๋‚˜ ์ฃผ๊ณ  ๋ฐ›์€ ์ˆ˜๊ฐ€ ๊ฐ™์€ ๊ฒฝ์šฐ
            elif cnt == 0:
                if score > record[take_name][0]:
                    answer[give_idx] += 1

    return max(answer)

 

ํ’€์ด #2

  • ์„ ๋ฌผ์ง€์ˆ˜์™€ ์„ ๋ฌผ๊ธฐ๋ก์„ ์ €์žฅํ•˜๋Š” ๋”•์…”๋„ˆ๋ฆฌ record ์ •์˜
    • record์˜ ํ‚ค๋Š” ์„ ๋ฌผ์„ ์ค€ ์นœ๊ตฌ์˜ ์ด๋ฆ„
    • record์˜ ๊ฐ’์€ ์„ ๋ฌผ์ง€์ˆ˜์™€ {์„ ๋ฌผ์„ ๋ฐ›์€ ์นœ๊ตฌ:์„ ๋ฌผ์˜ ๊ฐฏ์ˆ˜}
  • gifts๋ฅผ ๋Œ๋ฉด์„œ ์„ ๋ฌผ์ง€์ˆ˜์™€ ์„ ๋ฌผ์˜ ๊ฐฏ์ˆ˜๋ฅผ ๊ณ„์‚ฐ
    • ์„ ๋ฌผ์„ ์ค€ ์นœ๊ตฌ์˜ ํ‚ค์—์„œ ์„ ๋ฌผ์„ ๋ฐ›์€ ์นœ๊ตฌ์—๊ฒŒ +1
    • ์„ ๋ฌผ์„ ๋ฐ›์€ ์นœ๊ตฌ์˜ ํ‚ค์—์„œ ์„ ๋ฌผ์„ ์ค€ ์นœ๊ตฌ์—๊ฒŒ -1
    • ์„ ๋ฌผ์„ ๋งŽ์ด ์ฃผ์—ˆ์„ ๊ฒฝ์šฐ์—๋Š” + / ์„ ๋ฌผ์„ ๋งŽ์ด ๋ฐ›์•˜์„ ๊ฒฝ์šฐ์—๋Š” -
  • record๋ฅผ ๋Œ๋ฉด์„œ ๋ฐ›์•„์•ผํ•˜๋Š” ์„ ๋ฌผ์˜ ๊ฐฏ์ˆ˜๋ฅผ answer์— ์ €์žฅ
    • record์˜ ํ‚ค๋Š” ์„ ๋ฌผ์„ ์ค€ ์นœ๊ตฌ์˜ ์ด๋ฆ„ / ๊ฐ’์€ ์„ ๋ฌผ์ง€์ˆ˜์™€ {์„ ๋ฌผ์„ ๋ฐ›์€ ์นœ๊ตฌ:์„ ๋ฌผ์˜ ๊ฐฏ์ˆ˜}
    • ์„ ๋ฌผ์„ ์ค€ ์นœ๊ตฌ์˜ ์ธ๋ฑ์Šค๋ฅผ give_index, ์„ ๋ฌผ์ง€์ˆ˜๋ฅผ score์— ์ €์žฅ
    • ์„ ๋ฌผ์„ ๋ฐ›์€ ์นœ๊ตฌ์˜ cnt๊ฐ€ 0๋ณด๋‹ค ํฌ๋ฉด ์„ ๋ฌผ์„ ๋งŽ์ด ์ค€ ๊ฒฝ์šฐ์ด๋ฏ€๋กœ answer + 1
    • cnt๊ฐ€ 0์ด๋ฉด ๊ธฐ๋ก์ด ์—†๊ฑฐ๋‚˜ ์ฃผ๊ณ  ๋ฐ›์€ ์ˆ˜๊ฐ€ ๊ฐ™์€ ๊ฒฝ์šฐ์ด๋ฏ€๋กœ ์„ ๋ฌผ์ง€์ˆ˜๋ฅผ ๋น„๊ต
  • ๋‹ค์Œ๋‹ฌ์— ๋ฐ›์„ ์„ ๋ฌผ์˜ ๊ฐฏ์ˆ˜๊ฐ€ ๋‹ด๊ธด answer์—์„œ ๊ฐ€์žฅ ํฐ ๊ฐ’ ๊ตฌํ•˜๊ธฐ

 

์ฒ˜์Œ์— ๋”•์…”๋„ˆ๋ฆฌ๋กœ ํ’€์–ด๋ณด๋ ค๊ณ  ํ•˜๋‹ค๊ฐ€ ์ž˜ ์•ˆ๋ผ์„œ ๋ฌธ์ œ์— ์žˆ๋Š”๋Œ€๋กœ 2์ฐจ์› ๋ฐฐ์—ด๋กœ ํ’€์—ˆ๋‹ค. ์•ฝ๊ฐ„ ํ—ท๊ฐˆ๋ฆฌ๊ธด ํ–ˆ์ง€๋งŒ ํ’€๊ธด ํ’€์—ˆ๋Š”๋ฐ ์‹œ๊ฐ„์ด ์ข€ ์˜ค๋ž˜ ๊ฑธ๋ ธ๋‹ค. ๋‹ค๋ฅธ ํ’€์ด๋ฅผ ์ฐธ๊ณ ํ•ด์„œ ๋‘ ๋ฒˆ์งธ ํ’€์ด์˜ ๋”•์…”๋„ˆ๋ฆฌ๋กœ ํ’€์—ˆ๋”๋‹ˆ ์‹œ๊ฐ„์ด ๋งŽ์ด ๋‹จ์ถ•๋˜์—ˆ๋‹ค. ์ƒ๊ฐํ•˜๋Š”๊ฑด ์–ด๋ ค์šด๋ฐ ๋ฐฉ์‹์„ ์ƒ๊ฐํ•ด๋‚ธ๋‹ค๋ฉด ํ’€์ด๋Š” ํ•  ๋งŒ ํ•œ ๊ฒƒ ๊ฐ™๋‹ค. ๐ŸŽ ๐ŸŽ

 

+ Recent posts