๐Ÿ™„12/1 Programmers LV2

๊น€ํƒœ์ค€ยท2022๋…„ 12์›” 1์ผ
0

Coding Test - Programmers

๋ชฉ๋ก ๋ณด๊ธฐ
2/29

11/30, 12/1 ์ดํ‹€ ๋™์•ˆ LV2 ๋ฌธ์ œ๋“ค์„ 1ํŽ˜์ด์ง€ ๊ฐ€๋Ÿ‰ ํ’€์—ˆ๋‹ค.... ์•ฝ 20๋ฌธ์ œ..
(์ •๋‹ต๋ฅ ์ด ๋†’์€ ๊ธฐ์ค€์œผ๋กœ ํ’€์–ด ์—„์ฒญ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ์ง„ ์•Š์•˜๋‹ค!)
1ํŽ˜์ด์ง€ ๊ฐ€๋Ÿ‰ ํ’€์–ด๋ณด๋ฉด์„œ LV1๊ณผ์˜ ์ฐจ์ด์ ์„ ๋ณด๋ฉด, ํ™•์‹คํžˆ ๊ธฐ๋ณธ์ ์ธ ๊ตฌํ˜„์„ ์š”๊ตฌํ•˜๋˜ LV 1๊ณผ๋Š” ๋‹ฌ๋ฆฌ, LV 2์˜ ๊ฒฝ์šฐ ์ˆ˜ํ•™์ ์ธ ์‚ฌ๊ณ ๋ ฅ๊ณผ ์ž๋ฃŒ๊ตฌ์กฐ ๋“ฑ์„ ์ด์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ์‹์—์„œ ์ฐจ์ด๋ฅผ ๋ณด์˜€๋‹ค.

์•„๋ž˜ ์š”์•ฝํ•œ ๋ฌธ์ œ๋“ค์€ LV2 1ํŽ˜์ด์ง€๋ฅผ ํ’€๋ฉด์„œ ์ •๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ? ๋ฌธ์ œ๋“ค์„ ์ถ”๋ ค๋ƒˆ๋‹ค.
์ •๋‹ต๋ฅ ์ด ๋‚ฎ์•„์งˆ์ˆ˜๋ก ์ž‘์„ฑํ•˜๋Š” ๋ฌธ์ œ ์ˆ˜๋‚˜ ๊ธ€ ์ˆ˜๊ฐ€ ์ค„์–ด๋“ค ๋“ฏ ์‹ถ๋‹ค..

๋ฌธ์ œ ํ’€์ด

์ง์ง€์–ด ์ œ๊ฑฐํ•˜๊ธฐ

๋ฌธ์ œ ์„ค๋ช…
์ง์ง€์–ด ์ œ๊ฑฐํ•˜๊ธฐ๋Š”, ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์ž์—ด์„ ๊ฐ€์ง€๊ณ  ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๋จผ์ € ๋ฌธ์ž์—ด์—์„œ ๊ฐ™์€ ์•ŒํŒŒ๋ฒณ์ด 2๊ฐœ ๋ถ™์–ด ์žˆ๋Š” ์ง์„ ์ฐพ์Šต๋‹ˆ๋‹ค. ๊ทธ๋‹ค์Œ, ๊ทธ ๋‘˜์„ ์ œ๊ฑฐํ•œ ๋’ค, ์•ž๋’ค๋กœ ๋ฌธ์ž์—ด์„ ์ด์–ด ๋ถ™์ž…๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•ด์„œ ๋ฌธ์ž์—ด์„ ๋ชจ๋‘ ์ œ๊ฑฐํ•œ๋‹ค๋ฉด ์ง์ง€์–ด ์ œ๊ฑฐํ•˜๊ธฐ๊ฐ€ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด S๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ง์ง€์–ด ์ œ๊ฑฐํ•˜๊ธฐ๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”. ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด 1์„, ์•„๋‹ ๊ฒฝ์šฐ 0์„ ๋ฆฌํ„ดํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฌธ์ž์—ด S = baabaa ๋ผ๋ฉด
b aa baa โ†’ bb aa โ†’ aa โ†’ ์˜ ์ˆœ์„œ๋กœ ๋ฌธ์ž์—ด์„ ๋ชจ๋‘ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ 1์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • ์ œํ•œ์‚ฌํ•ญ
    ๋ฌธ์ž์—ด์˜ ๊ธธ์ด : 1,000,000์ดํ•˜์˜ ์ž์—ฐ์ˆ˜
    ๋ฌธ์ž์—ด์€ ๋ชจ๋‘ ์†Œ๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
def solution(s):
    stack = []
    for i in s:
        if len(stack) == 0:
            stack.append(i)
        elif stack[-1] == i:
            stack.pop()
        else:
            stack.append(i)
    if len(stack) == 0:
        return 1
    else:
        return 0
    

