๐ŸŒžAlgorithm/๐Ÿ”ฅprogrammers

[programmers] [3์ฐจ] n์ง„์ˆ˜ ๊ฒŒ์ž„ - 2018 KAKAO BLIND RECRUITMENT

๋ฟŒ์•ผ._. 2021. 9. 8. 14:03

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

 


<[3์ฐจ] n์ง„์ˆ˜ ๊ฒŒ์ž„>

๋ฌธ์ œ ์„ค๋ช…

 

ํŠœ๋ธŒ๊ฐ€ ํ™œ๋™ํ•˜๋Š” ์ฝ”๋”ฉ ๋™์•„๋ฆฌ์—์„œ๋Š” ์ „ํ†ต์ ์œผ๋กœ ํ•ด์˜ค๋Š” ๊ฒŒ์ž„์ด ์žˆ๋‹ค.
์ด ๊ฒŒ์ž„์€ ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์ด ๋‘ฅ๊ธ€๊ฒŒ ์•‰์•„์„œ ์ˆซ์ž๋ฅผ ํ•˜๋‚˜์”ฉ ์ฐจ๋ก€๋Œ€๋กœ ๋งํ•˜๋Š” ๊ฒŒ์ž„์ธ๋ฐ, ๊ทœ์น™์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

1. ์ˆซ์ž๋ฅผ 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ์ฐจ๋ก€๋Œ€๋กœ ๋งํ•œ๋‹ค.
์ฒซ ๋ฒˆ์งธ ์‚ฌ๋žŒ์€ 0, ๋‘ ๋ฒˆ์งธ ์‚ฌ๋žŒ์€ 1, … ์—ด ๋ฒˆ์งธ ์‚ฌ๋žŒ์€ 9๋ฅผ ๋งํ•œ๋‹ค.
2. 10 ์ด์ƒ์˜ ์ˆซ์ž๋ถ€ํ„ฐ๋Š” ํ•œ ์ž๋ฆฌ์”ฉ ๋Š์–ด์„œ ๋งํ•œ๋‹ค.
์ฆ‰ ์—ดํ•œ ๋ฒˆ์งธ ์‚ฌ๋žŒ์€ 10์˜ ์ฒซ ์ž๋ฆฌ์ธ 1, ์—ด๋‘ ๋ฒˆ์งธ ์‚ฌ๋žŒ์€ ๋‘˜์งธ ์ž๋ฆฌ์ธ 0์„ ๋งํ•œ๋‹ค.

์ด๋ ‡๊ฒŒ ๊ฒŒ์ž„์„ ์ง„ํ–‰ํ•  ๊ฒฝ์šฐ,
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 0, 1, 1, 1, 2, 1, 3, 1, 4, …
์ˆœ์œผ๋กœ ์ˆซ์ž๋ฅผ ๋งํ•˜๋ฉด ๋œ๋‹ค.

ํ•œํŽธ ์ฝ”๋”ฉ ๋™์•„๋ฆฌ ์ผ์›๋“ค์€ ์ปดํ“จํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š” ์‚ฌ๋žŒ๋‹ต๊ฒŒ ์ด์ง„์ˆ˜๋กœ ์ด ๊ฒŒ์ž„์„ ์ง„ํ–‰ํ•˜๊ธฐ๋„ ํ•˜๋Š”๋ฐ, ์ด ๊ฒฝ์šฐ์—๋Š”
0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, …
์ˆœ์œผ๋กœ ์ˆซ์ž๋ฅผ ๋งํ•˜๋ฉด ๋œ๋‹ค.

์ด์ง„์ˆ˜๋กœ ์ง„ํ–‰ํ•˜๋Š” ๊ฒŒ์ž„์— ์ต์ˆ™ํ•ด์ ธ ์งˆ๋ ค๊ฐ€๋˜ ์‚ฌ๋žŒ๋“ค์€ ์ข€ ๋” ๋‚œ์ด๋„๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•ด ์ด์ง„๋ฒ•์—์„œ
์‹ญ์œก ์ง„๋ฒ•๊นŒ์ง€ ๋ชจ๋“  ์ง„๋ฒ•์œผ๋กœ ๊ฒŒ์ž„์„ ์ง„ํ–‰ํ•ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค.
์ˆซ์ž ๊ฒŒ์ž„์ด ์ต์ˆ™ํ•˜์ง€ ์•Š์€ ํŠœ๋ธŒ๋Š” ๊ฒŒ์ž„์— ์ ธ์„œ ๋ฒŒ์น™์„ ๋ฐ›๋Š” ๊ตด์š•์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด,
์ž์‹ ์ด ๋งํ•ด์•ผ ํ•˜๋Š” ์ˆซ์ž๋ฅผ ์Šค๋งˆํŠธํฐ์— ๋ฏธ๋ฆฌ ์ถœ๋ ฅํ•ด์ฃผ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค๋ ค๊ณ  ํ•œ๋‹ค.
ํŠœ๋ธŒ์˜ ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌํ˜„ํ•˜๋ผ.

 

์ž…๋ ฅ ํ˜•์‹

 

์ง„๋ฒ• n, ๋ฏธ๋ฆฌ ๊ตฌํ•  ์ˆซ์ž์˜ ๊ฐœ์ˆ˜ t, ๊ฒŒ์ž„์— ์ฐธ๊ฐ€ํ•˜๋Š” ์ธ์› m, ํŠœ๋ธŒ์˜ ์ˆœ์„œ p๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.
2 โ‰ฆ n โ‰ฆ 160 
0๏ผœ t โ‰ฆ 1000
2 โ‰ฆ m โ‰ฆ 100
1 โ‰ฆ p โ‰ฆ m

 

