๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜/์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋ฌธ์ œํ’€์ด

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

by alswlfl 2026. 4. 27.

[๊ทธ๋ฆฌ๋””]-์กฐ์ด์Šคํ‹ฑ

 

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

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก์˜ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr

 

๋ฌธ์ œ ์„ค๋ช…

์กฐ์ด์Šคํ‹ฑ(4๊ฐ€์ง€ ๋ฐฉํ–ฅ)์œผ๋กœ ์•ŒํŒŒ๋ฒณ ์ด๋ฆ„ ์™„์„ฑํ•  ๋•Œ ์กฐ์ž‘ ํšŸ์ˆ˜์˜ ์ตœ์†Ÿ๊ฐ’ ๊ตฌํ•˜๊ธฐ

 

[์กฐ์ด์Šคํ‹ฑ ๋ฐฉํ–ฅ]

โ–ฒ - ๋‹ค์Œ ์•ŒํŒŒ๋ฒณ
โ–ผ - ์ด์ „ ์•ŒํŒŒ๋ฒณ (A์—์„œ ์•„๋ž˜์ชฝ์œผ๋กœ ์ด๋™ํ•˜๋ฉด Z๋กœ)
โ—€ - ์ปค์„œ๋ฅผ ์™ผ์ชฝ์œผ๋กœ ์ด๋™ (์ฒซ ๋ฒˆ์งธ ์œ„์น˜์—์„œ ์™ผ์ชฝ์œผ๋กœ ์ด๋™ํ•˜๋ฉด ๋งˆ์ง€๋ง‰ ๋ฌธ์ž์— ์ปค์„œ)
โ–ถ - ์ปค์„œ๋ฅผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ (๋งˆ์ง€๋ง‰ ์œ„์น˜์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ํ•˜๋ฉด ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž์— ์ปค์„œ)

 

 

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

name return
"JEROEN" 56
"JAN" 23

 

ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ์ดํ•ดํ•˜๋Š”๋ฐ ์–ด๋ ค์›€์ด ์žˆ์—ˆ๋‹ค. ๋งจ ์ฒ˜์Œ์— A ์•ŒํŒŒ๋ฒณ ๋”ฑ ํ•˜๋‚˜๋งŒ ์กด์žฌํ•œ๋‹ค๊ณ  ์ดํ•ดํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ JAN์˜ ๊ฒฝ์šฐ J๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด 9๋ฒˆ ์Šคํ‹ฑ์„ ์œ„๋กœ ์›€์ง์—ฌ์•ผ ํ•˜๋Š” ๊ฒƒ์€ ์ดํ•ด๊ฐ€ ๋์ง€๋งŒ, ๊ทธ ๋‹ค์Œ A๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์กฐ์ž‘์„ ์™œ ์•ˆํ•˜๋Š”์ง€ ์ดํ•ด๊ฐ€ ๋˜์ง€ ์•Š์•˜๋‹ค..

์—ฌ๋Ÿฌ ๋ธ”๋กœ๊ทธ ๋‚ด์šฉ๋“ค์˜ ๋„์›€์„ ๋ฐ›์•„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋‹ค!

 

์šฐ์„ , ๋งจ ์ฒ˜์Œ์— A ์•ŒํŒŒ๋ฒณ ํ•˜๋‚˜๋งŒ ์กด์žฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ name์˜ ๊ธธ์ด๋งŒํผ A๊ฐ€ ์ฑ„์›Œ์ง„๊ฑฐ์˜€๋‹ค..! ์ฆ‰, JAN์€ ์„ธ๊ธ€์ž๋‹ˆ๊นŒ AAA ์ด๋ ‡๊ฒŒ ์ดˆ๊ธฐํ™”๊ฐ€ ๋˜์–ด์žˆ๋‹ค!

 

๊ทธ๋ฆฌ๊ณ  ์กฐ์ด์Šคํ‹ฑ์„ ๋ฐ˜๋“œ์‹œ ์›€์ง์—ฌ์•ผ ํ•˜๋Š” ํšŸ์ˆ˜๋Š” ํฌ๊ฒŒ 2๊ฐ€์ง€๋กœ ๋‚˜๋‰œ๋‹ค!

1. ์•ŒํŒŒ๋ฒณ ์ฐพ๊ธฐ → ์กฐ์ด์Šคํ‹ฑ โ–ฒ/โ–ผ ๋กœ 'A' -> ํŠน์ • ๋ฌธ์ž์—ด ๋ณ€๊ฒฝ

2. ์œ„์น˜ ์ด๋™ํ•˜๊ธฐ → ์กฐ์ด์Šคํ‹ฑ โ–ถ๏ธŽ/โ—€๏ธŽ ๋กœ ์ปค์„œ ์œ„์น˜ ๋ณ€๊ฒฝํ•˜๊ธฐ

 

์—ฌ๊ธฐ์„œ, ๊ฐ ์ตœ์†Ÿ๊ฐ’์„ ์ฐพ๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

