πŸ“Œ 1. 문제


[Programmers, Level1] 두 μ •μˆ˜ μ‚¬μ΄μ˜ ν•©


두 μ •μˆ˜ a, bκ°€ μ£Όμ–΄μ‘Œμ„ λ•Œ a와 b 사이에 μ†ν•œ λͺ¨λ“  μ •μˆ˜μ˜ 합을 λ¦¬ν„΄ν•˜λŠ” ν•¨μˆ˜, solution을 μ™„μ„±ν•˜μ„Έμš”. 예λ₯Ό λ“€μ–΄ a = 3, b = 5인 경우, 3 + 4 + 5 = 12μ΄λ―€λ‘œ 12λ₯Ό λ¦¬ν„΄ν•©λ‹ˆλ‹€.


μ œν•œ 쑰건
a와 bκ°€ 같은 κ²½μš°λŠ” λ‘˜ 쀑 아무 μˆ˜λ‚˜ λ¦¬ν„΄ν•˜μ„Έμš”.
a와 bλŠ” -10,000,000 이상 10,000,000 μ΄ν•˜μΈ μ •μˆ˜μž…λ‹ˆλ‹€.
a와 b의 λŒ€μ†Œκ΄€κ³„λŠ” μ •ν•΄μ Έμžˆμ§€ μ•ŠμŠ΅λ‹ˆλ‹€.


a b return
3 5 12
3 3 3


✍ 풀이

function solution(a, b) {
  let num = a + b;
  const arr = [a, b].sort((a, b) => a - b);
  let i = 1;
  while (i > 0) {
    if (arr[1] - arr[0] === i || arr[1] - arr[0] === 0) {
      break;
    }
    num = arr[1] - i + num;
    i++;
  }
  return a === b ? a : num;
}

πŸ‘ Best

function adder(a, b) {
  var result = 0;
  return ((a + b) * (Math.abs(b - a) + 1)) / 2;
}


  • λ‚΄ 풀이가 λ„ˆλ¬΄ μž₯ν™©ν•˜κ³  1차원적이라고 μƒκ°ν•˜λ©΄μ„œ μ œμΆœν•˜κΈ΄ ν–ˆλŠ”λ°, best 풀이보고 감탄을 ν–ˆλ‹€,,, (bestν’€μ΄μ˜ λŒ“κΈ€μ—μ„œλ„ λ‹€λ“€ 감탄..) μ–‘μͺ½μ˜ 숫자λ₯Ό 같이 λ½‘μ•„μ„œ κ³„μ‚°ν•˜λŠ” 방법은 생각을 λͺ»ν–ˆλ‹€.. Math.abs() μ ˆλŒ“κ°’ λ°˜ν™˜ κΈ°μ–΅ν•΄μ„œ λ‚˜μ€‘μ— 써먹어야지..^^