< ํ’€์ด ๊ณผ์ • >
์Šคํƒ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์˜€๋‹ค

  1. ์Šคํƒ ์ž๋ฃŒ๊ตฌ์กฐ ์ƒ์„ฑ (๋นˆ ๋ฆฌ์ŠคํŠธ)
  2. for ๋ฌธ์œผ๋กœ ์ฃผ์–ด์ง„ ๋ฌธ์ž์—ด์„ ํƒ์ƒ‰ํ•˜๊ณ  1์ฐจ์ ์œผ๋กœ stack์ด ๋น„์–ด์žˆ๋‹ค๋ฉด ๋ฌธ์ž์—ด ๋‚ด ์ฒซ๋ฒˆ์งธ ๋‹จ์–ด๋ฅผ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค.
  3. ์Šคํƒ์— ์ €์žฅํ•œ ๋ฌธ์ž์™€ ํ˜„์žฌ ๋ฌธ์ž์—ด์ด ๋™์ผํ•˜๋‹ค๋ฉด stack๋‚ด ๋ฌธ์ž ์ œ๊ฑฐํ•˜๊ธฐ
  4. ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ์Šคํƒ์— ๋ฌธ์ž ์ถ”๊ฐ€ํ•ด์ฃผ๊ธฐ.
  5. ์œ„ ๋ฐฉ์‹์œผ๋กœ s ๋ฌธ์ž์—ด ์ „์ฒด๋ฅผ ํƒ์ƒ‰ํ•˜์—ฌ ์Šคํƒ์ด ๋น„์–ด์žˆ๋‹ค๋ฉด ๋ฌธ์ž์—ด์ด ๋ชจ๋‘ ์ œ๊ฑฐ๋œ ๊ฒƒ์ด๋ฏ€๋กœ 1์„ ๋ฆฌํ„ด, ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด 0์„ ๋ฆฌํ„ดํ•œ๋‹ค.

๊ตฌ๋ช…๋ณดํŠธ

๋ฌธ์ œ ์„ค๋ช…
๋ฌด์ธ๋„์— ๊ฐ‡ํžŒ ์‚ฌ๋žŒ๋“ค์„ ๊ตฌ๋ช…๋ณดํŠธ๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ตฌ์ถœํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ๋ช…๋ณดํŠธ๋Š” ์ž‘์•„์„œ ํ•œ ๋ฒˆ์— ์ตœ๋Œ€ 2๋ช…์”ฉ ๋ฐ–์— ํƒˆ ์ˆ˜ ์—†๊ณ , ๋ฌด๊ฒŒ ์ œํ•œ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ๋žŒ๋“ค์˜ ๋ชธ๋ฌด๊ฒŒ๊ฐ€ [70kg, 50kg, 80kg, 50kg]์ด๊ณ  ๊ตฌ๋ช…๋ณดํŠธ์˜ ๋ฌด๊ฒŒ ์ œํ•œ์ด 100kg์ด๋ผ๋ฉด 2๋ฒˆ์งธ ์‚ฌ๋žŒ๊ณผ 4๋ฒˆ์งธ ์‚ฌ๋žŒ์€ ๊ฐ™์ด ํƒˆ ์ˆ˜ ์žˆ์ง€๋งŒ 1๋ฒˆ์งธ ์‚ฌ๋žŒ๊ณผ 3๋ฒˆ์งธ ์‚ฌ๋žŒ์˜ ๋ฌด๊ฒŒ์˜ ํ•ฉ์€ 150kg์ด๋ฏ€๋กœ ๊ตฌ๋ช…๋ณดํŠธ์˜ ๋ฌด๊ฒŒ ์ œํ•œ์„ ์ดˆ๊ณผํ•˜์—ฌ ๊ฐ™์ด ํƒˆ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
๊ตฌ๋ช…๋ณดํŠธ๋ฅผ ์ตœ๋Œ€ํ•œ ์ ๊ฒŒ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ์‚ฌ๋žŒ์„ ๊ตฌ์ถœํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
์‚ฌ๋žŒ๋“ค์˜ ๋ชธ๋ฌด๊ฒŒ๋ฅผ ๋‹ด์€ ๋ฐฐ์—ด people๊ณผ ๊ตฌ๋ช…๋ณดํŠธ์˜ ๋ฌด๊ฒŒ ์ œํ•œ limit๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ๋ชจ๋“  ์‚ฌ๋žŒ์„ ๊ตฌ์ถœํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๊ตฌ๋ช…๋ณดํŠธ ๊ฐœ์ˆ˜์˜ ์ตœ์†Ÿ๊ฐ’์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

  • ์ œํ•œ์‚ฌํ•ญ
    ๋ฌด์ธ๋„์— ๊ฐ‡ํžŒ ์‚ฌ๋žŒ์€ 1๋ช… ์ด์ƒ 50,000๋ช… ์ดํ•˜์ž…๋‹ˆ๋‹ค.
    ๊ฐ ์‚ฌ๋žŒ์˜ ๋ชธ๋ฌด๊ฒŒ๋Š” 40kg ์ด์ƒ 240kg ์ดํ•˜์ž…๋‹ˆ๋‹ค.
    ๊ตฌ๋ช…๋ณดํŠธ์˜ ๋ฌด๊ฒŒ ์ œํ•œ์€ 40kg ์ด์ƒ 240kg ์ดํ•˜์ž…๋‹ˆ๋‹ค.
    ๊ตฌ๋ช…๋ณดํŠธ์˜ ๋ฌด๊ฒŒ ์ œํ•œ์€ ํ•ญ์ƒ ์‚ฌ๋žŒ๋“ค์˜ ๋ชธ๋ฌด๊ฒŒ ์ค‘ ์ตœ๋Œ“๊ฐ’๋ณด๋‹ค ํฌ๊ฒŒ ์ฃผ์–ด์ง€๋ฏ€๋กœ ์‚ฌ๋žŒ๋“ค์„ ๊ตฌ์ถœํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ๋Š” ์—†์Šต๋‹ˆ๋‹ค.

