> 웹 프론트엔드 > JS 튜토리얼 > CodeWars 챌린지 솔루션 공유: 기본부터 Aris까지 최소 규모

CodeWars 챌린지 솔루션 공유: 기본부터 Aris까지 최소 규모

Susan Sarandon
풀어 주다: 2024-12-21 07:09:09
원래의
281명이 탐색했습니다.

Sharing Solusi Tantangan CodeWars: Least Larger, dari Dasar hingga aris

CodeWars 챌린지에서 배우기: 최소 규모

안녕하세요 친구들! 이번에는 CodeWars의 Least Larger 챌린지에 대해 공유하고 싶습니다. 이 챌린지는 논리와 체계적인 사고를 훈련할 뿐만 아니라 이 개념이 현실 세계에서 어떻게 유용할 수 있는지에 대한 아이디어를 제공하기 때문에 정말 흥미롭습니다. 자, 함께 토론해 볼까요!


도전 과제는 무엇입니까?

따라서 숫자 배열과 특정 인덱스가 제공됩니다. 우리의 임무는 해당 인덱스의 요소보다 더 큰 가장 작은 숫자를 찾은 다음 인덱스를 반환하는 것입니다. 일치하는 숫자가 없으면 -1을 반환해야 합니다.

예:

배열: [4, 1, 3, 5, 6]

인덱스: 0(참조번호는 4)

결과는 3입니다. 4보다 큰 가장 작은 숫자는 인덱스 3에 있는 5이기 때문입니다.
왜 3이 될 수 있나요?
배열은 0부터 시작합니다
그래서:
4 : 인덱스 0
1 : 인덱스 1
3 : 인덱스 2
5 : 인덱스 3
6 : 인덱스 4


내가 만든 솔루션

이 문제를 해결하기 위해 저는 lessLarger라는 함수를 만들었습니다. 코드는 다음과 같습니다.

function leastLarger(a, i) {
  let smaller = Infinity; // Nilai pembanding awal
  let result = -1;        // Default hasil kalau nggak ada elemen yang memenuhi

  for (let index = 0; index < a.length; index++) {
    if (a[index] > a[i] && a[index] < smaller) {
      smaller = a[index]; // Update nilai terkecil yang lebih besar
      result = index;     // Simpan indeks elemen
    }
  }

  return result; // Kembalikan hasil
}
로그인 후 복사
로그인 후 복사

어떻게 작동하나요?

  1. 초기화

    • 비교를 위해 초기값을 Infinity로 작게 설정했습니다.
    • 만족스러운 요소가 없는 경우 결과는 -1로 설정됩니다.
  2. 배열 반복

    • 배열의 모든 요소를 ​​확인합니다.
    • 다음 두 가지 조건을 충족해야 합니다.
      1. 요소가 참조 요소(a[i])보다 큽니다.
      2. 요소가 이전 비교(더 작음)보다 작습니다.
    • 두 조건이 모두 충족되면 더 작게 업데이트하고 결과에 요소 인덱스를 저장합니다.
  3. 결과 반환

    • 만족스러운 요소가 있으면 함수는 해당 요소의 인덱스를 반환합니다.
    • 아무것도 없으면 결과는 여전히 -1입니다.

사용예

console.log(leastLarger([4, 1, 3, 5, 6], 0)); // Output: 3
로그인 후 복사

설명:

  • 참조 요소는 4(인덱스 0)입니다.
  • 4보다 큰 요소는 [5, 6]입니다.
  • 이 중 가장 작은 요소는 5이고 위치는 인덱스 3입니다.

고급 솔루션: 한 줄로 간결하게

보다 "JavaScript 전용" 접근 방식을 원하는 분들을 위해 필터, Math.min 및 findIndex와 같은 내장 메소드를 사용하여 한 줄의 코드로 이 솔루션을 작성할 수 있습니다.

function leastLarger(a, i) {
  let smaller = Infinity; // Nilai pembanding awal
  let result = -1;        // Default hasil kalau nggak ada elemen yang memenuhi

  for (let index = 0; index < a.length; index++) {
    if (a[index] > a[i] && a[index] < smaller) {
      smaller = a[index]; // Update nilai terkecil yang lebih besar
      result = index;     // Simpan indeks elemen
    }
  }

  return result; // Kembalikan hasil
}
로그인 후 복사
로그인 후 복사

이 코드는 동일한 작업을 수행하지만 더 기능적이고 간결한 스타일입니다. 너무 많은 추가 변수 없이 빠른 솔루션을 작성하려는 상황에 적합합니다.


실제 사례 연구

이와 같은 기능은 실제로 다양한 실제 상황에서 상당히 관련성이 높습니다. 몇 가지 예:

  1. 티켓 예매 시스템

    • 티켓 시스템에서는 특정 가격보다 높은 최저 좌석 가격을 찾아야 하는 경우가 많습니다(예: 다음 좌석 채우기).
  2. 작업 스케줄링

    • 일정을 짤 때 회의 시간 할당이나 다음 작업 할당 등을 위해 특정 시간보다 이후에 가장 가까운 다음 시간을 찾을 수 있습니다.
  3. 재고관리

    • 창고에서 특정 품목을 보관하기에 충분한 최소 용량의 보관 장소를 찾아야 하는 경우.

이 챌린지는 간단해 보이지만 직접 해보면 깔끔한 논리가 매우 중요하다는 것을 깨달았습니다. 이 챌린지에서 제가 좋아하는 점은 이 개념이 실제 세계에 적용되는 데 얼마나 관련성이 있는지입니다.

그렇습니다. 친구들이 이 챌린지를 완료할 수 있는 다른 방법이 있다면 주저하지 말고 댓글란에 공유해 주세요. 누가 알겠는가, 우리는 서로의 서로 다른 접근 방식으로부터 배울 수도 있다. 이 공유가 유용하고 행복한 코딩이 되기를 바랍니다! ?

위 내용은 CodeWars 챌린지 솔루션 공유: 기본부터 Aris까지 최소 규모의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