본문 바로가기
728x90

Research/Coding Test24

20. Valid Parentheses Problem https://leetcode.com/problems/valid-parentheses/ Intuition Approach 짝이 맞는지 확인하려면 짝 지어진 것들은 제거하고 남은 것만 확인하면 된다. [], (), {}이 있는지 무한반복으로 확인하고 만약 있으면 replace 메소드로 제거해주고, 없으면 반환한 뒤 남은 문자열이 있는지 확인한다. 만약 있으면 모두 제거된 것이 아니기 때문에 거짓을 반환하고, 남는 것이 없을 경우 모두 처리가 되었다는 의미이기 때문에 참을 반환한다. Code /** * @param {string} s * @return {boolean} */ var isValid = function(s) { // []의 인덱스 위치. 없으면 -1. 있으면 0 ~ while(s... 2023. 3. 21.
13. Roman to Integer Problem https://leetcode.com/problems/roman-to-integer/ Intuition 인수로 받는 텍스트를 split('')으로 쪼갠 배열을 루프로 돌면서 계산을 하는 방식을 생각했으나, 로직이 복잡해진다는 생각을 했다. 이보다 좀 더 간단한 방식으로 계산을 할 수 있지 않을까. Approach 로마 숫자 로직 계산의 핵심은 예외 처리다. 이 예외 6개만 처리를 해주면 되기 때문에 이를 계산한 숫자로 바로 치환해주면 되지 않을까? 모든 수가 담긴 객체를 만들어서, 예외 숫자부터 '+num' 형식으로 치환해준 뒤, 마지막에 이 텍스트를 eval() 메소드로 계산해서 해결했다. Code /** * @param {string} s * @return {number} */ var .. 2023. 3. 20.
1. Two Sum Intuition numbs 요소들 중 2개의 합이 target이 되는 조합의 요소 2개를 찾은 다음, 이 두 요소의 index를 반환하기 항상 1개의 해결책만 존재한다는 조건 처음 든 생각은 2중 루프로 조합을 비교해가면 된다고 생각했다. nums.length가 3개 미만인 경우, 바로 [0,1] 바로 리턴하여 코드를 정리해준다. Approach 처음 이중 루프의 조건문을 i = 0, j = 1로 접근했으나 에러가 발생했다. i와 j가 동일하게 1번째 인덱스를 가르키고, 이 인덱스에 위치한 값이 5, target이 10일 경우를 생각해보자. 이 경우 5 + 5는 10이기 때문에 같은 인덱스를 정답([1, 1])으로 반환해버린다. 이 문제는 j 초기값에 절대값을 대입해서 발생한 문제다. j는 항상 i보다.. 2023. 3. 19.
724. Find Pivot Index https://leetcode.com/problems/find-pivot-index/?envType=study-plan&id=level-1 Intuition Pivot Index는 해당 인덱스를 기점으로 좌/우 요소들의 합이 같아야 한다. 따라서 좌/우의 합을 score로 계산하여 비교하는 방식으로 문제를 풀 수 있을 것이라 생각했다. 처음에는 매 요소를 순차적으로 돌 때마다, 좌우의 총합을 매번 계산하여 비교하는 방식을 생각했으나, 이는 비효율적이라 생각. Approach 순차적으로 반복문을 돌아야 한다면 왼쪽에서 오른쪽으로 갈 것이다. 그 말은 우측은 항상 총합이 적어질 것이고, 왼쪽은 반대로 더 커질 것이다. 따라서 오른쪽의 총합을 미리 구해두고, 감산한 수치를 왼쪽으로 옮겨주는 방식으로 해결하면 .. 2023. 3. 19.
728x90