반응형

Problem Solved/LeetCode

    [Javascript][LeetCode] Replace Elements with Greatest Element on Right Side

    [Javascript][LeetCode] Replace Elements with Greatest Element on Right Side

    문제 Replace Elements with Greatest Element on Right Side(요소를 오른쪽에서 가장 큰 요소로 바꾸기 문제 설명 반복문을 돌면서 차례대로 그 값 이후부터의 배열 값들로 최대값을 구해 배열을 다시 구성하는 문제입니다. 마지막에는 -1을 추가하여 개수가 같도록 만들면 끝입니다. 아래와 같이 치환되는 부분을 제외한 나머지 오른쪽을 가지고 최대값을 만듭니다. 배열에서 shift를 사용하면 0번 값이 삭제됩니다. 여기서 spread operator를 이용해 max 값을 구해 줍니다. 이 때 주의할 것은 shift를 사용했기 때문에 arr의 길이가 계속 변하게 되어 바로 사용하게 되면 result 배열의 개수가 모자라거나 -Infinity값이 섞일 수 있습니다. 반복문을 다 ..

    [Leetcode][Javascript] Max Consecutive Ones

    문제 Max Consecutive Ones 문제 설명 배열에서 1이 연속해서 등장하는 최대 횟수를 구하는 문제 숫자는 0, 1만 등장한다고 했으므로 배열을 문자열로 변환해 0으로 split하면 1만 뭉쳐서 결과로 남게 된다. [1,0,1,1]이면 [1,11]이 되는 것이다. 연속하는 개수를 세어야 하므로 map 을 통해 개수를 세어 주고, 배열에서 max 값을 계산해서 출력하도록 한다. 간단한 문제였다. 성공 코드 /** * @param {number[]} nums * @return {number} */ const findMaxConsecutiveOnes = function(nums) { const ones = nums.join('').split('0').map(value => value.length);..

    [LeetCode][Javascript] Number of 1 Bits

    [LeetCode][Javascript] Number of 1 Bits

    문제 Number of 1 Bits 문제 설명 binary 숫자에서 1비트의 개수를 반환하는 문제 일단 숫자를 2진수로 받는(변환하는) 작업이 필요하다. 그냥 받으면 앞에 0이 포함된 부분은 날라가고 마지막의 1만 남게 되어 정상적인 계산이 불가능하다. 자바스크립트의 내장 객체인 toString의 인자에는 2진수부터 36진수까지 표현 가능하도록 넣을 수 있게 되었다. 그래서 2진수로 변환 후, 1의 개수가 있으면 세어서 반환하고 없으면 0을 반환하도록 처리했다. toString을 정말 많이 쓰지만 인자로 N진수를 나타낼 수 있다는 것은 처음 알게 되었다. 앞으로 종종 사용해야겠다. 성공 코드 const hammingWeight = function(n) { return n.toString(2).match(..

    [leetCode][javascript] 448번 문제 - Find All Numbers Disappeared in an Array

    [leetCode][javascript] 448번 문제 - Find All Numbers Disappeared in an Array

    문제 [leetCode][javascript] 448번 문제 - Find All Numbers Disappeared in an Array 문제 설명 길이가 n인 배열은 1부터 n까지의 숫자가 존재할 수 있다. 여기서 존재하지 않는 숫자를 구하는 문제이다. 배열의 숫자가 1부터 n까지 있을 수 있다고 했으니 그만큼 for문을 돌면서 i가 있는지 찾는다. 있으면 넘어가고 없으면 result 배열에 추가한다. 알고리즘 문제를 되게 오랜만에 풀어 보았는데 Easy 문제여서 그런지 재미있다 ㅋㅋㅋ 일주일에 2문제 정도는 풀어 봐야겠다!! 성공 코드 /** * @param {number[]} nums * @return {number[]} */ const findDisappearedNumbers = (nums) =>..

    [LeetCode] 125번 문제 - Valid Palindrome

    문제 125. Valid Palindrome 문제 설명 문자열의 영숫자가 회문인지 판별하는 문제 정규식을 활용해 영숫자만 배열로 저장한다. 이제 저장된 배열이 회문인지 확인하면 되는데, 들어온 문자열이 ".,"와 같은 경우 길이가 없다고 나오므로 if문을 통해 예외처리를 해준다. 이 때, 꼭 배열 자체를 비교할 필요는 없다. join을 활용해 문자열로 만들고, 그것을 뒤집은 값과 비교해도 된다. 여기서 나는 배열인 채로 비교했다. 그리고 전체 배열 크기의 반을 구한 다음에 그만큼만 반복문을 돌면서 값이 같은지 확인한다. 하나라도 다르면 false가 되어 결과로 반환하게 된다. 성공 코드 const isPalindrome = (s) => { const regex = /(\w)/g; const onlyAlp..

    [LeetCode] 242번 문제 - Valid Anagram

    문제 242. Valid Anagram 문제 설명 주어진 문자열이 유효한 anagram인지 아닌지 판별하는 문제 문자열의 길이와 알파벳 구성(개수)가 동일하면 true, 아니면 false를 반환하게끔 해야 한다. 처음에는 반복문을 돌게 해 값을 하나하나 비교해 참거짓을 반환했는데, 그냥 비교할 수 있는 방법이 있어서 그렇게 바꿔서 사용했다. 자바스크립트의 경우 배열 자체를 비교할 수 있는 메소드는 없지만 값을 json 문자열로 만들어 주는 *JSON.stringify 를 이용해 두 배열을 비교했다. 아니면 아예 join("") 을 사용해 문자열을 만들어 문자열끼리 비교해 줄 수도 있다. 성공 코드 const isAnagram = (s, t) => { if (s.length !== t.length) ret..