๐Ÿ™ŒLast weekend of November

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

Coding Test - Programmers

๋ชฉ๋ก ๋ณด๊ธฐ
18/29
post-thumbnail

11์›” ๋งˆ์ง€๋ง‰์ฃผ ์ฃผ๋ง ๋ฆฌ๋ทฐ
๋Œ€์ฒด๋กœ ์šด๋™๊ณผ ๊ณต๋ถ€๋กœ ์ฃผ๋ง ์‹œ๊ฐ„์„ ๋ณด๋ƒˆ๋‹ค. 12์›”์ด ๋˜๊ธฐ ์ „ ๋‹ค์‹œ ๊ฐ๊ฐ์„ ๋Œ์–ด์˜ฌ๋ ค ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ค€๋น„๋ฅผ ํ•˜๋Š” ์ค‘!

11/26 ํ† ์š”์ผ

  • ์˜ค์ „ ์ค€ํƒœ ์‚ฐ์ฑ… & ํ—ฌ์Šค
  • ์˜คํ›„ ์•Œ๋ฐ”
  • Coding test study (Programmers)

์ฃผ๋ง์ด ๋˜์ž๋งˆ์ž ์˜ค๋žœ๋งŒ์— ๊ฐ•์•„์ง€ ์‚ฐ์ฑ…์„ ํ•ด์ฃผ์—ˆ๋‹ค. ํŒจ๋”ฉ๊นŒ์ง€ ์ž…ํ˜€๊ฐ€๋ฉด์„œ๐Ÿ˜‚

<๋ฌธ์ œ ํ’€์ด>

์˜ˆ์‚ฐ

๋ฌธ์ œ ์„ค๋ช…
S์‚ฌ์—์„œ๋Š” ๊ฐ ๋ถ€์„œ์— ํ•„์š”ํ•œ ๋ฌผํ’ˆ์„ ์ง€์›ํ•ด ์ฃผ๊ธฐ ์œ„ํ•ด ๋ถ€์„œ๋ณ„๋กœ ๋ฌผํ’ˆ์„ ๊ตฌ๋งคํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๊ธˆ์•ก์„ ์กฐ์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜, ์ „์ฒด ์˜ˆ์‚ฐ์ด ์ •ํ•ด์ ธ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ๋ถ€์„œ์˜ ๋ฌผํ’ˆ์„ ๊ตฌ๋งคํ•ด ์ค„ ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ตœ๋Œ€ํ•œ ๋งŽ์€ ๋ถ€์„œ์˜ ๋ฌผํ’ˆ์„ ๊ตฌ๋งคํ•ด ์ค„ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
๋ฌผํ’ˆ์„ ๊ตฌ๋งคํ•ด ์ค„ ๋•Œ๋Š” ๊ฐ ๋ถ€์„œ๊ฐ€ ์‹ ์ฒญํ•œ ๊ธˆ์•ก๋งŒํผ์„ ๋ชจ๋‘ ์ง€์›ํ•ด ์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 1,000์›์„ ์‹ ์ฒญํ•œ ๋ถ€์„œ์—๋Š” ์ •ํ™•ํžˆ 1,000์›์„ ์ง€์›ํ•ด์•ผ ํ•˜๋ฉฐ, 1,000์›๋ณด๋‹ค ์ ์€ ๊ธˆ์•ก์„ ์ง€์›ํ•ด ์ค„ ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.
๋ถ€์„œ๋ณ„๋กœ ์‹ ์ฒญํ•œ ๊ธˆ์•ก์ด ๋“ค์–ด์žˆ๋Š” ๋ฐฐ์—ด d์™€ ์˜ˆ์‚ฐ budget์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์ตœ๋Œ€ ๋ช‡ ๊ฐœ์˜ ๋ถ€์„œ์— ๋ฌผํ’ˆ์„ ์ง€์›ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

  • ์ œํ•œ์‚ฌํ•ญ
    d๋Š” ๋ถ€์„œ๋ณ„๋กœ ์‹ ์ฒญํ•œ ๊ธˆ์•ก์ด ๋“ค์–ด์žˆ๋Š” ๋ฐฐ์—ด์ด๋ฉฐ, ๊ธธ์ด(์ „์ฒด ๋ถ€์„œ์˜ ๊ฐœ์ˆ˜)๋Š” 1 ์ด์ƒ 100 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
    d์˜ ๊ฐ ์›์†Œ๋Š” ๋ถ€์„œ๋ณ„๋กœ ์‹ ์ฒญํ•œ ๊ธˆ์•ก์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ๋ถ€์„œ๋ณ„ ์‹ ์ฒญ ๊ธˆ์•ก์€ 1 ์ด์ƒ 100,000 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.
    budget์€ ์˜ˆ์‚ฐ์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ, 1 ์ด์ƒ 10,000,000 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.

Code review