from collections import deque

def solution(people, limit):
    answer = 0
    people.sort()
    queue = deque(people)
    while queue:
        if len(queue) >= 2:
            if queue[0] + queue[-1] > limit:
                queue.pop()
                answer += 1
            else:
                queue.pop()
                queue.popleft()
                answer += 1
        else:
            if queue[0] <= limit:
                queue.pop()
                answer += 1
    return answer

def solution(people, limit):
	people.sort()
    answer = 0
    first_idx = 0
    last_idx = len(people)-1
    while first_idx < last_idx:
    	if people[first_idx] + people[last_idx] <= limit:
        	first_idx += 1
        last_idx -= 1
        answer += 1
   	if first_idx == last_idx:
    	answer += 1
	return answer

< ํ’€์ด ๊ณผ์ • >
์šฐ์„  ๋ฌธ์ œ๋ฅผ ๋ณด์ž๋งˆ์ž ์ฃผ์–ด์ง„ people ๋ฆฌ์ŠคํŠธ ์ฆ‰ ๋ชธ๋ฌด๊ฒŒ๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ด์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์„ ํ–ˆ๋‹ค.
์ฃผ์–ด์ง„ ๋ชธ๋ฌด๊ฒŒ ๋ฆฌ์ŠคํŠธ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ ํ›„์— ์ตœ๋Œ€ 2๋ช… ๋งŒ์ด ๋ณดํŠธ์— ํƒ‘์Šนํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๋ชธ๋ฌด๊ฒŒ ๋ฆฌ์ŠคํŠธ์˜ ์ตœ์†Ÿ๊ฐ’๊ณผ ์ตœ๋Œ“๊ฐ’์„ ๋”ํ•ด๊ฐ€๋ฉฐ limit๋ณด๋‹ค ์ž‘์„ ๊ฒฝ์šฐ ๋‘๋ช…์ด ํ•œ ๋ณดํŠธ์— ํƒ‘์Šนํ•œ ๊ฒƒ์œผ๋กœ ํŒ๋‹จํ•˜๊ณ  ๋ฌธ์ œ ํ’€์ด๋ฅผ ์ง„ํ–‰ํ–ˆ๋‹ค. (์ตœ์†Ÿ๊ฐ’๊ณผ ์ตœ๋Œ“๊ฐ’์„ ์ œ๊ฑฐํ•˜๋Š” ํ•จ์ˆ˜๊ฐ€ ํ•„์š”ํ•˜๊ธฐ์— deque๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋‹ค.)

  1. ์ฃผ์–ด์ง„ ๋ชธ๋ฌด๊ฒŒ ๋ฆฌ์ŠคํŠธ sort, queue์— people ๋ฆฌ์ŠคํŠธ๋ฅผ deque๋กœ ์ถ”๊ฐ€
  2. queue์— 2๋ช…์ด์ƒ์ธ ๊ฒฝ์šฐ์™€ 1๋ช…์ธ ๊ฒฝ์šฐ 2๊ฐ€์ง€์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ!
    2-1 ) queue์— ์‚ฌ๋žŒ ์ˆ˜๊ฐ€ 2๋ช… ์ด์ƒ์ธ ๊ฒฝ์šฐ ๋ชธ๋ฌด๊ฒŒ ์ตœ์†Ÿ๊ฐ’ + ์ตœ๋Œ“๊ฐ’ > limit์ธ ๊ฒฝ์šฐ์™€ ์•„๋‹Œ ๊ฒฝ์šฐ๋กœ ๊ตฌ๋ถ„! limit ๋ณด๋‹ค ํฌ๋‹ค๋ฉด, ๋ชธ๋ฌด๊ฒŒ๊ฐ€ ๊ฐ€์žฅ ํฐ ์‚ฌ๋žŒ์„ ํ•˜๋‚˜์˜ ๋ณดํŠธ์—๋งŒ ํƒœ์šด๋‹ค. queue.pop()์œผ๋กœ ํ•ด๋‹น ์ธ์› ๋ฆฌ์ŠคํŠธ์—์„œ ์ œ๊ฑฐ limit๋ณด๋‹ค ์ž‘๋‹ค๋ฉด ๋‘ ์ธ์›์„ queue์—์„œ ์ œ๊ฑฐํ•˜๊ณ  ํ•ด๋‹น ์ธ์›๋“ค์„ ํ•œ ๋ณดํŠธ์— ํƒœ์šด๋‹ค.
    2-2 ) ์œ„ ๋ฐฉ์‹์œผ๋กœ while๋ฌธ์„ ์ง„ํ–‰ํ•˜์—ฌ queue์— ์ธ์›์ด 1๋ช…์ธ ๊ฒฝ์šฐ limit๋ณด๋‹ค ์ž‘์œผ๋ฉด ํ•ด๋‹น ์ธ์›์„ ๋ณดํŠธ์— ํƒœ์šด๋‹ค

