본문 바로가기

algorithm/codewars

[6kyu] Highest Scoring

문제설명

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