๋ฌธ์ ๋งํฌ: programmers.co.kr/learn/courses/30/lessons/42860
ํ์ด
์กฐ์ด์คํฑ์ ์์๋๋ก ์์ง์ด๋ ํ์์ ์ข์ฐ๋ก ์์ง์ด๋ ํ์๋ฅผ ๋ฐ๋ก ์๊ฐํ๋ค.
์์๋๋ก ์์ง์ด๋ ๊ฒ์ ์ํ๋ฒณ์์ A๊ฐ ๊ฐ๊น์ด์ง Z๊ฐ ๊ฐ๊น์ด์ง์ ๋ฐ๋ผ ์ต์ ํ์๋ฅผ ๊ตฌํ๋ค.
์ข์ฐ๋ก ์์ง์ด๋ ๊ฒ์ ์ผ์ชฝ๊ณผ ์ค๋ฅธ์ชฝ ์ค ์ด๋ ์ชฝ์ผ๋ก ๊ฐ์ผ ์ต์๊ฐ ๋๋์ง๋ฅผ ๊ตฌํด์ ํด๊ฒฐํ๋ค. ์ข์ฐ ์ด๋ ํ์(move)์ ์ด๊น๊ฐ์ ์ต๋ ์ด๋ ํ์์ธ len - 1์ด๋ค. ์ดํ i + (len - next) + min(i, len - next)๊ณผ ๋น๊ตํด ์ต์๊ฐ์ ๊ตฌํ๋ค.
ABBAAAABA๋ฅผ ์์๋ก ๊ณ์ฐ์ ์ค๋ช ํ์๋ฉด, i๊ฐ 2์ผ ๋ next๋ 7์ด ๋๋ค. i์์ next๊น์ง ์ผ์ชฝ์ผ๋ก ์ด๋ํ์ ๋์ ๊ฑฐ๋ฆฌ๋ i + (len - next)์ด๋ค. ์ฒ์์ ์ผ์ชฝ์ผ๋ก ๊ฐ์ง ์ค๋ฅธ์ชฝ์ผ๋ก ๊ฐ์ง๋ min(i, len - next)๋ก ๊ตฌํ๋ค. ์ด ์์์์ len - next์ ๊ฐ์ด ๋ ์์ผ๋ฏ๋ก ์ผ์ชฝ์ผ๋ก ๋จผ์ ๊ฐ๋ ๊ฒ์ ํํ๋ค. ๋ฐ๋ผ์ len - next๋ฅผ i์ next์ ๊ฑฐ๋ฆฌ์ ๋ํด์ฃผ์ด ์ผ์ชฝ์ผ๋ก ๊ฐ๋ค๊ฐ ๋์์ค๋ ๊ฒ์ ๊ณ์ฐํด์ค๋ค.
์์ค์ฝ๋
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int solution(string name) {
int answer = 0;
for(auto ch: name) answer += min(ch - 'A', 91 - ch);
int len = name.length();
int move = len - 1;
int next;
for(int i = 0; i < len; i++) {
next = i + 1;
while(next < len && name[next] == 'A') next++;
move = min(move, i + (len - next) + min(i, len - next));
}
answer += move;
return answer;
}
|
cs |
๊ณต๋ถํ ๊ฒ์ ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค. ์์ ํ ๋ถ๋ถ์ด ์๋ค๋ฉด ์๋ ค์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค :)
'Algorithm > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค / C++] ๊ตฌ๋ช ๋ณดํธ (0) | 2021.01.11 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค / C++] ํฐ ์ ๋ง๋ค๊ธฐ (0) | 2021.01.10 |
[ํ๋ก๊ทธ๋๋จธ์ค / C++] ์ฒด์ก๋ณต (0) | 2021.01.10 |
[ํ๋ก๊ทธ๋๋จธ์ค / C++] ์ ๊ตญ์ฌ์ฌ ํ์ด (0) | 2020.08.16 |
[ํ๋ก๊ทธ๋๋จธ์ค / C++] ํ๋ฆฐํฐ ํ์ด (0) | 2020.08.16 |