ํ๋ก๊ทธ๋๋จธ์ค
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
'์๊ณ ๋ฆฌ์ฆ > ์ฝ๋ฉํ ์คํธ ๋ฌธ์ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [ํ๋ก๊ทธ๋๋จธ์ค-258711] ๋๋๊ณผ ๋ง๋ ๊ทธ๋ํ (0) | 2026.05.27 |
|---|---|
| [ํ๋ก๊ทธ๋๋จธ์ค-49191] ์์ (0) | 2026.05.17 |
| [ํ๋ก๊ทธ๋๋จธ์ค-1843] ์ฌ์น์ฐ์ฐ (0) | 2026.05.02 |
| [ํ๋ก๊ทธ๋๋จธ์ค-42895] N์ผ๋ก ํํ (0) | 2026.04.30 |
| [๋ฐฑ์ค-35289] ๊ดํธ ๋ฌธ์์ด ์นด๋ (0) | 2026.04.14 |