๐ŸŒžAlgorithm/๐Ÿ”ฅprogrammers

[programmers] ์ˆœ์œ„ ๊ฒ€์ƒ‰ - 2021 KAKAO BLIND RECRUITMENT

๋ฟŒ์•ผ._. 2021. 9. 14. 22:11

์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์—ฐ์Šต - 2021 KAKAO BLIND RECRUITMENT

 


<์ˆœ์œ„ ๊ฒ€์ƒ‰>

๋ฌธ์ œ ์„ค๋ช…

 

์นด์นด์˜ค๋Š” ํ•˜๋ฐ˜๊ธฐ ๊ฒฝ๋ ฅ ๊ฐœ๋ฐœ์ž ๊ณต๊ฐœ์ฑ„์šฉ์„ ์ง„ํ–‰ ์ค‘์— ์žˆ์œผ๋ฉฐ ํ˜„์žฌ ์ง€์›์„œ ์ ‘์ˆ˜์™€ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
์ด๋ฒˆ ์ฑ„์šฉ์—์„œ ์ง€์›์ž๋Š” ์ง€์›์„œ ์ž‘์„ฑ ์‹œ ์•„๋ž˜์™€ ๊ฐ™์ด 4๊ฐ€์ง€ ํ•ญ๋ชฉ์„ ๋ฐ˜๋“œ์‹œ ์„ ํƒํ•˜๋„๋ก ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

- ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์ฐธ์—ฌ ๊ฐœ๋ฐœ์–ธ์–ด ํ•ญ๋ชฉ์— cpp, java, python ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
- ์ง€์› ์ง๊ตฐ ํ•ญ๋ชฉ์— backend์™€ frontend ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
- ์ง€์› ๊ฒฝ๋ ฅ ๊ตฌ๋ถ„ ํ•ญ๋ชฉ์— junior์™€ senior ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
- ์„ ํ˜ธํ•˜๋Š” ์†Œ์šธํ‘ธ๋“œ๋กœ chicken๊ณผ pizza ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ์— java๋กœ ์ฐธ์—ฌํ–ˆ์œผ๋ฉฐ, backend ์ง๊ตฐ์„ ์„ ํƒํ–ˆ๊ณ , junior ๊ฒฝ๋ ฅ์ด๋ฉด์„œ, ์†Œ์šธํ‘ธ๋“œ๋กœ pizza๋ฅผ ์„ ํƒํ•œ ์‚ฌ๋žŒ ์ค‘ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์ ์ˆ˜๋ฅผ 50์  ์ด์ƒ ๋ฐ›์€ ์ง€์›์ž๋Š” ๋ช‡ ๋ช…์ธ๊ฐ€?

๋ฌผ๋ก  ์ด ์™ธ์—๋„ ๊ฐ ๊ฐœ๋ฐœํŒ€์˜ ์ƒํ™ฉ์— ๋”ฐ๋ผ ์•„๋ž˜์™€ ๊ฐ™์ด ๋‹ค์–‘ํ•œ ํ˜•ํƒœ์˜ ๋ฌธ์˜๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

- ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ์— python์œผ๋กœ ์ฐธ์—ฌํ–ˆ์œผ๋ฉฐ, frontend ์ง๊ตฐ์„ ์„ ํƒํ–ˆ๊ณ , senior ๊ฒฝ๋ ฅ์ด๋ฉด์„œ, ์†Œ์šธํ‘ธ๋“œ๋กœ chicken์„ ์„ ํƒํ•œ ์‚ฌ๋žŒ ์ค‘ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์ ์ˆ˜๋ฅผ 100์  ์ด์ƒ ๋ฐ›์€ ์‚ฌ๋žŒ์€ ๋ชจ๋‘ ๋ช‡ ๋ช…์ธ๊ฐ€?
- ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ์— cpp๋กœ ์ฐธ์—ฌํ–ˆ์œผ๋ฉฐ, senior ๊ฒฝ๋ ฅ์ด๋ฉด์„œ, ์†Œ์šธํ‘ธ๋“œ๋กœ pizza๋ฅผ ์„ ํƒํ•œ ์‚ฌ๋žŒ ์ค‘ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์ ์ˆ˜๋ฅผ 100์  ์ด์ƒ ๋ฐ›์€ ์‚ฌ๋žŒ์€ ๋ชจ๋‘ ๋ช‡ ๋ช…์ธ๊ฐ€?
- backend ์ง๊ตฐ์„ ์„ ํƒํ–ˆ๊ณ , senior ๊ฒฝ๋ ฅ์ด๋ฉด์„œ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์ ์ˆ˜๋ฅผ 200์  ์ด์ƒ ๋ฐ›์€ ์‚ฌ๋žŒ์€ ๋ชจ๋‘ ๋ช‡ ๋ช…์ธ๊ฐ€?
- ์†Œ์šธํ‘ธ๋“œ๋กœ chicken์„ ์„ ํƒํ•œ ์‚ฌ๋žŒ ์ค‘ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์ ์ˆ˜๋ฅผ 250์  ์ด์ƒ ๋ฐ›์€ ์‚ฌ๋žŒ์€ ๋ชจ๋‘ ๋ช‡ ๋ช…์ธ๊ฐ€?
- ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์ ์ˆ˜๋ฅผ 150์  ์ด์ƒ ๋ฐ›์€ ์‚ฌ๋žŒ์€ ๋ชจ๋‘ ๋ช‡ ๋ช…์ธ๊ฐ€?

