CodeWars 일흔 다섯 번째 문제
Updated:
Consonant value
public static String encryptThis(String text) {
if("".equals(text)) {
return "";
}
String[] textSplit = text.split(" ");
for(int i = 0; i < textSplit.length; i++) {
textSplit[i] = String.valueOf((int)textSplit[i].charAt(0))+ switchChar(textSplit[i].substring(1));
}
return String.join(" " , textSplit);
}
private static String switchChar(String string) {
if(string.length() == 0) {
return "";
} else if(string.length() == 1) {
return string;
} else if(string.length() == 2) {
return string.substring(string.length()-1) + string.substring(0,1);
} else {
return string.substring(string.length()-1) + string.substring(1,string.length()-1) + string.substring(0,1);
}
}
- Best 코드는 다이다믹 코딩으로 짰다.
- 나는 정규식으로 split한 후에 각 단어당 값을 max 값을 비교하였다.
- 그래서 결과적으로 이중 for을 사용한 것인데 아래 Best 코드의 경우 for 한번으로 끝내었다.
- 이건 그래도 코드가 이해가 가서 다행이었다.
- 근데 이정도는 생각할 수 있을 것 같은데 집에서 하니까 머리가 굳은듯
- 그리고 이거 웹사이트에 문제에서는 zodiacs나오고 tdd에서는 zodiac으로 나온다. 즉, 마지막에 s를 빼먹는다. 돌리고 안된다고 골머리 싸지말라. s가 빼먹어서 그런거니 그냥 자신이 추가하면 됨.
public static int solve(final String s) {
int sum = 0, maxsum = 0;
char[] arr = s.toCharArray();
for (char c : arr) {
if ("aeiou".indexOf(c)>=0) sum = 0;
else {
sum += c-'a'+1;
maxsum = Math.max(sum, maxsum);
}
}
return maxsum;
}