CodeWar
그 동안 날씨 탓이 좀 있고 그랬는지 슬럼프가 오고 코딩은 조금씩 해 봤지만 알고리즘은 조금 건드리기가 싫어서 건드리지도 않았다. 게다가 내가 등급업이 됬는지 나오는 문제가 내 머리로는 풀기가 조금 어려웠다 아니 너무 어려웠다..ㅠㅠ
일단 오늘 문제 역시 마찬가지다 과정 자체는 이해가 됬고 어떻게 분기하고 조건을 어떻게 줘서 연산을 해야 하는지는 머릿 속으로 계산이 나왔는데 그게 코드로 쉽게 짜여 지지가 않으니 더 열받았다. 결국 다른 능력자들의 답 보기 버튼을 누르고 말았다….
Consecutive strings
문제를 해석 하면 대략 이렇다. strarr이라는 문자열의 집합으로 된 배열이 첫번째 인자로 주어지고, 두번째 인자는 정수 k가 주어진다. 문제는 배열에서 k번째로 연속된 문자열들로 구성된 가장 긴문자열을 반환 하는 것이다.
1 | Example: longest_consec(["zone", "abigail", "theta", "form", "libe", "zas", "theta", "abigail"], 2) --> "abigailtheta" |
예는 위와 같다. 그리고 주어진 문자열의 길이가 0이거나 k가 문자열의 길이보다 길고 k가 0보다 작으면 return ''
이 된다.
내 해결 방식
첫번째로 우선 sort
method로 첫번째 인자의 어레이를 긴 문자열 순서대로 만든 어레이를 만들었다. 그리고 그 배열을 loop해서 k번재 인자까지 추출한 다음 합쳐서 return 했다. 그런데 내가 만든 방식은 도저히 테스트에서 통과가 되지 않았다. 심지어 샘플 테스트에서도 계속해서 fail이 났다. 문법 상으로도 조건 상으로도 문제가 없었는데 뭐가 문제일까 하다 에어콘도 안 나오는 더운 방에서 결국 짜증이 나 버린 나머지 그러면 안 됬지만 다른 능력자들 답안 보기 버튼을 눌러 버리고 말았다. ㅠㅠ
다른 사람들의 해결 방식
1 | function longestConsec(strarr, k) { |
가장 추천수가 높았던 답이다. ES6무문법은 쓰지 않고 일반적인 조건문과 반복문만 사용해서 풀어냈다. 이런 머리를 가진 사람들을 보면 부럽다는 생각만 든다..
1 | function longestConsec(strarr, k) { |
reduce를 이용해서 풀은 답인데 역시 추천 수가 높았다.
정리
따로 나 처럼 정렬 방법을 이용하지 않고 내부에서 어레이 내부 원소들을 각 각 비교하는 방식으로 푸는 방식이 더 효과 적이 었나 보다. 애초에 답안들 자체에 정렬 method를 쓴 답이 하나도 없었다. -.-
너무 오랜만에 블로그 업데이트 하려니 뭘 어떻게 써야 하는지도 잘 생각이 안 난다. (날씨가 너무 헬이라)
아무튼 이제 리액트나 리덕스, 또는 node 관련 글도 업데이트를 해야 하는데 다음 주 중에 날 잡고 한번 해야 겠다.