์ฆ‰, ๊ฐœ๋ฐœํŒ€์—์„œ ๊ถ๊ธˆํ•ดํ•˜๋Š” ๋‚ด์šฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•ํƒœ๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค.
*  [์กฐ๊ฑด]์„ ๋งŒ์กฑํ•˜๋Š” ์‚ฌ๋žŒ ์ค‘ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์ ์ˆ˜๋ฅผ X์  ์ด์ƒ ๋ฐ›์€ ์‚ฌ๋žŒ์€ ๋ชจ๋‘ ๋ช‡ ๋ช…์ธ๊ฐ€?

 

๋ฌธ์ œ

 

์ง€์›์ž๊ฐ€ ์ง€์›์„œ์— ์ž…๋ ฅํ•œ 4๊ฐ€์ง€์˜ ์ •๋ณด์™€ ํš๋“ํ•œ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์ ์ˆ˜๋ฅผ ํ•˜๋‚˜์˜ ๋ฌธ์ž์—ด๋กœ ๊ตฌ์„ฑํ•œ ๊ฐ’์˜ ๋ฐฐ์—ด info,
๊ฐœ๋ฐœํŒ€์ด ๊ถ๊ธˆํ•ดํ•˜๋Š” ๋ฌธ์˜ ์กฐ๊ฑด์ด ๋ฌธ์ž์—ด ํ˜•ํƒœ๋กœ ๋‹ด๊ธด ๋ฐฐ์—ด query๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ,
๊ฐ ๋ฌธ์˜ ์กฐ๊ฑด์— ํ•ด๋‹นํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์˜ ์ˆซ์ž๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ๋ฐฐ์—ด์— ๋‹ด์•„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”.

 

์ œํ•œ ์‚ฌํ•ญ

 

- info ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋Š” 1 ์ด์ƒ 50,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
- info ๋ฐฐ์—ด ๊ฐ ์›์†Œ์˜ ๊ฐ’์€ ์ง€์›์ž๊ฐ€ ์ง€์›์„œ์— ์ž…๋ ฅํ•œ 4๊ฐ€์ง€ ๊ฐ’๊ณผ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์ ์ˆ˜๋ฅผ ํ•ฉ์นœ
"๊ฐœ๋ฐœ์–ธ์–ด ์ง๊ตฐ ๊ฒฝ๋ ฅ ์†Œ์šธํ‘ธ๋“œ ์ ์ˆ˜" ํ˜•์‹์ž…๋‹ˆ๋‹ค.
- query ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋Š” 1 ์ด์ƒ 100,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
- query์˜ ๊ฐ ๋ฌธ์ž์—ด์€ "[์กฐ๊ฑด] X" ํ˜•์‹์ž…๋‹ˆ๋‹ค.

* ๊ทธ ์™ธ ์ž์„ธํ•œ ์ œํ•œ ์‚ฌํ•ญ์€ ๋ณธ ๋ฌธ์ œ ์ฐธ๊ณ 

 

 

๋ฌธ์ œ ํ’€์ด

   - my solution (ํšจ์œจ์„ฑ x)

def solution(info, query):
    answer = []
    
    val=[]
    for i in info: # info: string to list
        val.append(list(i.split()))
    
    qu=[]
    for i in query: # query: string to list
        x=list(i.split())
        for j in range(3): # remove "and"
            x.remove("and")
        qu.append(x)
    
    for i in qu:
        result=0 # count
        for j in val: # - or value same: pass
            if i[0]=='-' or i[0]==j[0]:
                if i[1]=='-' or i[1]==j[1]:
                    if i[2]=='-' or i[2]==j[2]:
                        if i[3]=='-' or i[3]==j[3]:
                            if int(i[4]) <= int(j[4]):
                                result+=1
        answer.append(result) # answer
        
    return answer

 

์ •ํ™•์„ฑ: 40.0

ํšจ์œจ์„ฑ: 0.0

ํ•ฉ๊ณ„: 40.0./100.0

 

1) info: string to list

2) query: string to list

  2-1) and๋Š” ํ•„์š” ์—†์œผ๋ฏ€๋กœ ์ œ๊ฑฐ

3) query์— ๋งž๋Š” info ์ฐพ๊ธฐ

  3-1) ์กฐ๊ฑด์ด "-"์ด๊ฑฐ๋‚˜ ๊ฐ index์˜ ๊ฐ’์ด ๋๊นŒ์ง€ ๊ฐ™์œผ๋ฉด result +1

  3-2) answer์— ์ถ”๊ฐ€


์ƒ๊ฐ๐Ÿค”

 

๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ๋„ ๋ฌธ์ œ ๊ธธ์ด์— ๋น„ํ•ด ๋„ˆ๋ฌด ๊ฐ„๋‹จํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์—ˆ๋‹ค.

์ž์‹  ์žˆ๊ฒŒ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์ œ์ถœํ•˜์˜€์œผ๋‚˜ ์ •ํ™•์„ฑ์€ ๋‹ค ๋งž์•˜์ง€๋งŒ ํšจ์œจ์„ฑ์—์„œ ๋‹ค ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€๋‹ค.

 

ํšจ์œจ์„ฑ์„ ํ†ต๊ณผํ•˜๋ ค๋ฉด ์กฐ๊ธˆ ๋” ๊ณ ๋ฏผํ•ด๋ด์•ผ๊ฒ ๋‹ค.

 

๋‚ด๊ฐ€ ์ƒ๊ฐํ•˜๊ธฐ์— ์ด ๋ฌธ์ œ์˜ ํฌ์ธํŠธ๋Š”

1)

์ด์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค.


์ถœ์ฒ˜: ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์—ฐ์Šต, https://programmers.co.kr/learn/challenges