389. Find the Difference

늘보·2021년 7월 12일
0

LeetCode

목록 보기
7/69

💡풀이

// 방법1: 느림
var findTheDifference = function (s, t) {
  let arr = t.split('');
  let i = 0;

  while (i < s.length) {
    let index = arr.indexOf(s[i]); // 느려짐1
    arr.splice(index, 1); // 느려짐2
    i++;
  }
  return arr[0];
};

// 방법2: 이것도 느림
const findTheDifference = (s, t) => {
  arrS = s.split(''); // 느려짐1
  arrT = t.split('');

  arrS.sort(); // 느려짐2
  arrT.sort();

  let i = 0;

  while (i < arrT.length - 1 && arrS[i] === arrT[i]) {
    i++;
  }
  return arrT[i];
};

// Optimal (reduce 이용)
var findTheDifference = function (s, t) {
  const sum1 = s.split('').reduce((acc, cur) => acc + cur.charCodeAt(0), 0);
  const sum2 = t.split('').reduce((acc, cur) => acc + cur.charCodeAt(0), 0);
  return String.fromCharCode(sum2 - sum1);
};

📝정리

혼자 해결은 했지만 시간 복잡도 측면에서 매우 효율이 좋지 않았다. 마지막 방법은 Discussion에서 봤음. sum2sum1의 요소를 각각 다 더해준 뒤(charCodeAt으로 변환한 뒤) 마지막에 sum2에서 sum1을 뺀다면 그게 남은 알파벳은 charCode가 될 것이라는 뜻으로 코드를 해석했다.

문제 링크

https://leetcode.com/problems/find-the-difference/

LeetCode GitHub

https://github.com/tTab1204/LeetCode/tree/main/%EC%A3%BC%EC%98%81

0개의 댓글