Leetcode 682. Baseball Game
·
Algorithm
제공되는 문자열을 받아 배열의 요소를 모두 더한 값을 리턴하는 문제. 문제 자체는 쉬웠지만 string type의 배열 요소를 number로 변환해주는 작업이 필요했다. 메서드를 사용해 형변환을 해주는 건 불필요하다 생각해 자바스크립트의 특징인 암묵적 형변환을 통해 해결할 수 있었다. * Answer /** * @param {string[]} operations * @return {number} */ var calPoints = function(operations) { const ops = operations; let arr = []; for(let i=0; i number type 변환이 필요. JS의 암묵적 형변환 사용. arr.push(+ops[i]); } } // 완성된 배열을 모두 합산하기 위한..
Leetcode 482. License Key Formatting
·
Algorithm
대문자 문자열 사이에 대시가 들어간 라이센스 키를 변환하는 문제. 접근 방법 1. 새로운 문자로 변환을 위해 기존 문자열을 합치고 대문자로 만들었다. (=마지막에 대문자 처리를 해줘도 된다.) 2. for문을 역순으로 순회했는데, 해당 문자열의 length가 얼마나 길지 예상이 안될 땐 맨 끝의 index를 활용하기보단 확실하게 존재하는 맨 앞의 index를 활용하는 편이 좋다고 판단해 역순 조회를 실시했다. 3. for문 내부조건 중 i와 dashPosition의 값이 일치한다는 조건만 부여했을 때는 대시가 끝까지 붙게된다. for문 역순회를 했기에 reverse()를 적용했을 때 대시가 문자열 맨 앞에 붙게되는 것을 막기 위해 i !== 0이라는 추가조건을 걸었다. 4. 대시가 필요한 부분의 leng..
Leetcode 461. Hamming Distance
·
Algorithm
두 정수 사이의 해밍 거리는 해당 비트가 다른 위치의 수이다. 두 개의 정수 x와 y가 주어지면 두 정수 사이의 해밍 거리를 반환해줘야 한다. 해밍 거리란? 블록 부호 이론에서, 해밍 거리(Hamming distance)는 곱집합 위에 정의되는 거리 함수이다. 대략, 같은 길이의 두 문자열에서, 같은 위치에서 서로 다른 기호들이 몇 개인지를 센다. 예시 Input: x = 1, y = 4 Output: 2 Explanation: 1 (0 0 0 1) 4 (0 1 0 0) ↑ ↑ 위 화살표는 해당 비트가 다른 위치를 가리킨다. 문제 접근 방법 예시를 참조했을 때, 숫자를 2진법으로 처리가 필요해보였고 또한 비트가 언급된 걸로 보아서 비트연산자를 활용하면 되겠거니 싶었다. 0을 기점으로 서로 1이 나오는 거..
Leetcode 414. Third Maximum Number
·
Algorithm
정수 배열 번호가 지정되면 이 배열에서세 번째 고유한 최대 숫자를 반환한다.세 번째 최대값이 존재하지 않으면 최대값을 반환한다.문제 접근배열의 length에 따라 return값이 달라진다는 의미였다.예제를 봤을 때 배열 내 중복되는 수가 있으므로Set을 활용해 중복을 제거하였고 배열에서 세 번째 최대값이라는 키워드가 있어sort를 통한 정렬로 값을 추려내고자 했다. 처음엔 오름차순으로 코드를 전개했으나idx 처리가 까다로워 내림차순으로 변경해 코드를 전개했다./** * @param {number[]} nums * @return {number} */var thirdMax = function(nums) { const sort = nums.sort((a,b)=> b-a); const set = ne..
Leetcode 409. Longest Palindrome
·
Algorithm
소문자 또는 대문자로 구성된 문자열이 주어지면 해당 문자로 작성할 수 있는 가장 긴 회문의 길이를 반환한다. 회문이란 거꾸로 읽어도 제대로 읽는 것과 같은 문장이나 낱말, 숫자, 문자열을 뜻한다 문자는 대소문자를 구분하는데, 예를 들어, "Aa"는 여기서 회문으로 간주되지 않는다. 접근 방법 처음엔 회문을 완성하는 것에 집중하고 문제를 접근했으나 회문의 length에 접근하는 것이 문제에서 요구하는 결과에 가까워지는 방법이란 것을 알았다. 문제를 해결 후 다시 생각을 해봤을 때 회문은 한 가지 방식으로 고정되어있는 것이 아니기에 애초에 회문을 만드는 방식으로 접근하는게 아녔다. 반복되는 문자를 처리하기 위해 예문을 확인해봤을 때 Input: s = "abccccdd" Output: 7 Explanatio..
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 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