N๊ฐœ์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜

๋ฌธ์ œ ์„ค๋ช…
๋‘ ์ˆ˜์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜(Least Common Multiple)๋ž€ ์ž…๋ ฅ๋œ ๋‘ ์ˆ˜์˜ ๋ฐฐ์ˆ˜ ์ค‘ ๊ณตํ†ต์ด ๋˜๋Š” ๊ฐ€์žฅ ์ž‘์€ ์ˆซ์ž๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 2์™€ 7์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋Š” 14๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์ •์˜๋ฅผ ํ™•์žฅํ•ด์„œ, n๊ฐœ์˜ ์ˆ˜์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋Š” n ๊ฐœ์˜ ์ˆ˜๋“ค์˜ ๋ฐฐ์ˆ˜ ์ค‘ ๊ณตํ†ต์ด ๋˜๋Š” ๊ฐ€์žฅ ์ž‘์€ ์ˆซ์ž๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. n๊ฐœ์˜ ์ˆซ์ž๋ฅผ ๋‹ด์€ ๋ฐฐ์—ด arr์ด ์ž…๋ ฅ๋˜์—ˆ์„ ๋•Œ ์ด ์ˆ˜๋“ค์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜, solution์„ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”.

  • ์ œํ•œ ์‚ฌํ•ญ
    arr์€ ๊ธธ์ด 1์ด์ƒ, 15์ดํ•˜์ธ ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค.
    arr์˜ ์›์†Œ๋Š” 100 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.
def solution(arr):
    answer = max(arr)
    while True:
        cnt = 0
        for i in arr:
            if answer % i == 0:
                cnt += 1
            else:
                break
        if cnt == len(arr):
            break
        answer += 1
    return answer

< ํ’€์ด ๊ณผ์ • >
์ฃผ์–ด์ง„ 2๊ฐœ์˜ ์ˆซ์ž๋กœ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ๋Š” ํ’€์–ด๋ดค์œผ๋‚˜ ์ฃผ์–ด์ง„ ๋ฆฌ์ŠคํŠธ ์ „์ฒด์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ๋Š” ์ฒ˜์Œ์ด์–ด์„œ ๋‚˜๋ฆ„ ์‹œ๊ฐ„ ํˆฌ์ž๋ฅผ ํ•˜์˜€๋‹ค.
for๋ฌธ๋ณด๋‹ค๋Š” while๋ฌธ์œผ๋กœ ๋ฐ˜๋ณตํ•˜์—ฌ ์ง„ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ํšจ์œจ์ ์ด๋ผ๊ณ  ํŒ๋‹จํ•˜์—ฌ ์ง„ํ–‰!

  1. ์ฃผ์–ด์ง„ ๋ฐฐ์—ด์˜ ์ตœ๋Œ“๊ฐ’์„ answer์— ์ €์žฅํ•˜๊ณ  while๋ฌธ ๋‚ด for๋ฌธ์œผ๋กœ ๋ฐฐ์—ด์„ ๋Œ๋ ค ๊ฐ€์žฅ ํฐ ๊ฐ’์ด ์ฃผ์–ด์ง„ ๋ฐฐ์—ด ๋‚ด ์ˆซ์ž๋“ค์„ ๋ชจ๋‘ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค๋ฉด cnt += 1์„ ์ง„ํ–‰ํ•œ๋‹ค.
  2. ์ฃผ์–ด์ง„ ๋ฐฐ์—ด์˜ ๊ธธ์ด์™€ cnt๊ฐ’์ด ๋™์ผํ•˜๋‹ค๋ฉด ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋ฅผ ๊ตฌํ•œ ๊ฒƒ์„ ์˜๋ฏธํ•˜๋ฏ€๋กœ break๋ฅผ ๊ฑธ์–ด ์ค‘๋‹จํ•ด์ค€๋‹ค.

H-Index

