[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค/python] 2021 KAKAO BLIND RECRUITMENT : ๋ฉ”๋‰ด ๋ฆฌ๋‰ด์–ผ

2021. 7. 2. 16:44

๋ฌธ์ œ ์„ค๋ช…

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

์˜ˆ๋ฅผ ๋“ค์–ด, ์†๋‹˜ 6๋ช…์ด ์ฃผ๋ฌธํ•œ ๋‹จํ’ˆ๋ฉ”๋‰ด๋“ค์˜ ์กฐํ•ฉ์ด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค๋ฉด,
(๊ฐ ์†๋‹˜์€ ๋‹จํ’ˆ๋ฉ”๋‰ด๋ฅผ 2๊ฐœ ์ด์ƒ ์ฃผ๋ฌธํ•ด์•ผ ํ•˜๋ฉฐ, ๊ฐ ๋‹จํ’ˆ๋ฉ”๋‰ด๋Š” A ~ Z์˜ ์•ŒํŒŒ๋ฒณ ๋Œ€๋ฌธ์ž๋กœ ํ‘œ๊ธฐํ•ฉ๋‹ˆ๋‹ค.)

์†๋‹˜ ์†๋‹˜ ๋ฒˆํ˜ธ์ฃผ๋ฌธํ•œ ๋‹จํ’ˆ๋ฉ”๋‰ด ์กฐํ•ฉ
1๋ฒˆ ์†๋‹˜ A, B, C, F, G
2๋ฒˆ ์†๋‹˜ A, C
3๋ฒˆ ์†๋‹˜ C, D, E
4๋ฒˆ ์†๋‹˜ A, C, D, E
5๋ฒˆ ์†๋‹˜ B, C, F, G
6๋ฒˆ ์†๋‹˜ A, C, D, E, H

๊ฐ€์žฅ ๋งŽ์ด ํ•จ๊ป˜ ์ฃผ๋ฌธ๋œ ๋‹จํ’ˆ๋ฉ”๋‰ด ์กฐํ•ฉ์— ๋”ฐ๋ผ "์Šค์นดํ”ผ"๊ฐ€ ๋งŒ๋“ค๊ฒŒ ๋  ์ฝ”์Šค์š”๋ฆฌ ๋ฉ”๋‰ด ๊ตฌ์„ฑ ํ›„๋ณด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ฝ”์Šค ์ข…๋ฅ˜๋ฉ”๋‰ด ๊ตฌ์„ฑ์„ค๋ช…
์š”๋ฆฌ 2๊ฐœ ์ฝ”์Šค A, C 1๋ฒˆ, 2๋ฒˆ, 4๋ฒˆ, 6๋ฒˆ ์†๋‹˜์œผ๋กœ๋ถ€ํ„ฐ ์ด 4๋ฒˆ ์ฃผ๋ฌธ๋์Šต๋‹ˆ๋‹ค.
์š”๋ฆฌ 3๊ฐœ ์ฝ”์Šค C, D, E 3๋ฒˆ, 4๋ฒˆ, 6๋ฒˆ ์†๋‹˜์œผ๋กœ๋ถ€ํ„ฐ ์ด 3๋ฒˆ ์ฃผ๋ฌธ๋์Šต๋‹ˆ๋‹ค.
์š”๋ฆฌ 4๊ฐœ ์ฝ”์Šค B, C, F, G 1๋ฒˆ, 5๋ฒˆ ์†๋‹˜์œผ๋กœ๋ถ€ํ„ฐ ์ด 2๋ฒˆ ์ฃผ๋ฌธ๋์Šต๋‹ˆ๋‹ค.
์š”๋ฆฌ 4๊ฐœ ์ฝ”์Šค A, C, D, E 4๋ฒˆ, 6๋ฒˆ ์†๋‹˜์œผ๋กœ๋ถ€ํ„ฐ ์ด 2๋ฒˆ ์ฃผ๋ฌธ๋์Šต๋‹ˆ๋‹ค.

 

๋ฌธ์ œ

๊ฐ ์†๋‹˜๋“ค์ด ์ฃผ๋ฌธํ•œ ๋‹จํ’ˆ๋ฉ”๋‰ด๋“ค์ด ๋ฌธ์ž์—ด ํ˜•์‹์œผ๋กœ ๋‹ด๊ธด ๋ฐฐ์—ด orders, "์Šค์นดํ”ผ"๊ฐ€ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์–ดํ•˜๋Š” ์ฝ”์Šค์š”๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋‹จํ’ˆ๋ฉ”๋‰ด๋“ค์˜ ๊ฐฏ์ˆ˜๊ฐ€ ๋‹ด๊ธด ๋ฐฐ์—ด course๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, "์Šค์นดํ”ผ"๊ฐ€ ์ƒˆ๋กœ ์ถ”๊ฐ€ํ•˜๊ฒŒ ๋  ์ฝ”์Šค์š”๋ฆฌ์˜ ๋ฉ”๋‰ด ๊ตฌ์„ฑ์„ ๋ฌธ์ž์—ด ํ˜•ํƒœ๋กœ ๋ฐฐ์—ด์— ๋‹ด์•„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”.

 

