Dubstep
xxxxxxxxxx
For example, a song with words "I AM X" can transform into a dubstep remix as "WUBWUBIWUBAMWUBWUBX" and cannot transform into "WUBWUBIAMWUBX".
Recently, Jonny has heard Polycarpus's new dubstep track, but since he isn't into modern music, he decided to find out what was the initial song that Polycarpus remixed. Help Jonny restore the original song.
Input
The input consists of a single non-empty string, consisting only of uppercase English letters, the string's length doesn't exceed 200 characters
Output
Return the words of the initial song that Polycarpus used to make a dubsteb remix. Separate the words with a space.
Examples
songDecoder("WUBWEWUBAREWUBWUBTHEWUBCHAMPIONSWUBMYWUBFRIENDWUB")
// => WE ARE THE CHAMPIONS MY FRIEND
첫 문제라 그런지 단순하다.
"WUB"로 구분된 문장이 주어지는데, WUB는 공백과 같다. 하지만 여러개를 붙여쓰더라도 앞 뒤는 trim되고, 중간에선 하나의 공백으로 인정된다. (위 문제의 Examples 참조)
우선은 내 풀이.
xpublic class Dubstep {
public static String SongDecoder(String song) {
String answer = "";
String[] words = song.split("WUB");
for (int i = 0; i < words.length; i++)
if (!words[i].equals("")) answer += words[i] + " ";
return answer.substring(0, answer.length() - 1);
}
}
"WUB"로 split 해서 단어를 공백으로 연결해줬다. 그리고 마지막 공백은 제외.
그냥 무난무난한 초보자 실력의 풀이다.
이제 codewars 홈페이지에 있던 다른 사람들의 풀이를 소개해보겠다. 한 줄로 푼 사람도 많았고, 나보다 길게 푼 사람들도 있었다.
내가 풀어본 문제에 다른 풀이법을 본다는 게 되게 재밌었는데, 짧은 것도 긴 것도 재밌는게 많았지만 내가 귀찮은 관계로 하나만 공개하겠다.
xxxxxxxxxx
public class Dubstep {
public static String SongDecoder (String song)
{
return song.replaceAll("(WUB)+", " ").trim();
}
}
위의 풀이는 제일 많은 표를 받고 나도 정말 멍때리고 봤던 풀이다.
그렇게 어려운 함수를 쓴 것도 아니고, 축약된 코드이면서도 의도를 파악하기에 충분하다.
나는 저 여러개인 공백들을 어떻게 하나 해서 for문을 돌려버렸는데, 이사람은 그냥 아예 조건식으로 여러개의 "WUB"를 한묶음으로 묶어서 replace 해버렸다.
이 코드를 포함해서 이런 저런 풀이들을 보면서 느낀 건데, 나는 평소 습관에서 벗어나서 기본적인 함수를 clever하게 갖다쓰는 연습이 필요하다.
어렵고 복잡한 문제가 아닌 이런 쉬운 문제에서도 skill 차이가 크게 느껴진다. 깨닫는 게 많다.
'공부 > algorithm' 카테고리의 다른 글
[codewars] Who likes it? (0) | 2019.03.24 |
---|---|
[codewars] number fun (0) | 2019.03.24 |
[algorithm] 방 번호 (0) | 2019.02.22 |
[programmers] K번째수 (0) | 2019.01.05 |
[programmers] 더 맵게 (0) | 2018.11.01 |
댓글