[νλ‘κ·Έλλ¨Έμ€ / C++] μ‘°μ΄μ€ν±
λ¬Έμ λ§ν¬: programmers.co.kr/learn/courses/30/lessons/42860
μ½λ©ν μ€νΈ μ°μ΅ - μ‘°μ΄μ€ν±
μ‘°μ΄μ€ν±μΌλ‘ μνλ²³ μ΄λ¦μ μμ±νμΈμ. 맨 μ²μμ Aλ‘λ§ μ΄λ£¨μ΄μ Έ μμ΅λλ€. ex) μμ±ν΄μΌ νλ μ΄λ¦μ΄ μΈ κΈμλ©΄ AAA, λ€ κΈμλ©΄ AAAA μ‘°μ΄μ€ν±μ κ° λ°©ν₯μΌλ‘ μμ§μ΄λ©΄ μλμ κ°μ΅λλ€. β² - λ€
programmers.co.kr
νμ΄
μ‘°μ΄μ€ν±μ μμλλ‘ μμ§μ΄λ νμμ μ’μ°λ‘ μμ§μ΄λ νμλ₯Ό λ°λ‘ μκ°νλ€.
μμλλ‘ μμ§μ΄λ κ²μ μνλ²³μμ 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 |
곡λΆν κ²μ μ 리ν λ΄μ©μ λλ€. μμ ν λΆλΆμ΄ μλ€λ©΄ μλ €μ£Όμλ©΄ κ°μ¬νκ² μ΅λλ€ :)