Coding Test/Algorithm

Programmers] ๋‘˜๋งŒ์˜ ์•”ํ˜ธ

littlezero48 2023. 2. 21. 17:14

๐Ÿ“Œ ํŒŒ์ด์ฌ ์œผ๋กœ ํ’€์ด

 

๐Ÿ“Œ ๋ฌธ์ œ ๋งํฌ :

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

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

programmers.co.kr

 

๐Ÿ“Œ ๋ฌธ์ œ ์„ค๋ช… :

๋‘ ๋ฌธ์ž์—ด s์™€ skip, ๊ทธ๋ฆฌ๊ณ  ์ž์—ฐ์ˆ˜ index๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ, ๋‹ค์Œ ๊ทœ์น™์— ๋”ฐ๋ผ ๋ฌธ์ž์—ด์„ ๋งŒ๋“ค๋ ค ํ•ฉ๋‹ˆ๋‹ค. ์•”ํ˜ธ์˜ ๊ทœ์น™์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋ฌธ์ž์—ด s์˜ ๊ฐ ์•ŒํŒŒ๋ฒณ์„ index๋งŒํผ ๋’ค์˜ ์•ŒํŒŒ๋ฒณ์œผ๋กœ ๋ฐ”๊ฟ”์ค๋‹ˆ๋‹ค.
  • index๋งŒํผ์˜ ๋’ค์˜ ์•ŒํŒŒ๋ฒณ์ด z๋ฅผ ๋„˜์–ด๊ฐˆ ๊ฒฝ์šฐ ๋‹ค์‹œ a๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค.
  • skip์— ์žˆ๋Š” ์•ŒํŒŒ๋ฒณ์€ ์ œ์™ธํ•˜๊ณ  ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด s = "aukks", skip = "wbqd", index = 5์ผ ๋•Œ, a์—์„œ 5๋งŒํผ ๋’ค์— ์žˆ๋Š” ์•ŒํŒŒ๋ฒณ์€ f์ง€๋งŒ [b, c, d, e, f]์—์„œ 'b'์™€ 'd'๋Š” skip์— ํฌํ•จ๋˜๋ฏ€๋กœ ์„ธ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 'b', 'd'๋ฅผ ์ œ์™ธํ•˜๊ณ  'a'์—์„œ 5๋งŒํผ ๋’ค์— ์žˆ๋Š” ์•ŒํŒŒ๋ฒณ์€ [c, e, f, g, h] ์ˆœ์„œ์— ์˜ํ•ด 'h'๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๋‚˜๋จธ์ง€ "ukks" ๋˜ํ•œ ์œ„ ๊ทœ์น™๋Œ€๋กœ ๋ฐ”๊พธ๋ฉด "appy"๊ฐ€ ๋˜๋ฉฐ ๊ฒฐ๊ณผ๋Š” "happy"๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

๋‘ ๋ฌธ์ž์—ด s์™€ skip, ๊ทธ๋ฆฌ๊ณ  ์ž์—ฐ์ˆ˜ index๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ ์œ„ ๊ทœ์น™๋Œ€๋กœ s๋ฅผ ๋ณ€ํ™˜ํ•œ ๊ฒฐ๊ณผ๋ฅผ returnํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

 

๐Ÿ“Œ ์ œํ•œ ์‚ฌํ•ญ

  • 5 ≤ s์˜ ๊ธธ์ด ≤ 50
  • 1 ≤ skip์˜ ๊ธธ์ด ≤ 10
  • s์™€ skip์€ ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
    • skip์— ํฌํ•จ๋˜๋Š” ์•ŒํŒŒ๋ฒณ์€ s์— ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • 1 ≤ index ≤ 20

 

๐Ÿ“Œ ์ž…์ถœ๋ ฅ ์˜ˆ


์ถ”์ธก) 

1. ๊ฐ ์•ŒํŒŒ๋ฒณ์„ ์ธ๋ฑ์Šค ๋’ค 5๊ฐœ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์•ผํ•˜๋Š”๋ฐ ์ด๊ฑด ์•„์Šคํ‚ค์ฝ”๋“œ๋ฅผ ์ด์šฉํ•ด์„œ ์ˆซ์ž๋กœ ๋ฐ”๊พธ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌ

