1Day 1Practice

[codewars] Sum of pairs

Bittersweet- 2022. 8. 5. 09:44
728x90

Instructions.

Given a list of integers and a single sum value, return the first two values (parse from the left please) in order of appearance that add up to form the sum.

sum_pairs([11, 3, 7, 5],         10)
#              ^--^      3 + 7 = 10
== [3, 7]

sum_pairs([4, 3, 2, 3, 4],         6)
#          ^-----^         4 + 2 = 6, indices: 0, 2 *
#             ^-----^      3 + 3 = 6, indices: 1, 3
#                ^-----^   2 + 4 = 6, indices: 2, 4
#  * entire pair is earlier, and therefore is the correct answer
== [4, 2]

sum_pairs([0, 0, -2, 3], 2)
#  there are no pairs of values that can be added to produce 2.
== None/nil/undefined (Based on the language)

sum_pairs([10, 5, 2, 3, 7, 5],         10)
#              ^-----------^   5 + 5 = 10, indices: 1, 5
#                    ^--^      3 + 7 = 10, indices: 3, 4 *
#  * entire pair is earlier, and therefore is the correct answer
== [3, 7]

Negative numbers and duplicated numbers can and will appear.

 

NOTE: There will also be lists tested of lengths upwards of 10,000,000 elements. Be sure your code doesn't time out.

 

정수로 이루어진 배열과 하나의 숫자(합계)를 인자로 받아 배열의 요소가 합산되어 하나의 숫자(합계)가 되는 처음 두개의 value(왼쪽부터)를 반환한다.

-- 코드 결과 예제

음수나 중복 숫자가 존재한다.

NOTE: 10,000,000 개 이상의 요소 길이로 테스트된 목록도 있다. 코드 실행 시 시간 초과되지 않도록 확인하길 바란다.

 


 

Solution.

function sumPairs(ints, s) {
  let result = [];
  for(let i = 0; i < ints.length; i++) {
    let num = s - ints[i];
    
    for(let j = i+1; j < ints.length; j++) {
      if(num === ints[j]) {
        result[0] = ints[i];
        result[1] = ints[j];
        ints = ints.slice(0, num);
      }
    }
  }
  return result.length < 2 ? undefined : result;
}

!! 하지만 time out이 생기는 현상을 해결하지 못했다.

 

Other solution.

function somePairs(ints, s) {
  var seen = {}
  for (var i = 0; i < ints.legnth; i++) {
    if(seen[s-ints[i]]) return [s- ints[i], ints[j]];
    seen[ints[i]] = true
function sumPairs(ints, s) {
  let seen = new Set();
  for (let i of ints) {
    it(seen.has(s-i)) return [s-i, i];
    seen.add[i]
  }
}

 

'1Day 1Practice' 카테고리의 다른 글

[codewars - 5kyu] Tic-Tac-Toe Checker  (0) 2022.08.09
[codewars] pick peaks  (0) 2022.08.04
[codewars] Simple Pig Latin  (0) 2022.08.02
[codewars] Moving Zeros To The End  (0) 2022.07.12
[codewars] Count characters in your string  (0) 2022.07.08