[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] n์ง„์ˆ˜ ๊ฒŒ์ž„ / ํŒŒ์ด์ฌ / Python / 2018 KAKAO BLIND RECRUITMENT
Algorithm/Programmers

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] n์ง„์ˆ˜ ๊ฒŒ์ž„ / ํŒŒ์ด์ฌ / Python / 2018 KAKAO BLIND RECRUITMENT

728x90
๋ฐ˜์‘ํ˜•

 

 

๐Ÿ’กsolutions )

๐Ÿ’ฌ convert ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ ์ง„์ˆ˜ ๋ณ€ํ™”ํ•˜์˜€์Œ -> ์ด๋•Œ ์žฌ๊ท€ํ•จ์ˆ˜๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์€๋ฐ ์—ฌ๊ธฐ์„  while ๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•ด ๊ตฌํ˜„ํ•˜์˜€์Œ ์ด๋•Œ k๊ฐ€ 0์ผ ๋•Œ๋ฅผ ๊ณ ๋ คํ•˜๊ธฐ ์œ„ํ•ด res ๋ฌธ์ž์—ด์— 0์„ ์ดˆ๊ธฐ๊ฐ’์œผ๋กœ ๋„ฃ์–ด์ฃผ๊ณ  ์‹œ์ž‘ํ•˜์˜€์Œ

 

๐Ÿ‘จ‍๐Ÿ’ปcode )

def convert(k, n):
    base = ''
    remain = '0123456789ABCDEF'
    while k > 0:
        k, mod = divmod(k, n)
        base += remain[mod]
    base = base[::-1]
    return base

def solution(n, t, m, p):
    res = '0'
    for i in range(t*m):
        res += convert(i, n)
    cnt = 0
    answer = ''
    for i in range(p-1, len(res),m):
        cnt += 1
        answer += res[i]
        if cnt == t:
            break
    return answer

 

 

๐Ÿ“Œdescription )

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - [3์ฐจ] n์ง„์ˆ˜ ๊ฒŒ์ž„

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

programmers.co.kr


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

  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 โ‰ฆ 16
  • 0 ๏ผœ t โ‰ฆ 1000
  • 2 โ‰ฆ m โ‰ฆ 100
  • 1 โ‰ฆ p โ‰ฆ m

์ถœ๋ ฅ ํ˜•์‹

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

์ž…์ถœ๋ ฅ ์˜ˆ์ œ

ntmpresult

2 4 2 1 "0111"
16 16 2 1 "02468ACE11111111"
16 16 2 2 "13579BDF01234567"

 





๋ฐ˜์‘ํ˜•