문제설명
Description:
Given a string of words, you need to find the highest scoring word.
Each letter of a word scores points according to it's position in the alphabet: a = 1, b = 2, c = 3
etc.
You need to return the highest scoring word as a string.
If two words score the same, return the word that appears earliest in the original string.
All letters will be lowercase and all inputs will be valid.
나의풀이
function high(x){
let alphbt = ' abcdefghijklmnopqrstuvwxyz'; //1~26
let scoreArr = x.split(' ').map((v,i) => v.split('').reduce((prev,curr) => prev + alphbt.indexOf(curr),0));
let highest = Math.max(...scoreArr);
return x.split(' ')[scoreArr.indexOf(highest)];
}다른사람의 풀이
function high(s){
let as = s.split(' ').map(s=>[...s].reduce((a,b)=>a+b.charCodeAt(0)-96,0));
return s.split(' ')[as.indexOf(Math.max(...as))];
}느낀점
뭔가 전에 풀어봤던 문제의 유형이라 보자마자 딱 감이왔지만, 여러변수 선언과 for문 등 효율적인 메서드를 쓰지 않고 풀었던 기억이라 이번엔 메서드를 활용하여 풀어보았다. charCodeAt을 쓸 수도 있었지만, 배열에서 찾는 게 더 쉬워보였기도 하고, -96 이 번거로워 보였기도 하고.. 해서 알파벳 배열을 따로 만들었다. 저사람의 풀이를 보면 내 풀이와 상당히 유사하다는 생각이든다. 그럭저럭 잘 푼 것 같다. 리턴문을 조금 더 깔끔하게 보이려고 highest 변수도 하나 더만들었다.
'algorithm > codewars' 카테고리의 다른 글
[6kyu] Compare powers (0) | 2018.06.15 |
---|---|
[6kyu] Financing a purchase (0) | 2018.02.13 |
[6kyu] Tribonacci sequence (0) | 2018.02.08 |
[6kyu] Simple string expansion (0) | 2018.02.07 |
[7kyu] Homogenous array (0) | 2018.02.04 |