์ œํ•œ์‚ฌํ•ญ

  • orders ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋Š” 2 ์ด์ƒ 20 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • orders ๋ฐฐ์—ด์˜ ๊ฐ ์›์†Œ๋Š” ํฌ๊ธฐ๊ฐ€ 2 ์ด์ƒ 10 ์ดํ•˜์ธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
    • ๊ฐ ๋ฌธ์ž์—ด์€ ์•ŒํŒŒ๋ฒณ ๋Œ€๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๊ฐ ๋ฌธ์ž์—ด์—๋Š” ๊ฐ™์€ ์•ŒํŒŒ๋ฒณ์ด ์ค‘๋ณตํ•ด์„œ ๋“ค์–ด์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • course ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋Š” 1 ์ด์ƒ 10 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
    • course ๋ฐฐ์—ด์˜ ๊ฐ ์›์†Œ๋Š” 2 ์ด์ƒ 10 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜๊ฐ€ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
    • course ๋ฐฐ์—ด์—๋Š” ๊ฐ™์€ ๊ฐ’์ด ์ค‘๋ณตํ•ด์„œ ๋“ค์–ด์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์ •๋‹ต์€ ๊ฐ ์ฝ”์Šค์š”๋ฆฌ ๋ฉ”๋‰ด์˜ ๊ตฌ์„ฑ์„ ๋ฌธ์ž์—ด ํ˜•์‹์œผ๋กœ ๋ฐฐ์—ด์— ๋‹ด์•„ ์‚ฌ์ „ ์ˆœ์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•ด์„œ return ํ•ด์ฃผ์„ธ์š”.
    • ๋ฐฐ์—ด์˜ ๊ฐ ์›์†Œ์— ์ €์žฅ๋œ ๋ฌธ์ž์—ด ๋˜ํ•œ ์•ŒํŒŒ๋ฒณ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ๋งŒ์•ฝ ๊ฐ€์žฅ ๋งŽ์ด ํ•จ๊ป˜ ์ฃผ๋ฌธ๋œ ๋ฉ”๋‰ด ๊ตฌ์„ฑ์ด ์—ฌ๋Ÿฌ ๊ฐœ๋ผ๋ฉด, ๋ชจ๋‘ ๋ฐฐ์—ด์— ๋‹ด์•„ return ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
    • orders์™€ course ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” return ํ•˜๋Š” ๋ฐฐ์—ด์˜ ๊ธธ์ด๊ฐ€ 1 ์ด์ƒ์ด ๋˜๋„๋ก ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.

 

์ •๋‹ต

from itertools import combinations
from collections import Counter

def solution(orders, course):
    answer = []
    
    for c in course:    # c = ์ฝ”์Šค ์š”๋ฆฌ ๊ฐœ์ˆ˜
        combi = []      # combi = ์š”๋ฆฌ ์กฐํ•ฉ
        cnt = []        # cnt = ์กฐํ•ฉ ๋‹น ์ฃผ๋ฌธ ํšŸ์ˆ˜
        for o in orders:    # o = ์ฃผ๋ฌธ
            if len(o) >= c: # ์ฃผ๋ฌธ ์š”๋ฆฌ ๊ฐœ์ˆ˜๊ฐ€ ์ฝ”์Šค ์š”๋ฆฌ ๊ฐœ์ˆ˜๋ณด๋‹ค ๋งŽ์„ ๋•Œ๋งŒ ์‹คํ–‰
                combi += list(map(''.join, combinations(sorted(o), c)))
        cnt = Counter(combi).most_common() # cnt์— ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ €์žฅ
                        
        if cnt and cnt[0][1] > 1:
            for k, v in cnt:                
                if v == cnt[0][1]:
                    answer.append(k)
                    
    return sorted(answer)

์ฝ”์Šค ์š”๋ž˜ ๊ฐœ์ˆ˜๋งŒํผ ์ฃผ๋ฌธ๋ณ„๋กœ ์กฐํ•ฉํ•˜์—ฌ ๊ฐ€์žฅ ๋งŽ์ด ๋‚˜์˜จ ์กฐํ•ฉ์„ ์„ผ๋‹ค.

์ด ๋•Œ combi์— ์ค‘๋ณต์„ ํฌํ•จํ•˜์—ฌ ์š”๋ฆฌ์˜ ์กฐํ•ฉ์„ ์ €์žฅํ•œ ๋‹ค์Œ,

๋ชจ๋“  ์ฃผ๋ฌธ์„ ๋‹ค ํ™•์ธํ•œ ํ›„ Counter๋ฅผ ์ด์šฉํ•˜์—ฌ cnt์— ๊ฐ ์กฐํ•ฉ์ด ๋ช‡ ๋ฒˆ ๋‚˜์™”๋Š”์ง€ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ €์žฅํ•œ๋‹ค.

 

๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ €์žฅํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— cnt[0][1]๋Š” ์ตœ๋Œ€๊ฐ’์ด ๋˜๋ฏ€๋กœ

์ตœ๋Œ€๊ฐ’์ด 1๋ณด๋‹ค ํด ๊ฒฝ์šฐ ์ตœ๋Œ€๊ฐ’๊ณผ ๊ฐ™์€ ๋นˆ๋„์ˆ˜์˜ ์กฐํ•ฉ์„ answer์— ์ €์žฅํ•œ๋‹ค.

 

728x90

BELATED ARTICLES

more