CodeWars Katas용 JS 솔루션

이 기사에서는 내가 해결할 수 있는 코드워 챌린지 질문에 대한 솔루션을 문서화할 것입니다.

1. 귀하의 임무는 내림차순으로 배열의 연속 쌍 간의 차이를 합산하는 것입니다.

예를 들어:

[2, 1, 10] -> 9
내림차순: [10, 2, 1]

합계: (10 - 2) + (2 - 1) = 8 + 1 = 9

배열이 비어 있거나 배열에 요소가 하나만 있는 경우 결과는 0이어야 합니다(하스켈에서는 Nothing).

내 솔루션:

function sumOfDifferences(arr) {
  arr.sort(function(a, b){return b - a});
  let diff = 0
  for(let i=0;i<=arr.length - 2;i++){
    diff = diff + (arr[i] - arr[i + 1])
  }
  return diff
}


2.사각형의 사각형
당신은 빌딩 블록을 좋아합니다. 당신은 특히 정사각형 블록을 좋아합니다. 그리고 당신이 더 좋아하는 것은 그것들을 정사각형 빌딩 블록의 정사각형으로 배열하는 것입니다!

그러나 때로는 정사각형으로 배열할 수 없습니다. 대신 일반 직사각형으로 끝납니다! 저 망할 것들! 현재 헛된 일을 하고 있는지 알 수 있는 방법이 있다면… 잠깐! 그게 다야! 빌딩 블록의 수가 완전 제곱인지 확인하기만 하면 됩니다.


정수가 주어지면 제곱수인지 확인합니다.

수학에서 제곱수 또는 완전제곱수는 정수의 제곱인 정수입니다. 다른 말로 하면, 그것은 자신과 어떤 정수의 곱입니다.

테스트는 항상 일부 정수를 사용하므로 동적 유형 언어에서는 이에 대해 걱정하지 마십시오.


-1 => 거짓
0 => 참
3 => 거짓
4 => 참
25 => 참
26 => 거짓

내 솔루션:

var isSquare = function(n){
  if(n>-1){
    if(JSON.stringify(Math.sqrt(n)).includes('.')){
      return false
    }
    else{
      return true
    }
  }
  else{
    return false
  }
}


리팩터링된 솔루션:

var isSquare = n => Math.sqrt(n) % 1 === 0;


3. 두 개의 숫자를 더하고 그 합계를 이진수로 반환하는 함수를 구현하십시오. 변환은 추가 전 또는 후에 수행할 수 있습니다.

반환된 이진수는 문자열이어야 합니다.

예:(입력1, 입력2 --> 출력(설명)))

1, 1 --> "10"(1 + 1 = 10진수 2 또는 2진수 10)
5, 9 --> "1110"(5 + 9 = 10진수로 14 또는 2진수로 1110)

내 솔루션:

function addBinary(a,b){
  return (a+b).toString(2)
}


4. 정수 배열이 주어지면 홀수 번 나타나는 정수를 찾으십시오.

홀수 번 나타나는 정수는 항상 하나뿐입니다.


[7]은 1번 발생하므로 7을 반환해야 합니다(홀수).
[0]은 1번 발생하므로 0을 반환해야 합니다(홀수).
[1,1,2]는 1번 발생하므로(홀수) 2를 반환해야 합니다.
[0,1,0,1,0]은 3번 발생하므로(홀수) 0을 반환해야 합니다.
[1,2,2,3,3,3,4,3,3,3,2,2,1]은 1번 나타나기 때문에 4를 반환해야 합니다(홀수).

내 솔루션:

function findOdd(A) {
  const count = {};

  for (const element of A) {
    if (count[element]) {
      count[element] += 1;
    } else {
      count[element] = 1;
    }
  }

  for (const property in count) {
    if(count[property] % 2 !== 0){
      return parseInt(property)
    }
  }
}


5. 문자열 목록을 필터링하고 친구 이름만 있는 목록을 반환하는 프로그램을 만드세요.

이름에 정확히 4개의 문자가 포함되어 있으면 친구임을 확신할 수 있습니다! 그렇지 않으면 그가 아니라는 것을 확신할 수 있습니다...

예: Input = ["Ryan", "Kieran", "Jason", "Yous"], Output = ["Ryan", "Yous"]

즉.

친구 ["Ryan", "Kieran", "Mark"] shouldBe ["라이언", "마크"]
참고: 출력에서 ​​이름의 원래 순서를 유지하십시오.

내 솔루션:

const friend = friends => friends.filter(friend => friend.length === 4)

좋은 웹페이지 즐겨찾기