2. s์˜ ์•ŒํŒŒ๋ฒณ์˜ ์ˆซ์ž์™€ ์ธ๋ฑ์Šค 5๊ฐœ ๋’ค์˜ ์ˆซ์ž ์‚ฌ์ด์— skip์ด ์ˆซ์ž๊ฐ€ ๋ช‡๊ฐœ๊ฐ€ ํฌํ•จ๋˜๋Š”์ง€๋ฅผ ํŒ๋‹จํ•˜์—ฌ ํฌํ•จ๋˜๋Š” ๊ฐœ์ˆ˜ ๋งŒํผ์„ ๋”ํ•จ.

3. skip ๊ฒฝ์šฐ ๊ฐ๊ฐ์˜ ์•ŒํŒŒ๋ฒณ์„ ๋ชจ๋‘ ์•„์Šคํ‚ค ์ฝ”๋“œ ์ฒ˜๋ฆฌํ•ด ๋”ฐ๋กœ ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค์–ด ํŒ๋‹จํ• ๋•Œ ์‚ฌ์šฉ.

4. ์•ŒํŒŒ๋ฒณ z (122) ์ดˆ๊ณผํ•˜๋ฉด ๊ทธ ์ˆซ์ž์—์„œ 96์„ ๋นผ๊ณ  26 (์•ŒํŒŒ๋ฒณ๊ฐœ์ˆ˜)์œผ๋กœ ๋‚˜๋ˆด์„๋•Œ ๋‚˜๋จธ์ง€๋ฅผ ๋‹ค์‹œ 96์— ๋”ํ•ด์ค€๋‹ค. (์ดˆ๊ณผ ์‹œ ์ตœ๋Œ€ index 20 + skip๊ธธ์ด 10๋กœ 26์œผ๋กœ ๋‚˜๋ˆ„๋Š” ์ฒ˜๋ฆฌ๋Š” ํ•„์š”)

 

 

 

์†Œ์Šค์ฝ”๋“œ) 

* 1์ฐจ) ์‹คํŒจ. ๋‹จ 5์  ๐Ÿคฎ

def solution(s, skip, index):
    sk = [ ord(one) for one in skip ]
    s_origin = [ ord(one) for one in s]
    s_plus = [ ord(one) + index for one in s]
    cnt = 0
    result = ""

    sk.sort()

    for i in range(len(s_plus)) :
        for one in sk :
            if s_origin[i] <= one <= s_plus[i]:
                cnt += 1

        sum = s_plus[i] + cnt
        if sum > 122 :
            sum = 96 + ((sum - 96) % 26)

        result += chr(sum)
        cnt = 0

    return result

2์ฐจ) ์„ฑ๊ณต

def solution(s, skip, index):
    alphabet = "abcdefghijklmnopqrstuvwxyz"
    result = ""

    for i in skip :
        alphabet = alphabet.replace(i,'')

    for one in s :
        result += alphabet[(alphabet.find(one) + index) % len(alphabet)]

    return result

 

๋ฆฌ๋ทฐ) 

์ˆซ์ž๋กœ ํ•ด๋ณผ๋ ค๋‹ค๊ฐ€ ์ฐจ๋ผ๋ฆฌ ์ธ๋ฑ์Šค๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒŒ ๋น ๋ฅผ๊ฑฐ ๊ฐ™์•„์„œ ๋ณ€๊ฒฝ.

์ผ๋‹จ skip ๋ฌธ์ž๋“ค์„ ๋‹ค ์ฒ˜์Œ๋ถ€ํ„ฐ ์ง€์šฐ๊ณ  s์˜ ์ธ๋ฑ์Šค๋ฅผ skip์„ ์ง€์šด ์•ŒํŒŒ๋ฒณ๋“ค ์‚ฌ์ด์—์„œ ์ธ๋ฑ์Šค๋ฅผ ์ฐพ์•„ ๊ฑฐ๊ธฐ์„œ 5๋ฅผ ๋”ํ•œ ๊ฐ’์„ ์ฐพ๋Š”๋‹ค. ์ด๋•Œ skip๋“ค์„ ์ง€์šด ์•ŒํŒŒ๋ฒณ ๊ธธ์ด ๋ณด๋‹ค ๋„˜์–ด๊ฐ€๋ฉด ๊ธธ์ด ๋งŒํผ์„ ๋‚˜๋ˆ„์–ด ์ฒ˜์Œ์œผ๋กœ ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ๊ฒŒ ์ฒ˜๋ฆฌํ–ˆ๋‹ค.

์Šคํ‚ต์„ ๋จผ์ € ์ฒ˜๋ฆฌํ•˜๊ณ  5์”ฉ ๋”ํ•œ ๊ฐ’์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ’€์ด!!!