๐Ÿค–/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค | Lv2] ์กฐ์ด์Šคํ‹ฑ (Python)

sssbin 2023. 4. 11. 23:04

 

https://school.programmers.co.kr/learn/courses/30/lessons/42860

 

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

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

programmers.co.kr

 

1. ์ƒํ•˜์ด๋™ ๋”ํ•˜๊ธฐ (A-Z)

- ์•„์Šคํ‚ค์ฝ”๋“œ๋ฅผ ์ด์šฉํ•ด ์•ž์—์„œ๋ถ€ํ„ฐ ๋”ํ•œ ๊ฒƒ๊ณผ ๋’ค์—์„œ๋ถ€ํ„ฐ ๋”ํ•œ ๊ฒƒ ์ค‘ ์ตœ์†Ÿ๊ฐ’์„ ์ฐพ์•„์ค€๋‹ค.

 

2. ์ขŒ์šฐ์ด๋™์˜ ์ตœ์†Œ ๊ตฌํ•˜๊ธฐ

 1) 'A'๊ฐ€ ์—ฐ์†ํ•ด์„œ ๋‚˜์˜ค๋Š” ์œ„์น˜๋ฅผ ์ฐพ์•„์ค€๋‹ค.

   - temp ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค์–ด์„œ ์—ฐ์†๋œ ์ธ๋ฑ์Šค๋“ค์„ ๋ฆฌ์ŠคํŠธ๋กœ ๋ฌถ์–ด์„œ ๋„ฃ์–ด์คฌ๋‹ค.

 2) ๊ธฐ์กด ๋ฐฉ์‹(์•ž์œผ๋กœ ์ญ‰ ๊ฐ€๊ธฐ) / ์•ž์œผ๋กœ ๊ฐ”๋‹ค๊ฐ€ ๋’ค๋กœ ๋Œ์•„๊ฐ€๊ธฐ / ๋’ค๋กœ ๊ฐ”๋‹ค๊ฐ€ ์•ž์œผ๋กœ ๋Œ์•„๊ฐ€๊ธฐ ์ค‘ ์ตœ์†Ÿ๊ฐ’

   - ๊ธฐ์กด ๋ฐฉ์‹(์•ž์œผ๋กœ ์ญ‰ ๊ฐ€๊ธฐ): len(name) - 1

   - ์•ž์œผ๋กœ ๊ฐ”๋‹ค๊ฐ€ ๋’ค๋กœ ๋Œ์•„๊ฐ€๊ธฐ: ('A'๊ฐ€ ์ฒ˜์Œ ๋‚˜์˜ค๋Š” ๊ณณ ์•ž์˜ ์•ŒํŒŒ๋ฒณ ๊ฐœ์ˆ˜ - 1) * 2 + 'A'๊ฐ€ ๋งˆ์ง€๋ง‰์œผ๋กœ ๋‚˜์˜ค๋Š” ๊ณณ ๋’ค์˜ ์•ŒํŒŒ๋ฒณ ๊ฐœ์ˆ˜

   - ๋’ค๋กœ ๊ฐ”๋‹ค๊ฐ€ ์•ž์œผ๋กœ ๋Œ์•„๊ฐ€๊ธฐ: 'A'๊ฐ€ ๋งˆ์ง€๋ง‰์œผ๋กœ ๋‚˜์˜ค๋Š” ๊ณณ ๋’ค์˜ ์•ŒํŒŒ๋ฒณ ๊ฐœ์ˆ˜ * 2 + ('A'๊ฐ€ ์ฒ˜์Œ ๋‚˜์˜ค๋Š” ๊ณณ ์•ž์˜ ์•ŒํŒŒ๋ฒณ ๊ฐœ์ˆ˜ - 1)

 

3. answer = 1 + 2

 

# ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค 42860: ์กฐ์ด์Šคํ‹ฑ

def solution(name):
    answer = 0
    for i in name: # ์ƒํ•˜์ด๋™ ๋จผ์ € ๋‹ค ๋”ํ•˜๊ธฐ
        answer += min(ord(i) - 65, 91 - ord(i))
    
    temp = [] # ์—ฐ์†๋œ A์˜ ์ธ๋ฑ์Šค๋ฅผ ์ €์žฅํ•  ๋ฆฌ์ŠคํŠธ
    for i in range(1, len(name)):
        if name[i] == 'A':
            if temp and temp[-1][-1] == i-1:
                temp[-1].append(i)
                continue
            temp.append([i])
    
    res = len(name) - 1 # ๊ธฐ์กด ๋ฐฉ์‹
    for i in temp:
        # (๊ธฐ์กด ๋ฐฉ์‹, ์•ž์œผ๋กœ ๊ฐ”๋‹ค๊ฐ€ ๋’ค๋กœ ๋Œ์•„๊ฐ€๊ธฐ, ๋’ค๋กœ ๊ฐ”๋‹ค๊ฐ€ ์•ž์œผ๋กœ ๋Œ์•„๊ฐ€๊ธฐ)์˜ ์ตœ์†Ÿ๊ฐ’
        res = min(res, 2 * (i[0] - 1) + len(name) - 1 - i[-1], 2 * (len(name) - 1 - i[-1]) + i[0] - 1)
            
    return answer + res

 

์˜ˆ์™ธ ์ผ€์ด์Šค๋ฅผ ์žก๊ธฐ๊ฐ€ ํž˜๋“ค์—ˆ๋˜ ๋ฌธ์ œ๋‹ค.

๋งž๋Š” ๊ฑฐ ๊ฐ™์€๋ฐ ์ž๊พธ ์‹คํŒจํ•ด์„œ ์งˆ๋ฌธํ•˜๊ธฐ๋ฅผ ๋’ค์ ธ์„œ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๋“ค์„ ๋ชจ์กฐ๋ฆฌ ๋„ฃ์–ด๋ณด๊ณ  ์ˆ˜์ •ํ•˜๋ฉด์„œ ์„ฑ๊ณตํ–ˆ๋‹ค..