1. ์•ŒํŒŒ๋ฒณ ์ฐพ๊ธฐ → ์กฐ์ด์Šคํ‹ฑ โ–ฒ/โ–ผ ๋กœ 'A' -> ํŠน์ • ๋ฌธ์ž์—ด๋กœ ๋ณ€๊ฒฝ

1-1) 'A' -> ํŠน์ • ๋ฌธ์ž์—ด ๋ณ€๊ฒฝ (โ–ฒ ๋ฐฉํ–ฅ์œผ๋กœ ๋ฐ”๊พธ๊ธฐ)

1-2) 'A' -> 'Z'๋กœ ๋งŒ๋“ค๊ธฐ -> ํŠน์ • ๋ฌธ์ž์—ด๋กœ ๋ณ€๊ฒฝ (โ–ผ ๋ฐฉํ–ฅ์œผ๋กœ ๋ฐ”๊พธ๊ธฐ)

์ฆ‰, JAN์˜ ๊ฒฝ์šฐ A -> J์œผ๋กœ ๋ฐ”๊ฟ€ ๋•Œ ์•ŒํŒŒ๋ฒณ ์ฐพ๋Š” ๋ฐฉ๋ฒ•์€

1-1) 'A' -> 'J' : ์ด โ–ฒ ์Šคํ‹ฑ 9๋ฒˆ ์›€์ง์ด๊ธฐ

1-2) 'A' -> 'Z' -> 'J' : ์ด 17๋ฒˆ ์›€์ง์ด๊ธฐ

 

2. ์œ„์น˜ ์ด๋™ํ•˜๊ธฐ → ์กฐ์ด์Šคํ‹ฑ โ–ถ๏ธŽ/โ—€๏ธŽ ๋กœ ์ปค์„œ ์œ„์น˜ ๋ณ€๊ฒฝํ•˜๊ธฐ

2-1) 0๋ฒˆ ์ธ๋ฑ์Šค๋ถ€ํ„ฐ N๋ฒˆ ์ธ๋ฑ์Šค๊นŒ์ง€ ์ด๋™ → N-1

2-2) 0๋ฒˆ ์ธ๋ฑ์Šค๋ถ€ํ„ฐ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ํ•˜๋‹ค๊ฐ€ 'A'๋ฅผ ๋งŒ๋‚˜๋ฉด ๋‹ค์‹œ ์™ผ์ชฝ์œผ๋กœ ์ด๋™ํ•˜๊ธฐ → index*2 + (len-next)

2-3) ๋งจ ๋’ค๋ถ€ํ„ฐ ์™ผ์ชฝ์œผ๋กœ ์ด๋™ํ•˜๋‹ค๊ฐ€ 'A'๋ฅผ ๋งŒ๋‚˜๋ฉด ๋‹ค์‹œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ํ•˜๊ธฐ → (len-next)*2 + index

 

ex) JAN์˜ ๊ฒฝ์šฐ

 

์ฝ”๋“œ

function solution(name) {
    let updown = 0;
    const len = name.length;
    let move = len-1; // 2-1
    
    for(let i=0; i<len; i++) {
        // 1. โ–ฒ/โ–ผ ๋กœ ์•ŒํŒŒ๋ฒณ ๋ฐ”๊พธ๋Š” ์กฐ์ž‘
        // - A๋ถ€ํ„ฐ ๋ฐ”๊พธ๋Š” ๋ฐฉ๋ฒ• or Z๋กœ ์ด๋™(โ–ผ) ํ›„ ํ•ด๋‹น ์•ŒํŒŒ๋ฒณ์œผ๋กœ ๋ฐ”๊พธ๋Š” ๋ฐฉ๋ฒ•
        updown += Math.min(name[i].charCodeAt(0)-65, 90-name[i].charCodeAt(0)+1);
        
        // 2. โ—€/โ–ถ ๋กœ ์ปค์„œ ์˜ฎ๊ธฐ๋Š” ์กฐ์ž‘
        // 2-1) 0๋ฒˆ์งธ ์ธ๋ฑ์Šค๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค๊นŒ์ง€ ์ˆœ์ฐจ๋กœ ์˜ฎ๊ธฐ๋Š” ๋ฐฉ๋ฒ•
        // 2-2) ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ํ•˜๋‹ค๊ฐ€, A๋งŒ๋‚˜๋ฉด ๋’ค๋กœ ๊ฐ€๋Š” ๋ฐฉ๋ฒ•
        // 2-3) ๋’ค๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋‹ค๊ฐ€, A๋งŒ๋‚˜๋ฉด ์•ž์œผ๋กœ ๊ฐ€๋Š” ๋ฐฉ๋ฒ•
        let next = i+1;
        while(next < len && name[next] === 'A') {
            next++; // ์—ฐ์†๋œ A๊ฐœ์ˆ˜
        }
        const right = (i*2) + len-next;
        const reverse = (len-next)*2 + i;
        move = Math.min(move, right, reverse);
    }
    
    return updown + move;
}

์ฐธ๊ณ  ์‚ฌ์ดํŠธ

https://html-jc.tistory.com/650

 

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] level.2 ์กฐ์ด์Šคํ‹ฑ โ˜…

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

html-jc.tistory.com