반응형

Problem Solved

    [LeetCode][javascript] 122번 - Best Time to Buy and Sell Stock II

    문제 122번 - Best Time to Buy and Sell Stock II 문제 설명 가장 이익이 크게 거래 누적값을 계산하는 문제 내가 이해한 제약조건은 크게 두 가지이다. 사기 전에는 팔 수 없고, 팔기 전에는 살 수 없다. 사는 값이 바로 이후에 팔 값보다 작으면 산다. 하지만 문제의 예시와 풀이가 살짝 맞지 않는 것 같다. 내가 푼 풀이가 나중에 보니 솔루션 중 하나였지만, Example 2번은 (2-1) + (3-2) + (4-3) + (5-4) 방식으로 계산되어 답이 나온다. 어쨌든 위의 두 조건에 맞춰 반복문을 돌며 누적값을 계산해 나가도록 풀었다. 성공 코드 const maxProfit = (prices) => { let result = 0; for (let i = 0; i < pri..

    [LeetCode][Javascirpt] 15번 - 3Sum

    문제 [LeetCode][Javascirpt] 15번 - 3Sum 배열에서 3개의 수를 더했을 때 0이 되는 경우를 배열에 저장해서 리턴해 줘야 하는 문제 3개의 수는 ([-1,0,1], [-1,0,1])과 중복되어 들어 있으면 안 된다. 코드 설명 실패 코드 경우의 수만큼만 반복문을 돌게 하고 싶었는데 딱히 기억이 안 나서 반복문으로 풀었다. for문을 중첩해서 3개 쓰면 복잡도가 기본적으로 O(N^3)이다. 근데 for문을 돈다고 해서 필요한 경우의 수만 반복문을 도는 것은 아니다. 그래서 문제이다. 문제의 예제 배열은 경우의 수가 아래와 같다. 하지만 for문의 경우 모든 경우를 돌게 되어 중복한 값이 결과로 나올 수 있다. 0 1 2 0 1 3 0 1 4 0 1 5 1 2 3 1 2 4 1 2 5..

    [LeetCode][javascript] 137번 문제 - Single Number II

    문제 [LeetCode][javascript] 137번 문제 - Single Number II 문제 풀이 배열에서 1번만 등장하는 숫자를 찾아서 반환하는 문제이다. 내가 푼 코드 배열 숫자와 등장하는 횟수를 저장하기 위해 Map을 사용했다. key 값은 배열의 숫자, value 값은 숫자의 횟수를 저장한다. value가 3이 되면 map에서 삭제한다. 첫 번째 키를 반환한다. 다른 사람 코드 입력된 배열을 Set에 넣어 유니크한 값만 남게 하고, 이를 모두 합한다. 입력된 배열의 합을 구한다. 유니크한 값의 합에 3을 곱하면 모든 값이 3번씩 들었을 경우이다. 하지만 문제에서 그런 경우는 없다고 했으므로 여기에 배열합 값을 빼 주고 2를 나누면 원하는 1번 등장하는 배열값이 나오게 된다. reduce를 ..

    [LeetCode][javascript] 345번 문제 - Reverse Vowels of a String

    문제 345번 문제 - Reverse Vowels of a String 문제 설명 문자열에서 모음(aeiou)만 반대 순서로 뒤집는 문제 내가 푼 코드 입력받은 문자열을 배열로 만든다. 모음의 인덱스를 저장할 빈 배열과 모음을 저장하는 문자열을 만든다. 반복문을 돌며 모음인 문자열(대문자 포함)의 인덱스를 2번에서 만든 배열에 추가한다. 반복문을 돌며 만들어진 배열을 배열의 크기의 반만큼 반복되게 한다. 반복문을 돌며 해당 인덱스에 해당하는 모음을 반대로 저장시킨다. join을 사용해 문자열로 만들고 반환한다. 풀이 코드 정규표현식과 고차함수인 filter를 활용해 모음만 있는 문자열을 배열로 저장한다. 정규표현식의 test() 메소드는 대상 문자열 속에 일치하는 문자열이 포함되어 있는지 검사하고 tru..

    [LeetCode][javascript] 344번 문제 - Reverse String

    [LeetCode][javascript] 344번 문제 - Reverse String

    문제 344번 문제 - Reverse String 문제 설명 내가 푼 코드 문제에 새로운 공간을 만들지 않고 시간 복잡도를 O(1)라고 해서, 반복문을 전체 배열 길이의 반만큼 돌며 값을 swap하도록 했다. 솔루션 코드 열심히 생각해서 풀고 솔루션을 봤는데 Life is short, use Python. (c)문구와 함께 한 줄의 코드만 있었다. 자바스크립트에도 있는 메소드라 그대로 적용했는데 통과됐다. 시간도 반복문 돌때랑 차이가 별로 없었다. 문제를 봤을 때 가장 간단한 해결법을 생각하는 연습도 필요할 것 같다. 성공 코드 내가 푼 코드 const reverseString = s => { const SIZE = s.length; const halfIndex = Math.floor(SIZE / 2);..

    [BOJ][Java] 4949번 - 균형잡힌 세상

    문제 백준 4949번 문제: 균형잡힌 세상 문제 설명 위(괄호 문제)와 같은데 괄호의 종류가 다양해진 문제 [BOJ][Java] 9012번 - 괄호 문제의 응용 문제이다. 나는 괄호 문제에서 조건만 추가해서 답을 구했다. 추가 조건 .이 오면 멈춰야 하므로 while문으로 변경했다. 문자열 .이 오면 while문 중지하도록 했다. 소괄호()일 때와 대괄호[]일 때의 조건을 분리해 스택에 쌓이고 빠질 수 있도록 했다. 이 때, [)와 같은 짝이 맞지 않는 괄호가 true가 되는 것을 막기 위해 stack.peek() == "(" 조건을 추가해 주었다. 성공 코드 import java.util.Scanner; import java.util.Stack; public class Main { public stat..