์ถœ๋ ฅํ˜•์‹

 

ํŠœ๋ธŒ๊ฐ€ ๋งํ•ด์•ผ ํ•˜๋Š” ์ˆซ์ž t๊ฐœ๋ฅผ ๊ณต๋ฐฑ ์—†์ด ์ฐจ๋ก€๋Œ€๋กœ ๋‚˜ํƒ€๋‚ธ ๋ฌธ์ž์—ด.
๋‹จ, 10~15๋Š” ๊ฐ๊ฐ ๋Œ€๋ฌธ์ž A~F๋กœ ์ถœ๋ ฅํ•œ๋‹ค.

 

 

๋ฌธ์ œ ํ’€์ด

   - my solution

def solution(n, t, m, p):
    answer = ''
    
    tempstr = '0'
    i=1
    dic={10:'A', 11:'B', 12:'C', 13:'D', 14:'E', 15:'F'} # 10~15๋Š” ๊ฐ๊ฐ ๋Œ€๋ฌธ์ž A~F๋กœ ์ถœ๋ ฅ
        
    # n์ง„๋ฒ• ๊ตฌํ•˜๊ธฐ
    while True:
        temp = ''
        k = i
        while True:
            x, y = divmod(k, n)
            if y >= 10: # 10 ์ด์ƒ์ด๋ฉด A~F๋กœ ์ถœ๋ ฅ
                temp += dic[y]
            else: # ๋‚˜๋จธ์ง€ ๋ฌธ์ž์—ด๋กœ ์ถœ๋ ฅ
                temp += str(y)
            k = x
            if x <= 0: #๋
                break
        i+=1
        tempstr+=temp[::-1] # ๋’ค์ง‘์–ด์„œ ์ถ”๊ฐ€
        if len(tempstr)>=(t*m): # ์ž๋ฆฌ์ˆ˜๋งŒํผ
            break

    for i in range(len(tempstr)): # ์ž๊ธฐ ์ฐจ๋ก€์— ๋งํ•  ์ˆซ์ž 
        if i%m==p-1:
            answer+=tempstr[i]
        if len(answer)==t:
            break
                
        
    return answer

 

์ง„๋ฒ• ๋ณ€ํ™˜!! ์ฐพ์•„๋ณด๋‹ˆ divmod๋กœ ๋ชซ๊ณผ ๋‚˜๋จธ์ง€๋ฅผ ๊ตฌํ•ด n์ง„๋ฒ•์œผ๋กœ ํ•˜๊ธธ๋ž˜... 

divmod๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด๋ณด์•˜๋‹ค.

 

1) ์ˆซ์ž ๋ช‡๊นŒ์ง€ n์ง„๋ฒ•์œผ๋กœ ๊ตฌํ•˜๋ž€ ๋ง ๋Œ€์‹  ๊ธธ์ด๋ฅผ ์•Œ๋ ค์ฃผ์—ˆ์œผ๋ฏ€๋กœ while ๋ฌธ์„ ์‚ฌ์šฉ

  1-1) ์ˆซ์ž k๋ฅผ n์ง„๋ฒ•์œผ๋กœ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด divmod๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋ฏ€๋กœ while๋ฌธ ์‚ฌ์šฉ

       โ‘  10 ์ด์ƒ์ด๋ฉด dic์— ๋ฏธ๋ฆฌ ์ €์žฅํ•ด๋‘” ๊ฐ’์„ ๋ฌธ์ž์—ด์— ๋„ฃ๊ณ , 10๋ณด๋‹ค ์ž‘์œผ๋ฉด ๊ทธ ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ๋ฌธ์ž์—ด์— ๋„ฃ์Œ

       โ‘ก ์ข…๋ฃŒ ์กฐ๊ฑด: ๋ชซ์ด 0๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ๊ฒฝ์šฐ

  1-2) ๋‚˜๋จธ์ง€๋กœ ๊ตฌํ•œ n์ง„๋ฒ•์€ ๋’ค์ง‘์–ด์„œ ์ถ”๊ฐ€

  1-3) ์ข…๋ฃŒ ์กฐ๊ฑด: ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๊ฐ€ (๋ฏธ๋ฆฌ ๊ตฌํ•  ์ˆซ์ž์˜ ๊ฐœ์ˆ˜) * (๊ฒŒ์ž„์— ์ฐธ๊ฐ€ํ•˜๋Š” ์ธ์›) ์ด์ƒ์ผ ๊ฒฝ์šฐ

 

2) ์ˆซ์ž k๋ฅผ n์ง„๋ฒ•์œผ๋กœ ๋ณ€ํ™˜ํ•œ ๋ฌธ์ž์—ด์„ ๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•˜์—ฌ ์ž๊ธฐ ์ฐจ๋ก€์— ๋งํ•  ์ˆซ์ž๋งŒ answer์— ์ถ”๊ฐ€

 


์ƒ๊ฐ๐Ÿค”

 

 

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

1) ์ˆซ์ž k๋ฅผ n์ง„๋ฒ•์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•

2) ๋ฏธ๋ฆฌ ๊ตฌํ•  ์ˆซ์ž์˜ ๊ฐœ์ˆ˜๋งŒํผ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•

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


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