def solution(d, budget):
    answer = 0
    d.sort()
    for i in range(len(d)):
        if d[i] <= budget:
            answer += 1
            budget -= d[i]
        else:
            break
    return answer

์ฃผ์–ด์ง„ ์˜ˆ์‚ฐ(budget)์„ ๋„˜์ง€ ์•Š๋Š” ๋ถ€์„œ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ๋กœ, d (๋ถ€์„œ ๋ฆฌ์ŠคํŠธ)๋ฅผ ์šฐ์„  ๋น„์šฉ ์ˆœ์„œ๋Œ€๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•œ ์ดํ›„ ๊ฐ ๋ถ€์„œ ๋ณ„ cost๊ฐ€ budget์„ ๋„˜์ง€ ์•Š๋Š”๋‹ค๋ฉด answer += 1, ์˜ˆ์‚ฐ -= ์ถ”๊ฐ€ํ•ด์ค€ ๋ถ€์„œ ๋น„์šฉ์œผ๋กœ for๋ฌธ์„ ๋ˆ ์ดํ›„, ์˜ˆ์‚ฐ์„ ๋„˜์–ด๊ฐ€๋Š” ๊ฒฝ์šฐ breakํ•˜๋Š” ์ข…๋ฃŒ ์กฐ๊ฑด์„ ์„ค์ •ํ•ด์ฃผ๋Š” ๋‹จ์ˆœ ๊ตฌํ˜„ ๋ฌธ์ œ

11์›” 27 ์ผ์š”์ผ

  • ์˜ค์ „ ์บ์น˜๋ณผ
  • ์˜คํ›„ SQL Study
  • Coding test study (Programmers)

ํšŒ์‚ฌ ์ธํ„ด์œผ๋กœ ๋งŒ๋‚œ ์‚ฌ๋žŒ๋“ค๊ณผ ์˜ค์ „ ์บ์น˜๋ณผ!

<๋ฌธ์ œ ํ’€์ด>

์ตœ๋Œ€๊ณต์•ฝ์ˆ˜์™€ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜

๋ฌธ์ œ ์„ค๋ช…
๋‘ ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ๋‘ ์ˆ˜์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜์™€ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜, solution์„ ์™„์„ฑํ•ด ๋ณด์„ธ์š”. ๋ฐฐ์—ด์˜ ๋งจ ์•ž์— ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜, ๊ทธ๋‹ค์Œ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋ฅผ ๋„ฃ์–ด ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‘ ์ˆ˜ 3, 12์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋Š” 3, ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋Š” 12์ด๋ฏ€๋กœ solution(3, 12)๋Š” [3, 12]๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์ œํ•œ ์‚ฌํ•ญ
    ๋‘ ์ˆ˜๋Š” 1์ด์ƒ 1000000์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.

code review

def solution(n, m):
    answer = []
    for i in range(min(n, m), 0, -1):
        if n%i == 0 and m%i == 0:
            answer.append(i)
            break
    for i in range(max(n, m), n*m+1):
        if i%n == 0 and i%m == 0:
            answer.append(i)
            break
    return answer

์ฃผ์–ด์ง„ ์ž…๋ ฅ ๊ฐ’ n, m์ด ๋ชจ๋‘ 1๋ฐฑ๋งŒ ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜๋ผ๋Š” ๊ฒƒ์— ์ฃผ์˜ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋‹ค.
๊ธฐ๊ปํ•ด์•ผ for๋ฌธ 1๋ฒˆ ์ •๋„๋กœ ํ•ด๊ฒฐ ๊ฐ€๋Šฅํ•œ ๋ฌธ์ œ์ž„์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค.
์ด์ „๊นŒ์ง„ ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜ ๋“ฑ์„ ๋ฌป๋Š” ๋ฌธ์ œ๋งŒ์„ ํ’€์—ˆ๊ธฐ์— ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜์™€ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋ฅผ ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ์‹์— ๋Œ€ํ•ด ์•Œ๊ฒŒ ๋œ ๋ฌธ์ œ๋‹ค.

  • ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜์˜ ๊ฒฝ์šฐ, ์ฃผ์–ด์ง„ ์ž…๋ ฅ๊ฐ’ ์ค‘ (์ตœ์†Ÿ๊ฐ’~0)์˜ ๋ฒ”์œ„๋ฅผ ์ด์šฉํ•˜์—ฌ n, m์œผ๋กœ ๋ชจ๋‘ ๋‚˜๋ˆ„์–ด์ง€๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ answer์— ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์งฐ๊ณ 
    ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜์˜ ๊ฒฝ์šฐ, ์ฃผ์–ด์ง„ ์ž…๋ ฅ๊ฐ’ ์ค‘ (์ตœ๋Œ€๊ฐ’ ~ n*m)์˜ ๋ฒ”์œ„๋ฅผ ์ด์šฉํ•˜์—ฌ ์‚ฌ์ด๊ฐ’ ์ค‘ n,m ๋ชจ๋‘ ๋‚˜๋ˆ„์–ด์ง€๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ answer์— ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์งฐ๋‹ค.
    ๋‘ ๊ฒฝ์šฐ์˜ ์ˆ˜ ๋ชจ๋‘ ํ•œ ๋ฒˆ๋งŒ ์ž…๋ ฅ๋  ์ˆ˜ ์žˆ๋„๋ก break ์ข…๋ฃŒ ์กฐ๊ฑด์„ ๊ฑธ์–ด์ฃผ์—ˆ๋‹ค.

