반응형

Problem Solved

    [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) =>..

    [HackerRank][Javascript] Queues: A Tale of Two Stacks

    [HackerRank][Javascript] Queues: A Tale of Two Stacks

    문제 - Queues: A Tale of Two Stacks 문제 설명 여러 라인으로 입력되는 것을 타입에 따라 다르게 작동하는 큐, 스택을 구현하는 문제 나는 Lifo인 스택으로 구현하였다. 변수 q에 라인 개수를 담는다. q를 기반으로 반복문을 돌며 타입에 따라 다른 명령어를 실행한다. 1일 때: 주어진 숫자를 arr에 push한다. 2일 때: arr의 가장 앞의 숫자를 shift하여 삭제한다. 3일 때: arr의 가장 첫 요소를 콘솔로 출력한다. 성공 코드 // 한 줄씩 읽게 하기 위한 코드 let inputString = ''; let currentLine = 0; process.stdin.on('data', inputStdin => { inputString += inputStdin; }); pr..

    [HackerRank][Javascript] Balanced Brackets

    [HackerRank][Javascript] Balanced Brackets

    문제 - Balanced Brackets 문제 설명 괄호들이 짝이 맞는지 확인하는 문제 1번 풀이 주어진 괄호인 {[()]}의 여는 괄호들을 닫는 괄호로 하나씩 치환해 배열에 추가한다. 닫는 괄호가 나오고 배열의 마지막 문자와 같으면 배열에 pop하여 삭제한다. 위의 두 조건에도 들지 않으면 짝이 맞지 않는 것이므로 NO를 반환한다. 여는 괄호의 숫자가 많을 때 NO를 반환하기 위해 마지막에 남은 문자의 개수로 YES와 NO를 판단하여 반환한다. 2번 풀이 opens와 closes들을 배열로 묶고, 객체를 사용해 닫는 괄호는 key로, 여는 괄호는 value로 묶는다. 반복문을 돌며 1번 풀이와 동일하게 여는 괄호이면 배열에 추가한다. 닫는 괄호가 나오면 pop하여 짝이 맞는지를 만들었던 객체를 통해 판..