๋ฌธ์ œ ์„ค๋ช…
H-Index๋Š” ๊ณผํ•™์ž์˜ ์ƒ์‚ฐ์„ฑ๊ณผ ์˜ํ–ฅ๋ ฅ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ง€ํ‘œ์ž…๋‹ˆ๋‹ค. ์–ด๋Š ๊ณผํ•™์ž์˜ H-Index๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’์ธ h๋ฅผ ๊ตฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์œ„ํ‚ค๋ฐฑ๊ณผ1์— ๋”ฐ๋ฅด๋ฉด, H-Index๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌํ•ฉ๋‹ˆ๋‹ค.
์–ด๋–ค ๊ณผํ•™์ž๊ฐ€ ๋ฐœํ‘œํ•œ ๋…ผ๋ฌธ nํŽธ ์ค‘, h๋ฒˆ ์ด์ƒ ์ธ์šฉ๋œ ๋…ผ๋ฌธ์ด hํŽธ ์ด์ƒ์ด๊ณ  ๋‚˜๋จธ์ง€ ๋…ผ๋ฌธ์ด h๋ฒˆ ์ดํ•˜ ์ธ์šฉ๋˜์—ˆ๋‹ค๋ฉด h์˜ ์ตœ๋Œ“๊ฐ’์ด ์ด ๊ณผํ•™์ž์˜ H-Index์ž…๋‹ˆ๋‹ค.
์–ด๋–ค ๊ณผํ•™์ž๊ฐ€ ๋ฐœํ‘œํ•œ ๋…ผ๋ฌธ์˜ ์ธ์šฉ ํšŸ์ˆ˜๋ฅผ ๋‹ด์€ ๋ฐฐ์—ด citations๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์ด ๊ณผํ•™์ž์˜ H-Index๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

  • ์ œํ•œ์‚ฌํ•ญ
    ๊ณผํ•™์ž๊ฐ€ ๋ฐœํ‘œํ•œ ๋…ผ๋ฌธ์˜ ์ˆ˜๋Š” 1ํŽธ ์ด์ƒ 1,000ํŽธ ์ดํ•˜์ž…๋‹ˆ๋‹ค.
    ๋…ผ๋ฌธ๋ณ„ ์ธ์šฉ ํšŸ์ˆ˜๋Š” 0ํšŒ ์ด์ƒ 10,000ํšŒ ์ดํ•˜์ž…๋‹ˆ๋‹ค.
def solution(citations):
    citations.sort()
    for i in range(len(citations)):
        if citations[i] >= len(citations) - i:
            return len(citations) - i
    return 0

< ํ’€์ด ๊ณผ์ • >
๋ฌธ์ œ๋ฅผ ๋ณด์ž๋งˆ์ž ์ฃผ์–ด์ง„ citations ๋ฆฌ์ŠคํŠธ๋ฅผ sortํ•ด์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.
์ดํ›„ for ๋ฌธ์„ ๋Œ๋ ค ๋…ผ๋ฌธ์˜ ์ธ์šฉํšŸ์ˆ˜๋“ค ์ค‘ h๋ฒˆ ์ด์ƒ ์ธ์šฉ๋œ ๋…ผ๋ฌธ ๋“ค์ด์–ด์•ผ ํ•˜๊ณ  ์ด์™ธ์˜ ๋…ผ๋ฌธ์ด h๋ฒˆ ์ดํ•˜์—ฌ์•ผ ํ•˜๋ฏ€๋กœ len(citations) - i๋กœ returnํ•˜๋„๋ก ์ฝ”๋“œ๋ฅผ ์งฐ๋‹ค.

์ง์ ‘ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ ์ด์ „ ์—ฌ๋Ÿฌ ์ผ€์ด์Šค๋ฅผ ๋จธ๋ฆฌ๋กœ ์ƒ๊ฐํ•ด๋‚ด๊ณ  ํ’€์–ด๋‚ด๋Š๋ผ ์‹œ๊ฐ„์ด ์ข€ ๊ฑธ๋ ธ๋˜ ๋ฌธ์ œ.

[1์ฐจ] ์บ์‹œ

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

  • ์ž…๋ ฅ ํ˜•์‹
    ์บ์‹œ ํฌ๊ธฐ(cacheSize)์™€ ๋„์‹œ์ด๋ฆ„ ๋ฐฐ์—ด(cities)์„ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค.
    cacheSize๋Š” ์ •์ˆ˜์ด๋ฉฐ, ๋ฒ”์œ„๋Š” 0 โ‰ฆ cacheSize โ‰ฆ 30 ์ด๋‹ค.
    cities๋Š” ๋„์‹œ ์ด๋ฆ„์œผ๋กœ ์ด๋ค„์ง„ ๋ฌธ์ž์—ด ๋ฐฐ์—ด๋กœ, ์ตœ๋Œ€ ๋„์‹œ ์ˆ˜๋Š” 100,000๊ฐœ์ด๋‹ค.
    ๊ฐ ๋„์‹œ ์ด๋ฆ„์€ ๊ณต๋ฐฑ, ์ˆซ์ž, ํŠน์ˆ˜๋ฌธ์ž ๋“ฑ์ด ์—†๋Š” ์˜๋ฌธ์ž๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ, ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„์„ ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋„์‹œ ์ด๋ฆ„์€ ์ตœ๋Œ€ 20์ž๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.
  • ์กฐ๊ฑด
    ์บ์‹œ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ LRU(Least Recently Used)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
    cache hit์ผ ๊ฒฝ์šฐ ์‹คํ–‰์‹œ๊ฐ„์€ 1์ด๋‹ค.
    cache miss์ผ ๊ฒฝ์šฐ ์‹คํ–‰์‹œ๊ฐ„์€ 5์ด๋‹ค.
def solution(cacheSize, cities):
    answer = 0
    idx = 0
    cache = []
    if cacheSize == 0:
        return len(cities) * 5
    for c in cities:
        city = c.upper()
        if city in cache:
            cache.remove(city)
            cache.append(city)
            answer += 1
        else:
            answer += 5
            if idx < cacheSize:
                cache.append(city)
                idx += 1
            else:
                cache.pop(0)
                cache.append(city)
    return answer

