checkTheBucket.js (8kyu 81)

Codewars 알고리즘 풀이


Problem

  • You need to check if there is gold in the bucket, and if so, return true, if not, return false.
    • bucket에 gold가 있으면 true를 반환하고, 없으면 false를 반환한다.


Solution 01

function checkTheBucket(bucket) {
  let check = bucket[0];
  
  for (let i = 0; i < bucket.length; i++) {
    if (bucket[i] !== check) return true;
  }
  return false;
}

checkTheBucket(['stone', 'stone', 'stone', 'stone']);  // false
checkTheBucket(['stone', 'stone', 'stone', 'gold']);   // true


Solution 02

function checkTheBucket(bucket) {
  return bucket.includes('gold');
}

checkTheBucket(['stone', 'stone', 'stone', 'stone']);  // false
checkTheBucket(['stone', 'stone', 'stone', 'gold']);   // true

includes() 메소드

특정 값이 있는지 확인하고, true/false를 반환한다.


Solution 03

function checkTheBucket(bucket) {
  if (bucket.indexOf('gold') !== -1) {
    return true;
  } else {
    return false;
  }
}

checkTheBucket(['stone', 'stone', 'stone', 'stone']);  // false
checkTheBucket(['stone', 'stone', 'stone', 'gold']);   // true

indexOf() 메소드

주어진 값이 처음으로 나타나는 위치를 반환한다.

일치하는 값이 없으면 -1을 반환한다.


Solution 04

function checkTheBucket(bucket) {
  return bucket.indexOf('gold') !== -1;
}

checkTheBucket(['stone', 'stone', 'stone', 'stone']);  // false
checkTheBucket(['stone', 'stone', 'stone', 'gold']);   // true


Solution 05

function checkTheBucket(bucket) {
  return bucket.find(i => i === 'gold') ? true : false;
}

checkTheBucket(['stone', 'stone', 'stone', 'stone']);  // false
checkTheBucket(['stone', 'stone', 'stone', 'gold']);   // true

find() 메소드

테스트를 통과한 배열의 첫 번째 element 값을 반환한다.