Leetcode 389. Find the Difference
·
Algorithm
You are given two strings s and t. String t is generated by random shuffling string s and then add one more letter at a random position. Return the letter that was added to t. 두 개의 문자열인 s와 t가 주어졌다. 문자열 t는 문자열 s에서 랜덤하게 하나의 문자가 추가된 것이다. 문자열 s에서 추가된 문자를 리턴하라. 두 문자열을 비교해 다른 문자를 찾아내는 문제였다. 문자열을 배열로 만들고 for문으로 순회하며 다른 값을 찾는다면 리턴하고자 했다. var findTheDifference = function(s, t) { if(!s) return t; const sA..
LeetCode 387. First Unique Character in a String
·
Algorithm
문자열이 지정되면 문자열에서 반복되지 않는 첫 번째 문자를 찾아 인덱스를 반환합니다. 존재하지 않으면 -1을 반환합니다. 반복문을 순회하며 중복이 아닌 경우를 찾아야 했다. Map이나 Set을 사용해 문제에 접근하는 방법도 떠올렸으나 훨씬 간단하고 쉬운 코드를 작성할 방법이 떠올랐다. 바로 lastIndexOf 메서드를 사용하는 방법이다. /** * @param {string} s * @return {number} */ var firstUniqChar = function(s) { for(let i =0; i < s.length; i++) { const coincideString = s.indexOf(s[i]) === s.lastIndexOf(s[i]); if(coincideString) { return..
Leetcode 374. Guess Number Higher or Lower
·
Algorithm
추측 게임에서 수를 맞추는 문제. 1부터 n까지 숫자를 골라 어떤 번호를 골랐는지 맞히는 문제다.사전 정의된 API intest(int num)를 호출하면 세 가지 가능한 결과가 리턴된다는 말이 있다.(문제를 풀 때 해당 부분을 인지하면 된다)-1: 내가 고른 숫자보다 너의 추측이 더 높을 때(= num > pick).1: 내가 뽑은 숫자보다 추측이 더 낮을 때(= num 0: 내가 선택한 숫자(즉, num == pick)와 추측이 같을 때. 처음엔 인자 n만을 사용해 문제를 해결하고자 했지만 시간 초과로 실패했다.// 시간 초과된 코드var guessNumber = function(n) { let lower = 1; let higher = n; while(lower 연산에 필요한..
Leetcode 338. Counting Bits
·
Algorithm
// example 1 Input: n = 2 Output: [0,1,1] Explanation: 0 --> 0 1 --> 1 2 --> 10 정수 n이 주어졌을 때, 길이 n + 1의 배열 ans를 반환하여 각 i(0 String으로 타입이 변한 것을 이용했고, num.length를 활용해 for문을 사용할 수 있었다. 그리고 다시 요소를 더해줄 땐 Number()를 사용해 Integer 타입으로 변환했고 최종적으로 숫자 배열을 만들어 return했다. /** * @param {number} n * @return {number[]} */ var countBits = function(n) { let result = []; for(let i=0; i
LeetCode 303. Range Sum Query - Immutable
·
Algorithm
정수 배열 번호가 지정된 경우 다음 유형의 여러 쿼리를 처리합니다. 왼쪽
Leetcode 412. Fizz Buzz
·
Algorithm
정수 n이 주어지면 문자열로 구성된 배열을 리턴하는 문제이다. 예전에 면접을 볼 때 화이트 보드 코딩으로 풀었던 문제였는데 leetcode에서 만나니 감회가 새로웠다. i를 0으로 설정해줄 경우 0부터 배열에 들어가기 시작하므로 1로 시작해줘야 하며 15를 첫 조건으로 설정한 이유는 15는 3의 배수이기 때문에 3으로 if문을 출발하게 된다면 15의 조건에 맞아도 3의 조건에서 통과되어버리기 때문이다. /** * @param {number} n * @return {string[]} */ var fizzBuzz = function(n) { let result=[]; for(let i=1; i
Leetcode 290. Word Pattern (javascript)
·
Algorithm
패턴과 문자열 s가 지정된 경우 s가 동일한 패턴을 따르는지 여부를 찾는 문제. 처음엔 이중 for문으로 접근을 해야하는 문제로 파악했지만 해결할 수 없었고 Map을 활용한 문제 접근을 해서 테스트는 통과했지만 제출에는 실패했다. 패턴과 문자열의 lengh는 같지만 동일한 문자가 반복되는 문자열일 경우에 대한 예외처리가 없었기 때문이다. 중복을 허용하지 않는 Set의 size를 비교해 예외 케이스를 작성해주어 제출이 가능했다. /** * @param {string} pattern * @param {string} s * @return {boolean} */ var wordPattern = function(pattern, s) { const word = s.split(' '); const map = new ..