< ํ’€์ด ๊ณผ์ • >

๋ฌธ์ œ๋ฅผ ํ’€๊ธฐ ์ „ cache hit๊ณผ cache miss๋ฅผ ์ดํ•ดํ•˜๊ณ  ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋‹ค. ์ฒ˜์Œ๋“ค์–ด๋ณด๋Š” ๊ฑฐ๋ผ์„œ..
์งง๊ฒŒ ์š”์•ฝ์„ ํ•˜๋ฉด cache hit๋ž€ ์บ์‹œ ๋‚ด ์ฐพ๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•จ์„ ์˜๋ฏธํ•˜๊ณ  cache miss๋ž€ ์ฐพ๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์„ ๋•Œ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

  1. cache ๋นˆ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ดˆ๊ธฐ ์ธ๋ฑ์Šค ๊ฐ’์„ 0์œผ๋กœ ์ง€์ •ํ•ด์ฃผ์—ˆ๋‹ค.
  2. for ๋ฌธ์œผ๋กœ cities ๋ฆฌ์ŠคํŠธ๋ฅผ ๋Œ๋ฉฐ ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„์„ ํ†ต์ผํ•ด์ฃผ๊ธฐ ์œ„ํ•ด ๊ฐ ๋„์‹œ๋“ค์„ ๋ชจ๋‘ ๋Œ€๋ฌธ์ž๋กœ ์ฒ˜๋ฆฌ!
  3. ๋งŒ์ผ cache๋‚ด city๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด hit์ด๋ฏ€๋กœ cache๋‚ด ๋„์‹œ ์ œ๊ฑฐ ํ›„ ํ˜„์žฌ ๋„์‹œ ์ถ”๊ฐ€ํ•ด์ฃผ๊ณ  answer += 1์ฒ˜๋ฆฌ
  4. cache ๋‚ด city๊ฐ€ ์—†๋‹ค๋ฉด miss์— ํ•ด๋‹นํ•˜๋ฏ€๋กœ answer += 5 ์ง„ํ–‰!
  5. ์ด๋•Œ ์ฃผ์–ด์ง„ ์บ์‹œ์‚ฌ์ด์ฆˆ ๋ณด๋‹ค ์ž‘์•„์•ผ๋งŒ ์บ์‹œ์— ํฌํ•จ๋˜๋ฏ€๋กœ ์ด๋ฅผ ์ธ๋ฑ์Šค๊ฐ’์„ ํ•˜๋‚˜์”ฉ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด์„œ ์ง„ํ–‰ํ•˜์˜€๋‹ค.

์ ํ”„์™€ ์ˆœ๊ฐ„์ด๋™

def solution(n):
    ans = 0
    while n > 0:
        if n % 2 == 0:
            n //= 2
        else:
            n -= 1
            ans += 1
    return ans

< ํ’€์ด ๊ณผ์ • >
2์นธ ์”ฉ ์ˆœ๊ฐ„ ์ด๋™ํ•  ๊ฒฝ์šฐ ๊ฑด์ „์ง€ ์‚ฌ์šฉ๋Ÿ‰์ด ์ค„์ง€ ์•Š๊ณ , 1์นธ์”ฉ ์ด๋™ํ•˜๋ฉด ๊ฑด์ „์ง€ ์‚ฌ์šฉ๋Ÿ‰์ด 1์”ฉ ์ค„์–ด๋“ ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋ฅผ ๊ทธ๋ž˜๋„ ๊ตฌํ˜„ํ•œ ๋ฌธ์ œ

๋ฉ€๋ฆฌ ๋›ฐ๊ธฐ

def solution(n):
    dp = [0]*(n+1)
    if n < 3:
        return n
    dp[1] = 1
    dp[2] = 2
    for i in range(3, n+1):
        dp[i] = dp[i-1] + dp[i-2]
    return dp[n] % 1234567

< ํ’€์ด ๊ณผ์ • >
๋™์ ๊ณ„ํš๋ฒ• dp๋ฅผ ํ™œ์šฉํ•˜์—ฌ n์ด 3๋ฏธ๋งŒ์ด๋ฉด dp[n] = n์ด๊ณ  3,(n+1)์˜ ๋ฒ”์œ„์— ํ•œํ•ด์„œ dp[n] = dp[n-2] + dp[n-1]๋กœ ๊ณ„์‚ฐํ•ด dp[n]์„ ๋ฆฌํ„ดํ•œ๋‹ค.

๊ด„ํ˜ธ ํšŒ์ „ํ•˜๊ธฐ

