반응형
https://programmers.co.kr/learn/courses/30/lessons/42860
글쓴이의 답
개인적인 풀이 임으로
이것보다 더 좋은 알고리즘은 많음...
이렇게도 풀이하는구나.. 공유하기 위해 올림...
#include <string>
#include <vector>
#include <iostream>
using namespace std;
int dfs(string result, string &name, int location, int count, int &answer, int moveCount) {
if (result[location] != name[location]) {
if (name[location] <= 'M') {
while (name[location] != result[location]) {
count++;
if (count >= answer) {
return 0;
}
result[location] += 1;
}
}
else {
while (name[location] != result[location]) {
count++;
if (count >= answer) {
return 0;
}
if ('A' == result[location]) {
result[location] = 'Z';
}
else {
result[location] -= 1;
}
}
}
}
if (result == name) {
if (answer > count) {
answer = count;
}
return 0;
}
count++;
moveCount++;
if (count >= answer) {
return 0;
}
if (moveCount == result.size()) {
return 0;
}
int nextLocation;
nextLocation = location + 1;
if (nextLocation == result.size()) {
nextLocation = 0;
}
dfs(result, name, nextLocation, count, answer, moveCount);
nextLocation = location - 1;
if (nextLocation == -1) {
nextLocation = result.size() - 1;
}
dfs(result, name, nextLocation, count, answer, moveCount);
count--;
moveCount--;
return 0;
}
int solution(string name) {
int answer = 9999999;
string result = "";
for (int i = 0; i < name.size(); i++) {
result += "A";
}
int count = 0;
int moveCount = 0;
dfs(result, name, 0, count, answer, moveCount);
dfs(result, name, 0, count, answer, moveCount);
return answer;
}
꾸준히 하다보면 실력이 늘겠지..
반응형
'코딩테스트' 카테고리의 다른 글
[프로그래머스][C++] 예상 대진표 (0) | 2022.03.25 |
---|---|
[프로그래머스][C++] 게임 맵 최단거리 (0) | 2022.03.22 |
[프로그래머스][C++] 소수 찾기 (0) | 2022.03.22 |
[프로그래머스][C++] 가장 큰 수 (0) | 2022.03.22 |
[프로그래머스][C++] 프린터 (0) | 2022.03.21 |