문제 링크입력으로 주어진 숫자타입의 배열에서 합이 타겟(target)이 되는 두 인덱스 배열을 리턴 (오름차순)입력받은 숫자들을 타겟값에서 뺀다음 사전 객체<숫자, 인덱스>에 존재 하는지 여부를 판단 후 없다면 사전에 넣어주고 있으면 꺼내서 리턴하는 방법
문제 링크두개의 링크드 리스트(LinkedList)가 주어진다. 링크드리스트는 숫자를 역방향으로 가르키고있다.두개의 링크드 리스트의 합을 구하고 구한 값을 링크드 리스트로 리턴하는 문제.여기서는 링크드리스트를 ListNode로 구현해놓음.Linked list를 사용하여
문제 링크반복되는 문자가 없는 최고로 긴 문자열의 길이슬라이딩 윈도우 방법을 사용함.시작과 끝 인덱스를 이동하며 중복이 없는 문자열을 확인하고 길이를 저장한다.마지막 인덱스를 늘린다.시작과 끝 인덱스를 이용해서 문자열을 추출화여 반복되는 문자열이 있는지 검사한다.반복이
문제 링크주어진 두 배열을 중간값을 찾는 문제두 배열을 합치고 숫자를 기준으로 오름차순 정렬을 한다.중간 인덱스를 찾는데 짝수일경우 중간 두값, 홀수일경우 중간값을 소수점 5개까지 표시하여 리턴한다.
문제 링크최고로 긴 팰린드롬을 구하는 문제palindromic 함수를 만든다.문자열을 처음부터 시작한다.마지막 문자 값을 비교하며 팰린드롬인지 확인한다.맞다면 그 길이를 저장하고 아니라면 3번과정을 반복한다.마지막 문자에서 처음 시작문자까지 도착하면 처음에서 다음 문자
문제 링크문자열열과 숫자가 주어지면 아래의 형태로 지그재그로 배치후 행의 순서의 맞게 문자열을 리턴행의 개수만큼 배열을 만든다. 배열의 값은 빈 배열로 초기화한다.첫번째 행에서 마지막행까지 값을 순차적으로 넣어주고 행을 벗어나면 반대 방향으로 찍어주게 조건처리하여 문제
문제 링크32-bit의 integer x를 뒤집어서 리턴하라. 이때 \[-2^31, 2^31 -1] 범위를 벗어나면 0을 리턴한다.음수인지 아닌지를 파악, 음수라면 '-'을 따로 보관문자를 뒤에서부터 새로운 배열의 값으로 추가함, '-'의 값만 추가하지않는 조건처리in
문제 링크C 언어의 atoi를 구현하는 문제정규식을 이용하여 부호(+,-)와 숫자만 가지고온다. 그리고 정규식으로 값을 찾지 못했을때 0을 가지는 배열을 반납하도록한다.integer 범위 조건을 처리를하고 범위를 벗어나지않으면 그대로 리턴한다
문제 링크팰린드롬인지 확인하는 문제수를 배열로 만들고 중간까지의 인덱스를 이용해서 배열 양쪽의 값을 비교하면서 틀린값이 있는지 확인한다.
문제 링크정규 표현식의 Matching 함수를 구현하는 문제문제는 정규식을 사용하는 방법을 물어보고있다. 주어진 문자열이 정확하게 패턴의 값과 같은지를 물어보고 있기때문에 정규식패턴에 ^,$ 을 넣어서 처음과 끝까지 비교할 수 있도록 하였다.
문제 링크문제 도움위 그림과 같이 두 막대를 기준으로 물을 최대로 채웠을때 가장 너비가 큰 값을 찾아라.왼쪽 인덱스와 오른쪽 인덱스를 이용해서 두 값중 작은 높이를 가지고있는 값을 높이로 잡는다물을 채운 너비의 최고값을 저장한다.작은 사이즈의 높이를 가지고있는 인덱스를
문제 링크주어진 숫자값을 로마 숫자로 표현하기로마 심볼의 배열을 내름차순으로 생성한다.인덱스를 이동하며 그 수를 주어진 값에서 나눠서 값이 존재하면 존재하는 만큼 심볼을 생성한다.주어진 값이 0이 될때까지 심볼 배열의 인덱스를 이동하며 계산을 반복한다.
문제 링크로마값을 숫자로 표현하기로마 심볼의 배열을 내름차순으로 생성한다.문자열 첫번째부터 심볼이 존재하는 여부를 파악한다. 심볼이 존재한다면 해당 심볼의 길이만큼 인덱스를 이동시켜 찾고자하는 심볼이 인덱스의 첫번째 값인지 파악한다.뒤쪽에 심볼이 체크되는것을 방지하기
문제 링크주어직 문자열배열에서 공통적으로 사용되는 가장 긴 접두어를 찾아라.첫번째 문자열에서 두번째 문자열을 비교한다첫번째 인덱스부터 순차적으로 동일한 문자를 모아서 누산기에 저장한다.누산기와 그 다음 문자열을 비교하고 2번 행동을 반복한다.
문제 링크주어준 배열의 요소 3개의 합이 0이되는 경우를 모두 구하여라.주어진 배열을 정렬한다. 주어진 수의대하여 값을 카운팅해둔다.순차적으로 두개의 반복문을 이용해서 나머지 값을 찾아낸다. 이때 사용한 숫자를 카운팅에서 빼준다.나머지값이 카운팅해둔 값에 존재하는지 확
문제 링크주어준 배열의 요소 3개의 합이 target과 가장 가까운 값을 구하여라.정렬을하여 인덱스를 순차적으로 접근했을때 오름차순이 나오도록 유도한다.반복문을 이용해서 인덱스를 접근한다.모두 더한 값을 타겟숫자에서 빼서 남은 숫자의 절대값으로 타겟과의 거리를 알아낸다
문제 링크주어진 숫자 다이얼을 이용하여 아래 키패드로 나올수 있는 문자 조합을 모두 구하여하려.핸드폰 자판번호마다 키 배열을 매핑해둔다.재귀함수를 이용해서 순차적으로 올수있는 경우에대해 최대 길이에서 값을 저장해둔다.
문제 링크주어준 배열의 요소 4개의 합이 target이되는 경우를 모두 구하여라.3Sum문제 풀이와 같음. (반복문 k를 추가함)
문제 링크링크드리스트의 head가 주워지고 head로부터 n번째 노드를 제거하는 문제재귀함수를 이용해 주어진 ListNode의 깊이를 파악한다.깊이를 이용해서 제거할 바로 앞까지 이동한다.제거하고자 하는 노드를 건너뛰고 제거할 노드가 가르키는 노드를 가르키도록 만든다.
문제 링크괄호 (,),\[,],{,}가 주어지면 괄호의 열고 닫히는 순서가 올바른지 확인문자열을 순차적으로 받는다.괄호가 열리면 stack에 집어넣고, 닫히는 부분이라면 stack에서 뺀다.stack에서 뺀 값과 괄호가 닫히 문자와 매핑되는 열리는 괄호를 비교한다.모든
문제 링크두 숫자로 이뤄진 링크드리스트를 오름차순으로 머지하라.list1과 list2 중에서 값이 작은 노드를 head 노드가 가르키게한다.작은 노드로 선정된 노드는 다음노드를 가르키도록한다.그렇게 두 list 노드가 null을 가르킬때까지 head에 이어붙어나간다.
문제 링크숫자 n이 주어질때, 괄호 (,)를 n개의 쌍이맞는 올바른 괄호가 될 수 있는 경우를 모두 만들어라.재귀함수를 이용한 방법주어진 N보다 열린괄호가 적으면 열린괄호를 추가하는 함수 호출과 열린괄호보다 닫힌괄호의 수가 적으면 닫힌괄호를 추가하는 로직을 수행재귀함수
Merge Two Sorted Lists 문제와 풀이방법은 같음모든 노드가 값을 잃을때까지 반복문을 실행가장 작은 값을 가진 노드를 찾음.해당 노드를 이동하고 가지고있던 값을 이용해 새로운 노드를 생성하고 head에 이어붙임.problem
문제 링크서로 인접하는 홀수번째와 짝수번째의 노드의 위치를 서로 자리 이동 시키는 문제빈 노드를 만들고 head를 가르키도록한다.첫번째와 두번째 노드를 swap하기 위해서는 첫번째와 두번째, 세번째 노드를 저장해두고 첫번째가 세번째를 가르키고 두번째가 첫번째를 가르키게
문제 링크k개의 노드들마다 해당 노드들의 순서를 뒤집어 나열하는 문제첫번째 노드를 가르키는 빈 preHead 노드를 생성한다 (head를 가르킴).첫번째 노드부터 k개의 노드를 reverse하기 위해서 노드를 이동하면서 각 노드를 배열에 보관해둔다. 이때 마지막노드가
문제 링크입력으로 주워진 배열에서 중복값을 뒤로 배치하고(이때 어떤 값으로 수정하든 상관없음) 중복이 없는 요소의 합을 리턴하라.반복문을 이용하여 현재 인덱스와 다음 인덱스의 값을 비교한다.값이 다르다면 중복되지 않는 값이라고 판단하여 기존 배열의 앞에 넣어준다idx
문제 링크입력이 주워지면 조건에따른 해당 값을 변경또는 제거한다. (주워진 배열의 길이는 중요하지않다)반복문을 이용하여 현재 인덱스와 다음 인덱스의 값을 비교한다.조건의 값과 같으면 true로 판단하여 넘어가고, 다른경우 제거대상이 아니므로 배열의 처음부터 덮어서 씌어
문제 링크Javascript String 함수중에서 String.prototype.indexOf()를 구현하는 문제찾고자하는 값이 비어있을때는 0을 반납한다.haystack 문자열을 순서대로 비교하면서 needle의 문자열과 일치하는지 두 반복문을 이용해서 비교한다.이
문제 링크입력값인 divided를 divisor로 나누는 문제.Integer 범위를 벗어나면 그 마지막 범위를JS는 숫자 타입이 Number로 존재. 범위가 Integer와 다르기때문에 범위 계산을 미리 해둔다.값을 나누고난뒤 소수점자리는 버린다.나눈값이 범위를 넘었을
문제 링크주어진 words 배열이 연속적으로 존재하는 s 문자열의 인덱스를 구하는 문제s 문자열을 반복문을통해 각 인덱스에 뒤의 문자열을 메소드에 넘김넘긴 문자열에서 첫번째 인덱스의 문자가 (길이가 같은것을이용) 배열에 존재하는지 확인존재한다면 문자열에서 해당 값을 제
문제 링크순열을 오름차순으로 나열했을때 주어진 nums의 다음번에 나올 순열을 구하는 문제solution다음으로 큰 순열을 구하기위해서는 가장 작은 단위에서 숫자를 변경하고 그 뒤의 숫자들을 오름차순하는 방법이있다.가장 작은 단위에서 변경 가능한 숫자를 찾는다. 이유는
문제 링크올바른 괄호가 연속적으로 나오는 최대 길이.올바른 괄호를 처리하기 위해서 왼쪽에서 오른쪽으로 반복문을통해 열린괄호(left)와 닫힌괄호(right)의 쌍이 일치하는지 확인한다.먼저 열린괄호에대한 최대개수를 구하고 그 후에 닫힌괄호에대한 최대개수를 구함으로써 모
문제 링크숫자로 주워진 배열에서 타겟값의 인덱스를 찾는 문제. O(logn) (배열이 정렬된 상태에서 회전되어있음) O(logn) 으로 풀기위해서 이진탐색을 이용함.회전의 유무를 파악하고 있다면 회전하는 인덱스를 찾아낸다.회전하는 인덱스를 찾다가 타겟값이 운좋게 나오
문제 링크정렬된 숫자 배열이 주워지고 찾고자하는 값이 주어진다.찾고자하는 값의 처음 인덱스와 마지막 인덱스를 구하는 문제. O(log n)O(logn) 으로 풀기위해서 이진탐색을 이용함.가장 왼쪽의 인덱스를 구하는 이진탐색과 가장 오른쪽의 타겟을 찾는 이진탐색 함수를
문제 링크주어진 배열에서 타겟으로 주어진 숫자값을 찾는 문제.이때 타겟값이 없다면 타겟값을 삽입했을때 와야할 인덱스를 반납한다.O(logn) 으로 풀기위해서 이진탐색을 이용함.이진탐색을 이용하여 문제를 해결한다.이때 조건을 왼쪽 인덱스는 target보다 작게 조건을 정
문제 링크스도쿠 문제에 오류가 없는지 확인하는 문제(풀지않은 상태에서 문제에 오류가 없는지만 확인하면된다.)가로행에대한 중복되는 숫자없는지 확인세로행에대한 중복되는 숫자가 없는지 확인각각의 사각형에서 중복되는 숫자가 없는지 확인
문제 링크스도쿠 문제를 풀면된다.DFS에 Backtracking을 응용한 문제배열을 '열'부터 순차적으로 .을 만났을때 1~9까지 값을 넣어보면서 스도쿠의 조건에 올바른지 확인한다.만약 조건에 맞지않다면 바로 이전 경우의 수로 돌아가 다음 케이스를 넣어본다. 이 방법을
문제 링크N == 1이면 1이다.N != 1이면 N-1의 Say값을 받는다.Say란, 입력으로 주어진 값(숫자)을 앞에서부터 차례대로 읽었을때 연속되는 숫자의 개수를 반납하는 기능이다.ex) 3322251 : 3이 2개, 2가 3개, 5가 1개, 1이 1개 따라서, 2
문제 링크후보리스트에서 중복을 허용하여 합했을 때 target이 나오는 경우를 구한다.DFS를 이용하여 배열의 순서대로 depth로 들어간다. 깊은 뎁스로 이동 하면서 해당 인덱스의 값을 더하고, 그 값이 target과 일치하면 저장, 초과하면 함수를 리턴시켜 더이상
Problem 문제 링크 주어진 배열의 요소들을 합하여 target의 값이되는 조합을 구하여하는 문제 Solution combination sum 요소의 중복을 뺀 방법 현재 인덱스를 추가하지않고 뎁스를 이어나가면된다. JS Code
문제링크정렬되지 않은 숫자 배열에서 가장 작은 배열에 없는 양의 수를 구하여라.배열의 양의 숫자만 남도록, 오름차순으로 정렬한다.제일 처음 요소가 1이 아니라면 1을 리턴cnt값을 1로 시작해서 배열을 순회하면서 cnt값도 함께 올려주면서 체크한다.이때 중복된값이 연속
Leetcode algorithm study plan > 문제 링크정렬된 배열중에서 타겟값과 일치하는 값의 위치를 찾아라. O(log n)으로O(log n)으로 풀어야하는 문제이므로 이진탐색을 이용한다.이진탐색 조건중인 배열의 정렬상태를 확인한다.이진탐색은 배열의 값이
Leetcode algorithm study plan > 문제 링크1부터 N까지의 수 중에서 제공되는 isBadVersion 함수를 통해 가장 낮은 수에서의 true값을 찾는 문제. O(log n)으로isBadVersion 함수@param {Integer}@return