๋ฌธ์ œ ์„ค๋ช…
๋‹ค์Œ ๊ทœ์น™์„ ์ง€ํ‚ค๋Š” ๋ฌธ์ž์—ด์„ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ด๋ผ๊ณ  ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
(), [], {} ๋Š” ๋ชจ๋‘ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
๋งŒ์•ฝ A๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ด๋ผ๋ฉด, (A), [A], {A} ๋„ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, [] ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ด๋ฏ€๋กœ, ([]) ๋„ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
๋งŒ์•ฝ A, B๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ด๋ผ๋ฉด, AB ๋„ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, {} ์™€ ([]) ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ด๋ฏ€๋กœ, {}([]) ๋„ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
๋Œ€๊ด„ํ˜ธ, ์ค‘๊ด„ํ˜ธ, ๊ทธ๋ฆฌ๊ณ  ์†Œ๊ด„ํ˜ธ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์ž์—ด s๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ์ด s๋ฅผ ์™ผ์ชฝ์œผ๋กœ x (0 โ‰ค x < (s์˜ ๊ธธ์ด)) ์นธ๋งŒํผ ํšŒ์ „์‹œ์ผฐ์„ ๋•Œ s๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ด ๋˜๊ฒŒ ํ•˜๋Š” x์˜ ๊ฐœ์ˆ˜๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

  • ์ œํ•œ์‚ฌํ•ญ
    s์˜ ๊ธธ์ด๋Š” 1 ์ด์ƒ 1,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
def solution(s):
    answer = 0
    for i in range(len(s)):
        stack = []
        s += s[0]
        s = s[1:]
        check = True
        for j in s:
            if j in ['[', '{', '(']:
                stack.append(j)
            else:
                if not stack:
                    check = False
                    break
                if j==']' and stack[-1]=='[' or j=='}' and stack[-1]=='{' or j==')' and stack[-1]=='(':
                    stack.pop()
                else:
                    check = False
                    break
        if not stack and check == True:
            answer += 1
    return answer

< ํ’€์ด ๊ณผ์ • >
์•ž์„œ ๋น„์Šทํ•œ ๊ด„ํ˜ธ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๊ธฐ์— ๋น„์Šทํ•œ ์œ ํ˜•(์Šคํƒ ์ž๋ฃŒ๊ตฌ์กฐ)์œผ๋กœ ์ƒ๊ฐํ•˜๊ณ  ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋‹ค.
์ฒ˜์Œ ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ์„ ๋•Œ๋Š” check ์—†์ด ์ง„ํ–‰ํ•˜์˜€์œผ๋‚˜ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•˜์˜€๊ณ  ์ฃผ์–ด์ง„ stack ์ด ๋น„์–ด์žˆ๋Š” ๊ฒฝ์šฐ์™€ check ๊ฐ’์ด True์ธ ๊ฒฝ์šฐ์ผ ๋•Œ๋งŒ ํšŸ์ˆ˜ + 1ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰ํ–ˆ๋‹ค.

