bump.js (7kyu 80)

Codewars 알고리즘 풀이


Problem

  • Your car is old, it breaks easily.
    • 차가 오래돼서 쉽게 고장이 난다.
  • The shock absorbers are gone and you think it can handle about 15 more bumps before it dies totally.
    • 충격 흡수 장치가 제 기능을 못한다.
    • 차가 고장나기 전까지 약 15번 이상의 충돌을 처리할 수 있다.
  • Given a string showing either flat road (‘_’) or bumps (‘n’), work out if you make it home safely.
    • 평평한 도로(‘_’) 또는 돌출부(‘n’) 중 하나를 나타내는 문자열이 주어진다.
  • 15 bumps or under, return ‘Survive’, over 15 bumps return ‘Car Dead’.
    • 15번의 충돌 또는 이하라면 ‘Survive’를 반환하고, 15번의 충돌 초과라면 ‘Car Dead’를 반환한다.

Solution 01

function bump(road) {
  let count = 0;
  
  for (let i = 0; i < road.length; i++) {
    if (road[i] === 'n') {
      count++;
    }
  }
  return count <= 15 ? 'Survive' : 'Car Dead';
}

bump('____n__n_');                  // Survive
bump('____n_n_nnnn___nnnnnnnnn');   // Survive
bump('____n_n_nnnn___nnnnnnnnnn');  // Car Dead


Solution 02

function bump(road) {
  return road.split('n').length - 1 <= 15 ? 'Survive' : 'Car Dead';
}

bump('____n__n_');                  // Survive
bump('____n_n_nnnn___nnnnnnnnn');   // Survive
bump('____n_n_nnnn___nnnnnnnnnn');  // Car Dead

split(): 문자열을 부분 문자열로 분할하고, 새 배열로 반환한다.


Solution 03

function bump(road) {
  return road.replace(/_/g, '').length <= 15 ? 'Survive' : 'Car Dead';
}

bump('____n__n_');                  // Survive
bump('____n_n_nnnn___nnnnnnnnn');   // Survive
bump('____n_n_nnnn___nnnnnnnnnn');  // Car Dead

replace(): 대응되는 문자열을 찾아 다른 문자열로 치환한다.

g: 전역 검색