[LeetCode] 28. Find the Index of the First Occurrence in a String, Easy
·
CodingTest/LeetCode
1. 문제문자열 haystack, needle이 주어질 때, haystack 문자열 안에 needle이 존재하면, 시작 인덱스를 반환하고 없으면 -1을 반환하라.2. 해결function strStr(haystack: string, needle: string): number { return haystack.indexOf(needle);};indexOf 함수를 이용해 해결할 수 있다.
[LeetCode] 67. Add Binary, Easy
·
CodingTest/LeetCode
1. 문제2진수 문자열 a와 b가 주어질 때, a + b 연산된 2진수 결과값을 반환하라.2. 풀이function addBinary(a: string, b: string): string { return (BigInt(`0b${a}`) + BigInt(`0b${b}`)).toString(2)};일단, 처음 문제를 봤을 때 해결 방법은 딱 떠올랐다. 두 2진수를 10진수로 변환하고 더한 뒤, 다시 2진수로 변환하는 방법이었다.이 방식을 몰라서 진법 변환을 찾았고, parseInt와 toString을 이용하면 변환이 가능해서 적용했더니, 주어지는 2진수가 큰 경우 범위를 벗어나 제대로 연산이 이루어지지 않았다.그럼, BigInt를 써보자 했는데 BigInt는 또 진법 변환 방식이 다르더라. 아래에 정리해..
[LeetCode] 118. Pascal's Triangle, Easy
·
CodingTest/LeetCode
1. 문제정수 numRows가 주어질 때, 그림과 같은 파스칼 트라이앵글을 만들어 2차원 배열로 반환하라.여기서, 파스칼 트라이앵글은 문제에 들어가면 애니메이션으로 보여주지만, 위 2개의 수를 합한 수가 현재 수가 되도록 하는 것.2는 1 + 1, 3은 2+1 2+1, 4는 3+1 3+1, 6은 3+3 과 같다.2. 풀이function generate(numRows: number): number[][] { // numRows가 1과 2는 아래의 로직을 탈 필요가 없이 무조건 1로 채워진다. const result = [[1]]; if(numRows === 1) return result; result.push([1,1]) if(numRows === 2) return re..
[LeetCode] 66. Plus One, Easy
·
CodingTest/LeetCode
1. 문제정수 배열 digits이 주어질 때, 각 인덱스를 자리수로 하는 정수에 +1한 결과를 배열로 반환하라.2. 풀이function plusOne(digits: number[]): number[] { const number = (BigInt(digits.join('')) + BigInt('1')).toString(); return Array.from(number, Number)};접근 방법 자체는 배열 -> 문자열 -> 정수 -> +1 -> 배열로 맞게 했는데, 이렇게 하니까 테스트 케이스 중 큰 수의 경우 뒷 자리가 잘려서 실패했다.BigInt로 변경하여 처리.
[LeetCode] 747. Largest Number At Least Twice of Others, Easy
·
CodingTest/LeetCode
1. 문제가장 큰 정수를 고유하게 가지는 배열 nums가 주어질 때, 다른 요소들의 2배한 값 이상인 경우는 해당 요소의 인덱스를 반환하고, 그 외는 -1을 반환하라.2. 해결function dominantIndex(nums: number[]): number { const sortArr = [...nums].sort((a,b)=> a-b); if(sortArr[sortArr.length-1] >= sortArr[sortArr.length-2] * 2) { return nums.findIndex(num => num === sortArr[sortArr.length-1]) } else { return -1; }};배열을 정렬하고, 마지막 요소가 가장 크기 ..
[LeetCode] 724. Find Pivot Index, Easy
·
CodingTest/LeetCode
1. 문제 배열 nums가 주어질 때, 특정 인덱스를 기준으로 왼쪽과 오른쪽의 합이 같은 인덱스를 반환하라.이를 pivot index라 하며, 배열의 양 끝에도 존재할 수 있으며 만약 존재하지 않으면 -1를 반환하라. 2. 풀이function pivotIndex(nums: number[]): number { let sum = 0; nums.forEach(num => sum+=num); let leftSum = 0; for(let i =0; i못 풀었다. 투 포인터 써서 어떻게 해보려고 했는데, 음수인 경우가 해결되지 않아서 다른 사람들의 풀이를 참고했다.원리는 왼쪽 pivot index를 골라야 하므로, leftSum = 전체 총합 - 현재 인덱스 값 - rightSum을 이용해서 ..
[LeetCode] 448. Find All Numbers Disappeared in an Array, Easy
·
CodingTest/LeetCode
1. 문제n개의 요소로 이루어진 배열 nums가 주어질 때, nums[i]는 1~n 사이에 존재하는 경우, 누락된 정수 배열을 반환하라. 2. 해결function findDisappearedNumbers(nums: number[]): number[] { const set = new Set(nums); const max = Math.max(...set); for(let i = 1; i처음 풀이할 때 방식이다.Set을 이용해 중복을 제거하고, 1부터 n까지 반복하며 목록을 갱신해준다.이렇게 하니까 시간이 상당히 오래걸려서 다른 사람 풀이도 한 번 봤다.function findDisappearedNumbers(nums: number[]): number[] { for(..
[LeetCode] 414. Third Maximum Number, Easy
·
CodingTest/LeetCode
1. 문제정수 배열 nums가 주어질 때, 고유한 값 중 3번 째로 큰 요소를 반환하라.2. 해결function thirdMax(nums: number[]): number { let firstMax = -Infinity, secondMax = -Infinity, thirdMax = -Infinity; new Set(nums).forEach(num => { if (num > firstMax) { thirdMax = secondMax; secondMax = firstMax; firstMax = num; } else if (num > secondMax) { thirdMax = secondMax; ..
[LeetCode] 1051. Height Checker, Easy
·
CodingTest/LeetCode
1. 문제현재 학생들이 서 있는 순서대로 나열한 배열 heights가 주어질 때, 키 순으로 나열한 배열 expected와 비교하여 옳바르지 않은 위치에 선 학생들의 수를 구하라.2. 해결function heightChecker(heights: number[]): number { const expectedHeights = [...heights].sort((a,b) => a-b); let result = 0; heights.forEach((height, index) => expectedHeights[index] !== height && result++) return result;};뇌가 투포인터에 절여져서 그런지 투포인터를 써서 해결하려고만 했다.배열을 정렬해서 expected 배열을..
[LeetCode] 905. Sort Array By Parity, Easy
·
CodingTest/LeetCode
1. 문제배열 nums가 주어질 때, 짝수를 앞으로 홀수는 뒤로 미뤄서 배열을 반환하라.앞쪽에 짝수, 뒤에 홀수가 모여있기만 하면 된다. 순서는 상관없다.추가 배열을 사용하지 마라.2. 해결function sortArrayByParity(nums: number[]): number[] { let pointer = 1; let i = 0; while(pointer 대체로 이렇게 자리 바꾸는 문제는 투포인터를 써서 현재 위치를 가리키고, 타겟 포인터를 둬서 조건에 맞는지 판별한 후 교환 연산을 수행하면 된다.비슷한 문제https://fbtmdwhd33.tistory.com/309 [LeetCode] 283. Move Zeroes, Easy1. 문제배열 nums가 주어질 때, 모든 0을 오른쪽에..