์ข€ ๋” ํ’€์–ด์„œ ์„ค๋ช…ํ•˜์ž๋ฉด, ๋‚˜๋Š” '{', '(', '[' ๋ฌธ์ž๊ฐ€ ์Šคํƒ์— ์ถ”๊ฐ€๋˜๋ฉด ์ดํ›„ ๋ฌธ์ž๊ฐ€ '}',')',']' ์•„๋‹Œ ๊ฒฝ์šฐ False์ฒ˜๋ฆฌํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์˜€๋‹ค.

  1. ์ฃผ์–ด์ง„ ๋ฌธ์ž์—ด์„ ์ˆœํ™˜ํ•˜๊ธฐ ์œ„ํ•ด for๋ฌธ์„ ์‚ฌ์šฉํ•˜์˜€๊ณ  ์ฃผ์–ด์ง„ ๋ฌธ์ž์—ด์„ ์™ผ์ชฝ์œผ๋กœ ํšŒ์ „์‹œํ‚ค๋Š” ๊ณผ์ •์„ ๋ฆฌ์ŠคํŠธ์˜ ์ธ๋ฑ์Šค๋กœ ํ‘œํ˜„ํ•˜์˜€๋‹ค.
  2. ์ฃผ์–ด์ง„ ๋ฌธ์ž์—ด์˜ ๋ฌธ์ž j๋“ค์„ ์ด์ œ ๊ฐ๊ฐ ํƒ์ƒ‰ํ•˜๋Š”๋ฐ, ์ดˆ๊ธฐ ๋ฌธ์ž๊ฐ€ [, (, { ๋ผ๋ฉด ์Šคํƒ์— ์ถ”๊ฐ€ํ•ด์ค€๋‹ค.
  3. ์•„๋‹Œ ๊ฒฝ์šฐ์˜ if๋ฌธ์„ 2๊ฐœ๋กœ ์ฒ˜๋ฆฌํ•˜์˜€๋Š”๋ฐ ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
    3-1) ๋งŒ์ผ ์ฃผ์–ด์ง„ s ๋ฌธ์ž์—ด์ด ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค 4๋ฒˆ์ฒ˜๋Ÿผ (((๋ผ๋ฉด if stack == []: check = False, break ๊ฐ€ ์—†๋‹ค๋ฉด ์Šคํƒ์— append์ฒ˜๋ฆฌ๋ฅผ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๊ณ , ๊ฒฐ๊ณผ์ ์œผ๋กœ 3์„ ๋ฆฌํ„ดํ•˜๊ฒŒ ๋œ๋‹ค.

์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ ์ž, ์œ„ ์ฝ”๋“œ ๋Œ€๋กœ ์ง„ํ–‰ํ–ˆ๊ณ , stack์—๋Š” (, [, { ๊ฐ€ ์žˆ๊ณ  ๋ฌธ์ž j๊ฐ€ ์ด๋ฅผ ๋‹ซ์•„์ฃผ๋Š” ๊ด„ํ˜ธ ๋ฌธ์ž๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค๋ฉด, ์Šคํƒ ๋‚ด ๋ฌธ์ž๋ฅผ popํ•˜๋Š” ๊ณผ์ •์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ง„ํ–‰ํ–ˆ๋‹ค.

ํ–‰๋ ฌ์˜ ๊ณฑ์…ˆ

def solution(arr1, arr2):
    answer = [[0]*len(arr2[0]) for _ in range(len(arr1))]
    for i in range(len(arr1)):
        for j in range(len(arr2[0])):
            for k in range(len(arr1[0])):
                answer[i][j] += arr1[i][k] * arr2[k][j]
    return answer

< ํ’€์ด ๊ณผ์ • >
ํ–‰๋ ฌ๊ณฑ์„ ๊ทธ๋Œ€๋กœ ๊ตฌํ˜„ํ•œ ๋ฌธ์ œ.
ํ–‰๋ ฌ ๊ณฑ์—์„œ ์ œ์ผ ์ค‘์š”ํ•œ ๊ฒƒ์€ AXB์— ์žˆ์–ด์„œ A์˜ ์—ด๊ณผ B์˜ ํ–‰์˜ ๊ธธ์ด๊ฐ€ ๊ฐ™์•„์•ผํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋ฅผ ์ด์šฉํ•˜์—ฌ answer 2์ฐจ์›๋ฆฌ์ŠคํŠธ์— len(arr1)๋Š” ํ–‰์„, len(arr2[0])์„ ์—ด๋กœ ๋‚˜ํƒ€๋‚ด์–ด ํ‘œํ˜„ํ–ˆ๋‹ค.
์ดํ›„ for๋ฌธ์œผ๋กœ ํ–‰, ์—ด, len(arr1[0]) ์ˆœ์„œ๋Œ€๋กœ ์ˆœ์ฐจํ•˜๋ฉฐ Product ์—ฐ์‚ฐ์„ ์ง„ํ–‰ํ•œ๋‹ค.

๐Ÿ‘ํ’€์ด ํ•˜๋ฉด์„œ ์ž˜ํ–ˆ๋˜ ์ 

์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•ด๋‚ด๋Š” ์‚ฌ๊ณ ๋ ฅ์ด ํ™•์‹คํžˆ ์š”์ƒˆ ๋Š˜์–ด๋‚œ ๋Š๋‚Œ. ๋ฌธ์ œ๋ฅผ ํ•˜๋„ ํ’€์–ด์„œ ๊ทธ๋Ÿฐ๊ฐ€๋ณด๋‹ค. ๋ฌผ๋ก  ์•„์ง ์‹ค๋ ฅ์ด ๋งŽ์ด ๋ถ€์กฑํ•˜๊ณ  LV 2๋„ ์ •๋‹ต๋ฅ ์ด ๋†’์€ ๋ฌธ์ œ๋“ค๋งŒ ํ’€์–ด์„œ ๊ทธ๋Ÿฐ์ง„ ๋ชฐ๋ผ๋„ ๋ฌธ์ œ๋ฅผ ๋ณด์ž๋งˆ์ž ์ ‘๊ทผํ•˜๋Š” ์‹œ๊ฐ„์ด ์ค„์–ด๋“  ๋Š๋‚Œ์ด๋‹ค.

โ—์ผ์ •

๋“œ๋””์–ด ์ฝ”ํ…Œ ๊ณต๋ถ€๋ฅผ ์‹œ์ž‘ํ–ˆ๋˜ ์ด์œ ์ธ naver AI boostcamp 5๊ธฐ ์ผ์ •์ด ๋‚˜์™”๋‹ค!
1์ฐจ ์ฝ”ํ…Œ๋Š” 1์›” 13์ผ ์‹œํ—˜ ์˜ˆ์ •..
12์›” ํ•œ๋‹ฌ ๋™์•ˆ ์ž ์„ ์ข€ ์ค„์—ฌ๊ฐ€๋ฉด์„œ๋ผ๋„ ํ•ด์•ผ๊ฒ ๋‹ค..
12์›” 6์ผ ~ 12์›” 19์ผ์€ ๊ธฐ๋ง๊ณ ์‚ฌ์™€ ์ฝ”ํ…Œ, ์ค‘๊ฐ„ ์ค‘๊ฐ„ SQL Study, Texas ๊ฐ•์˜... ํ›„....
๋ณ‘ํ–‰ํ•  ๊ฒƒ๋“ค์ด ํ•œ ๋‘˜์ด ์•„๋‹ˆ์ง€๋งŒ ์ตœ๋Œ€ํ•œ ์ฝ”ํ…Œ ๋ฌธ์ œ ํ’€์ด๋ฅผ ์†Œํ™€ํžˆ ํ•˜์ง€ ์•Š์œผ๋ ค๊ณ  ํ•œ๋‹ค.
ํ™”์ดํŒ…ํ•ด๋ณด์ž!!

profile
To be a DataScientist

0๊ฐœ์˜ ๋Œ“๊ธ€