์†Œ์ˆ˜ ์ฐพ๊ธฐ

๋ฌธ์ œ ์„ค๋ช…
1๋ถ€ํ„ฐ ์ž…๋ ฅ๋ฐ›์€ ์ˆซ์ž n ์‚ฌ์ด์— ์žˆ๋Š” ์†Œ์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜, solution์„ ๋งŒ๋“ค์–ด ๋ณด์„ธ์š”.
์†Œ์ˆ˜๋Š” 1๊ณผ ์ž๊ธฐ ์ž์‹ ์œผ๋กœ๋งŒ ๋‚˜๋ˆ„์–ด์ง€๋Š” ์ˆ˜๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
(1์€ ์†Œ์ˆ˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.)

  • ์ œํ•œ ์กฐ๊ฑด
    n์€ 2์ด์ƒ 1000000์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.

code review

def solution(n):
    answer = 0
    check = [True]*(n+1)
    for i in range(2, n+1):
        if check[i] == True:
            answer += 1
            for j in range(i, n+1, i):
                check[j] = False
    return answer

ํšจ์œจ์„ฑ ํ†ต๊ณผ๋ฅผ ์œ„ํ•ด ์€๊ทผ ์‹œ๊ฐ„์„ ์‚ฌ์šฉํ–ˆ๋˜ ๋ฌธ์ œ๋‹ค. ์ฃผ์–ด์ง„ n์˜ ๋ฒ”์œ„๊ฐ€ 2 ~ 1๋ฐฑ๋งŒ ์ด๊ธฐ์—, 2์ค‘ for๋ฌธ์˜ ์ตœ์†Œ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ณ„์‚ฐํ•˜๋„๋ก ํ–ˆ๋‹ค.
์šฐ์„ , check ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์†Œ์ˆ˜์ธ ๊ฒฝ์šฐ True, ์•„๋‹ˆ๋ฉด False์ธ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค์–ด ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ์ค„์˜€๋‹ค. ๋˜ํ•œ, 2๋ฒˆ์งธ for๋ฌธ์„ ํ†ตํ•ด ์•ž์„œ ์†Œ์ˆ˜๋กœ ์ •ํ•ด์ง„ ๊ฐ’์˜ ๋ฐฐ์ˆ˜๋“ค์€ ๋ชจ๋‘ False์ฒ˜๋ฆฌ๋ฅผ ํ•˜์—ฌ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ์ค„์—ฌ์ฃผ์—ˆ๋‹ค.

์ฃผ๋ง๋™์•ˆ ํ•œ ์ผ

  1. ์šด๋™์œผ๋กœ ์—ฌ๊ฐ€ ์‹œ๊ฐ„ ๋ณด๋‚ด๊ธฐ
  2. Programmers LV1 ๋งˆ๋ฌด๋ฆฌ!! >> ๋‚ด์ผ๋ถ€ํ„ฐ LV2 ๋ฌธ์ œํ’€์ด ์˜ˆ์ •
  3. SQL Study ์ง„ํ–‰! (๋งค์ฃผ ์ผ์š”์ผ ์˜ˆ์ •)

SQL Study

์˜ค๋Š˜๋ถ€ํ„ฐ ๋Œ€ํ•™๊ต ์นœ๊ตฌ๋“ค๊ณผ SQL Study ์ง„ํ–‰!
๋งค์ฃผ ์ผ์š”์ผ๋งˆ๋‹ค ๊ฐ์ž ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ–๊ธฐ๋กœ ํ–ˆ๋‹ค.

12์›” 4์ผ๊นŒ์ง€ To do list... ํ•ด์•ผ ํ•  ์ผ๋“ค์ด ๋Š˜์–ด๋‚˜๊ณ  ์žˆ๋‹ค..
๊ทธ๋Ÿฌ๋‚˜ Study๋ฅผ ํ†ตํ•ด ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋“ค์„ ๊ด€๋ฆฌํ•˜๋Š” DB๋ฅผ ์ดํ•ดํ•˜๊ณ  ๋ฉด์ ‘ ์ค€๋น„๋ฅผ ์œ„ํ•œ ๊ณผ์ •์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ณ  ์—ด์‹ฌํžˆ ์ค€๋น„ํ•ด๋ณด๋ ค ํ•œ๋‹ค!

profile
To be a DataScientist

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