두 수를 더해 특정한 수가 되도록 하라
양 옆에서 다가오는 포인터들
물의 양은 항상 벽의 최소값과 상관있다.
파싱?
Dynamic programming이 생각나는 문제
아들딸이 다컸다 이 딸들아
연결리스트를 거꾸로 돌리기
토끼와 거북이
quick sort가 아닌 quick select
이게 어떻게 O(logN) 시간복잡도가 될수 있지??
Binary search의 응용
간단한 이진트리 알고리즘
BFS와 DFS를 활용한 다방면 문제해결법
level order traversal에 대해 알아보자
You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order, and each of their nodes conta
Tree 노드 갯수 세기
Binary search tree 기초
2D array의 순회
BFS의 활용
발상의 전환
그래프에 대한 BFS
Topology sort, 위상 정렬에 대해 알아보자
최단 경로 계산 방법론들
다이나믹 프로그래밍의 기초.
3차원 메모이제이션
백트래킹의 활용
회문의 특성을 이해하자
문자열의 인덱스 다루기.
숫자와 문자열
atoi의 구현
간단한 문자열의 파싱
경우의 수
문자열의 동일한 prefix
BFS 변형 기출
dfs의 활용
스도쿠 중복 확인 알고리즘
휴일이지만 한문제는 써야지
메모이제이션 활용의 기초
백트래킹
조합의 사용
s가 t로 나누어진다는것은 s 문자열이 여러개의 t의 나열로 이루어져 있다는 뜻이다.주어진 두 문자열에 대해 최대공약-문자열 을 구하시오.1 <= str1.length, str2.length <= 1000두 문자열은 영어 대문자만을 포함한다.문자열을 나누었을
파이썬에서 정렬 비교함수 사용하기
배열섞기
힙정렬의 사용
연결 리스트
정수로만 이루어진 오름차순으로 정렬된 배열이 주어진다.모든 원소는 하나를 제외하면 모두 2번 반복한다.반복하지 않는 원소 하나를 찾아 리턴하시오.시간복잡도 O(log n), 공간복잡도 O(1) 안에 해결하시오.1 <= nums.length <= 10^50 &
Dynamic Programming
트리에 자식이 네개?!
이진탐색의 색다른 활용법
Trie의 색다른 활용법~
오래간만의 Daily EASY!
그래프의 연결성
돌고돌아 결국 DP
연결 리스트의 head와 정수 x가 주어진다.x보다 작은 값은 연결리스트의 왼쪽에, x보다 크거나 같은 값은 오른쪽에 가도록 해라단, 값의 위치가 바뀔때 상대적인 위치는 유지되어야 한다.연결 리스트의 길이는 0 ~ 200 이다.$$-100 <= x <= 20
정수 자료형 리스트와 슬라이딩 윈도우의 크기가 주어진다.만들어질수 있는 모든 슬라이딩 윈도우 내부의 최댓값을 가지는 배열을 리턴하시오.배열에서 검은색으로 칠해진 부분이 슬라이딩 윈도우이다.5개짜리 배열에 3개 크기의 슬라이딩 윈도우는 위의 3가지가 있을수 있다.윈도우가
세개의 문자열 s1, s2, s3이 주어집니다.s3이 s1과 s2 두개를 끼워맞춰서 생성되는지 여부를 리턴하세요두 문자열을 끼워 맞춘다는것은 s1과 s2를 부분문자열로 분리했을때, 이들을 순서대로 사용해 s3을 조립할수 있어야 합니다.$$0 <= s1.length
index번째 날짜의 주식 가격이 들어간 prices 배열이 주어진다.하나의 주식을 샀다 다시 판다고 가정할때, 최대의 수익을 구하시오.$$0 <= prices.length <= 10^5$$$$0 <= pricesi <= 10^4$$가장 오른쪽의
당신이 그 위치에서 점프할수 있는 최대의 길이의 정보를 가지는 배열이 주어집니다.첫번째 위치에서 마지막 위치까지 점프로 이동할수 있는지의 여부를 리턴하세요.$$0 <= nums.length <= 10^4$$$$0 <= numsi <= 10^5$$문
주어진 정수 배열에 대해서 세 원소를 뽑아 triplet을 만들때, 각 원소의 합이 0이 되는 쌍들을 구해 배열로 만들어 리턴하시오중복된 triplet은 있어선 안됩니다.$$3 <= nums.length <= 3000$$$$-10^5 <= numsi &
정수 배열 nums와 정수 x가 주어집니다.한 Operation 을 통해 nums의 왼쪽 끝이나 오른쪽 끝의 값을 제거하고 그만큼의 값을 x로부터 제거할수 있습니다.최소한의 Operation 을 통해 x를 0으로 만들수 있는 Operation 의 횟수를 구하시오단, 불
문자열 s와 t가 주어집니다.문자열 t에 있는 모든 문자를 포함하는 가장 작은 s의 부분문자열을 구해 리턴하세요답은 반드시 한개 이하가 존재하며, 답이 없을시 빈 문자열을 리턴하세요대소문자를 구분합니다.$$m == s.length$$$$n == t.length$$$$1
문제 위와 같이 생긴 샴페인 잔의 탑이 100층이 있습니다. 각각의 샴페인은 1의 양을 담을수 있고, 그 이상은 양 옆으로 흘러 내립니다. 흘러내리는 양은 정확히 절반씩입니다. 맨 위에 poured 만큼을 흘려 보냈을떄 queryrow 번째 줄, queryglass
정렬되지 않은 정수 배열이 주어졌을때,이들로 이룰수 있는 가장 긴 연속하는 수열의 길이를 구하세요O(n) 시간 복잡도 안에 해결해야 합니다.$$0 <= nums.length <= 10^5$$$$-10^9 <= numsi <= 10^9$$먼저 모든
주어진 문자열 s중에서 모든 중복되는 문자를 제거하세요.단, 결과는 사전순으로 가장 앞에 오는 값이여야 합니다.이번 풀이는 먼저 코드를 쓰고 해설하는 식으로 진행해 보겠다.자료구조last : 특정 문자열이 언제 가장 마지막에 나오는지를 가지고 있다.문자가 어찌되든 한번
문제 정수 배열이 주어집니다. index는 i < j < k 인데, 배열 nums에 대해 nums[i] < nums[k] < nums[j] 인 패턴이 존재하는지를 리턴하세요. 예를 들자면 [1, 3, 2] 가 있습니다. 예시
문제 링크풍선이 가로로 차지하는 첫 지점과 끝지점들의 배열이 주어지는데, 이들을 화살로 터뜨린다고 할때 최소한의 화살로 터뜨릴 경우화살을 몇개나 쓰는가?$$1 <= points.length <= 10^5$$$$pointsi.length == 2$$$$-2^{
특정 트리의 preorder 순회와 inorder 순회의 결과를 담은 두 배열이 주어진다. 이 둘에 다 해당되는 특정한 트리를 리턴하시오.$$1 <= preorder.length <= 3000$$$$inorder.length == preorder.length
정수 배열 nums가 주어집니다.배열의 index 인 i, j, k 에 대해i < j < k 인 경우 numsi < numsj < numsk 가 성립하는 경우가 존재하는지boolean 자료형으로 리턴하시오.$$1 <= nums.length &
정수배열 nums와 정수 k가 주어집니다.한번의 연산을 통해 nums에서 합쳤을때 k가 되는 두 원소를 제거할수 있습니다.nums에서 위 연산을 수행할수 있는 최대 횟수를 리턴하시오.$$1 <= nums.length <= 10^5$$$$1 <= nums
두 변수의 쌍의 배열인 equations 와 배열 한 쌍 (a, b) 에 대해 a / b 의 값을 가지는 equations 배열이 있다.두 배열을 이용해 queries 배열 내 변수 쌍의 나눗셈 결과를 배열로 리턴하시오.만약 나눗셈이 불가능하다면 -1을 리턴하시오.$$
0 ~n-1 으로 이름붙혀진 n개의 도시와 그 도시들을 잇는 도로 n-1 개의 배열이 주어진다.두 도시를 건너는 방법은 하나밖에 없다. ( 사이클이 없다 )connectionsi 배열의 a_i, b_i 는 a도시에서 b도시로 가는 도로가 존재한다는 의미이다.0번 도시로
k개의 숫자로 이루어져 총 합이 n이 되는 숫자의 조합들을 리턴하세요숫자는 1~9 까지 사용 가능하며, 같은 숫자가 두번이상 쓰여선 안됩니다.$$2 <= k <= 9$$$$1 <= n <= 60$$백트래킹을 사용한다.현재까지 구한 합, 추가 가능한
n 길이의 배열 두개가 주어질때 0~n-1 의 index중 k개의 조합을 선택했을때sum(nums1i_0, nums1i_1, ..., nums1i_k-1) \* min(nums2i_0, nums2i_1, ..., nums2i_k-1) 의 최대값을 구하시오$$1 <
i번째 날의 주식 가격을 담은 prices 배열이 있습니다. 또한 주식을 판매할때마다 fee 만큼의 비용을 지불해야 합니다. 1주를 매수, 매도 함으로 얻을수 있는 최대의 이익을 구하세요 단 아래 규칙을 따라야 합니다.동일한 날짜에 매수, 매도 주문을 체결할수 없습니
정수 n이 주어진다, n+1 크기의 배열을 만들어 배열 값으로 해당 index i를 2진수로 표현했을때 1의 갯수를 가지도록 하십시오.$$0 <= n <= 10^5$$n개의 숫자에 대해 각각 1의 갯수를 구한다.n개의 숫자에 대해 logN의 시간복잡도로 1의
정수 배열 prices가 주어졌을때,next함수를 호출하면 지금까지 자신에게 next로 주어졌던 값들보다 작거나 같았던 값의 갯수에 자기자신의 갯수를 더해 리턴한다.단 작거나 같았던 숫자들은 연속해서 위치해야 한다.Ex. (30, 50, 40) -> 40보다 작거나 같
Run-length encoding 은 문자열을 압축하는 방식중 하나로, 문자가 연속해서 2개 이상 등장할시 이를 (해당문자열)(문자열이 등장한 횟수)로 표현하는 것으로, 예를 들어 aaabbcccc 는 a3b2c3 으로 표현할수 있다.주어진 문자열 s를 Run-l
n개의 작업이 있다, 모든 작업은 startTimei 에 시작해 endTimei에 끝나며 profiti 만큼의 이득을 준다.만약 2개 이상의 작업이 겹치지 않도록 스케줄을 구성할때, 얻을수 있는 최대의 이득을 구하라.$$1 <= startTime.length ==
주어진 배열에 대해 등차수열을 이루는 모든 길이가 3개 이상인 부분수열의 갯수를 구하시오$$1 <= nums.length <= 1000$$$$-2^{31} <= numsi <= 2^{31} - 1$$2차원 dp를 쓰되 row는 2개 이상의 등차수
주어진 정수 배열에 대해 3개의 숫자를 뽑았을때, 세 숫자의 합과 주어진 타겟 값과의 차이가 가장 작은세 숫자의 합을 리턴하시오.$$3 <= nums.length <= 500$$$$-1000 <= numsi <= 1000$$$$-104 <=
사용가능한 숫자들의 배열이 주어지고, 이들을 더해 완성할 타겟 값이 주어진다.배열에 들어간 숫자들을 이용해 타겟 합을 가지는 부분배열을 만들때,모든 부분배열의 조합을 중복없이 전부 리턴하시오.$$1 <= candidates.length <= 100$$$$1
배열이 주어질때 주어진 규칙대로 숫자들을 가져와 합한 최대값을 구하라배열에서 값 하나를 가져와 결과에 더하면 가져온 값 i에 대해 모든 배열의 i-1과 i+1값을 없앤다.$$1 <= nums.length <= 2 \* 10^4$$$$1 <= numsi
먼저 주어진 배열을 최대 k개의 길이를 가지는 subarray 로 쪼갭니다.이후 arr의 값은 자신이 해당한 subarray의 최댓값으로 했을때, 새로 계산된 arr의 합의 최댓값을 리턴하세요$$1 <= arr.length <= 500$$$$0 <= a
양의 정수가 담긴 배열 nums가 주어진다, 이 nums로 아래의 조건을 만족하는 부분배열을 만들었을때최대 길이의 부분배열을 리턴하시오, 여러개가 있으면 그중 아무거나 리턴하면 된다.조건모든 배열의 원소들에 대해 쌍을 만들었을때, 그 쌍은 반드시 한 수가 한 수를 나눌
당신에게 횡방향의 건물들과 몇개의 벽돌과 몇개의 사다리가 주어진다.당신이 건물 사이를 이동할때 이전의 건물이 다음 건물보다 낮거나 같으면 그냥 이동 가능하지만만약 다음 건물이 더 높다면, 반드시 그 높이만큼의 벽돌이나 사다리 한개를 소모해야 한다.당신이 최고로 멀리 갈
N개의 방이 주어지고 방들은 각각 0~n-1 의 번호를 가진다.당신에겐 회의 시간이 담긴 2차원 배열이 주어지는데 배열의 각 원소는 회의의 시작시간, 끝나는 시간 을 가지며 회의는시작시간에 시작해 끝나는 시간을 미포함한 상태로 끝난다.Ex. 1, 3 -> 1시에 시작해
정수 배열 arr이 주어졌을때, arr에서 만들수 있는 모든 부분 배열에 대해 그에 해당하는 최솟값이 존재한다.그 최솟값들의 합을 구하시오.값이 너무 크면 10^9 + 7 로 나머지 연산하여 리턴하라1 <= arr.length <= 3 \* 10^41 <
주어진 길이 n의 정수 배열에 1~n의 숫자들이 있다.이 숫자들이 1번 혹은 2번씩 등장할때, 2번 등장하는 숫자들의 배열을 리턴하시오.단 O(n)의 시간복잡도와 O(1)의 공간복잡도를 가져야 한다.$$n == nums.length$$$$1 <= n <= 1
양수를 표기하는 문자열 num과 정수 k가 주어진다.num에서 k개의 자리를 빼서 가장 작은 정수가 되게 하려면 어떻게 해야하는가?결과로는 k개의 자리를 뺀 작은 정수를 리턴한다.$$1 <= k <= num.length <= 10^5$$num은 숫자 자
단어와 금지된 문자열들이 주어진다.단어의 부분 문자열은 안에 금지된 문자열을 포함하지 않아야 한다.조건을 만족하는 가장 긴 부분 문자열의 길이를 구하시오.$$1 <= word.length <= 10^5$$단어는 반드시 소문자만을 포함한다.$$1 <= f
N\*N 의 그리드가 있다.그리드 내의 1은 그 칸에 도둑이 있음을 의미하며한 위치로 부터 가장 가까운 도둑과의 맨해튼 거리를 안전거리라고 부른다.맨해튼 거리x축의 거리와 y축의 거리를 합산한것Ex. 0, 0 과 3, 4 의 맨해튼 거리는 3 - 0 더하기 4 - 0
이진트리의 루트가 주어지고 노드는 정수 값을 포함한다.한 노드에서 한 노드로 값 1을 전달해줄수 있을때, 모든 노드가 1을 값으로 가지기 위해 필요한 전달 횟수를 구하시오.루트에서 한개씩 왼쪽 오른쪽으로 전달한다.총 2회3을 가진 노드에서 2만큼 루트로 전달 ( 2회
n개 노드(0 ~ n-1)를 가진 무방향 그래프와 노드들의 가중치 및 두 노드로 구성된 간선들의 배열이 주어진다.그래프는 반드시 사이클을 포함하지 않는다.그리고 정수 k가 주어지는데, 사용자는 k를 이용해 특정 연산을 수행할수 있다.한 간선을 잡아 두 점의 가중치에 전
( 와 ) 로 이루어진 문자열이 주어진다.문자열의 부분 문자열중 올바른 괄호 쌍의 최대 길이를 구하시오$$0 <= s.length <= 3 \* 10^4$$문자열 s는 ( 와 ) 로만 구성된다.앞에 여는 괄호가 없는 상태에서 닫는 괄호가 나온다.맞는 쌍이 없
N-Queen 퍼즐은 n \* n 크기의 체스판에 n개의 체스를 두는 방법을 찾는 퍼즐이다.가능한 모든 경우의 수를 리턴하시오.4 \* 4 그리드에서 가능한 NQUEEN 의 예시이 문제는 사실상 주어진 row, col에 퀸을 둘수 있는지를 검사하는 코드만 잘 짜도 가능
밑면의 길이가 1인 히스토그램들이 있다, 이 히스토그램으로 만들수 있는 직사각형의 최대 크기를 구하시오.위 히스토그램은 10 크기의 직사각형이 최대이다.$$1 <= heights.length <= 10^5$$$$0 <= heightsi <= 10^
주어진 정수 n에 대해 1~n 의 값을 가지는 n개의 노드를 전부 사용해 만들수 있는 BST 의 모든 결과를 배열로 리턴하시오1, 2, 35가지 BST 를 만들수 있다.$$1 <= n <= 8$$
이진 검색 트리의 root가 주어진다.두개의 노드 값이 실수로 바뀌었을때In-place 로 바뀐 부분을 다시 돌려 놓아라EX. 1과 3이 바뀌었다, 둘을 바꿔준다.트리 내 노드의 갯수는 2~1000 개이다.노드의 값은 32비트 정수 범위 안이다.먼저 주어진 Binary
음의 값을 가지지 않는 정수 c가 주어질때 $$a^2 + b^2 = c$$ 가 되는 음이아닌 정수 a와 b가 있는지 여부를 리턴하시오.$$0 <= c <= 2^{31} - 1$$먼저 a와 b는 반드시 c의 제곱근보다 작을수 밖에 없다.이 안에서 범위를 먼저
n개의 직업과 m명의 직원이 있다.각각의 직업엔 난이도와 이익이 있고, 각 직원은 자신이 할수 있는 난이도의 최대치가 있다.i번째 difficulty 는 i번째 직업의 난이도, i번째 profit 은 i번째 직업의 이익이 있고,j번째 worker의 값은 그 직원이 할수
이진 배열 nums와 정수 k가 주어진다.사용자는 이진 배열에서 k 길이 만큼의 부분 배열 부분을 비트플립 할수 있다.즉, 연속된 k길이만큼 0은 1로 1은 0으로 변경한다.이 연산을 n번 했을때 모든 배열의 값을 1로 변경할수 있다면 최소한으로 드는 연산의 횟수를 구
정수 배열 nums가 주어진다.nums의 부분배열중 가장 왼쪽의 값이 부분배열의 최솟값이 되는 모든 부분 배열의 갯수를 구하라.예시2, 4, 3 - 2가 제일 작기에 유효하다.3, 1, 2 - 3이 배열에서 제일 작은 수가 아니기에 유효하지 않다.$$1 <= nu
양의 정수 배열 arr이 주어진다.사용자는 index i 에서 index j로 점프할수 있는데 ( i < j )점프시 (j - i) \* arrj 만큼의 점수를 얻는다.얻을수 있는 최대 점수를 구하시오.$$2 <= nums.length <= 10^3$$
이진트리 root와 그 node들의 리스트인 nodes가 주어진다.nodes의 가장 레벨이 높은 공통 조상을 찾으시오.노드의 갯수는 $$1, 10^4$$ 범위 내이다.$$-10^9 <= Node.val <= 10^9$$모든 nodes의 노드는 반드시 이진트리
0과 1로 이루어진 m \* n 그리드가 주어진다.얼마나 많은 1로만 이루어진 정 사각형을 만들수 있을까? 흰색이 0, 검은색이 1이다. 1 \* 1 총 10개2 \* 2 총 4개3 \* 3 총 1개총 15개의 정사각형을 만들수 있다.$$1 <= arr.lengt
모든 a가 b 앞에 오도록 문자열 s에서 문자를 제거할때최소한으로 제거한 수를 구하시오$$1 <= s.length <= 10^5$$$$si == a$$ or $$si == b$$특정 기준점을 중심으로 기준점 왼쪽에 b의 갯수와 기준점 오른쪽의 a의 갯수의 합
정수 배열 arr과 k가 주어진다.정수간의 거리는 두 정수의 차의 절대값이다.index i, j에 대해 i < j 인 두 index에 대한 모든 거리들 중 k번째로 짧은 거리는 무엇인가?$$n == nums.length$$$$2 <= n <= 10^4$
2D 공간에 위치한 돌이 자신과 동일한 행 혹은 열에 다른 돌이 하나라도 있으면 제거 가능하다.제거 가능한 최대한의 돌의 갯수를 구하시오총 5개 제거가 가능하다.$$1 <= stones.length <= 1000$$$$0 <= x_i, y_i <=
주어진 문자열 s 에 대해 이를 여러 문자열로 분리한다고 가정한다.모든 분리된 부분 문자열이 회문이 되게할때, 최소한으로 분리할수 있는 갯수를 구하라$$1 <= s.length <= 2000$$문자열 s는 영어 소문자로만 구성된다.특정 index로 부터 시작
m\*n 사이즈의 이진 2d 배열이 주어진다.한 값을 뒤집으면 ( 0 > 1 혹은 1 > 0 ) 그 값에 위, 아래, 양 옆의 값도 뒤집어진다.모든 배열의 값이 0이 되게 하기위한 최소한의 뒤집는 횟수를 구하여라\[0, 0, 0, 1] 의 경우$$m == mat.len
0으로만 이루어진 배열의 길이와 시작인덱스, 끝인덱스, 값 으로 구성된 업데이트의 배열이 주어진다.업데이트 배열 하나마다 시작인덱스 ~ 끝인덱스 만큼 범위에 값을 더한다모든 업데이트가 이루어 졌을때 결과 배열을 리턴하시오.$$1 <= length <= 10^
예스!
ramp(경사면) 은 정수 배열에서 인덱스 i, j 가 i < j 이면서 numsi <= numsj 인 (i, j) 쌍을 의미한다.경사면의 길이는 j - i 로 표현될때, 주어진 정수 배열에서 가장 긴 경사면의 길이를 구하시오.1번 index (0) 과 5번
n 명의 친구가 있고, 무한개의 의자가 있다.의자에는 각각 0 ~ 무한 의 번호가 붙혀져 있다.주어진 배열에는 친구가 들어오는 시간과 나가는 시간이 적혀있다.들어온 친구는 남아있는 의자 중 가장 숫자가 적은 의자에 앉아있다.i번째 인덱스의 친구가 앉게 될 의자의 번호를
시작 시간과 끝 시간을 포함하는 스케쥴이 담긴 배열이 주어진다.스케쥴이 겹치지 않게 위 스케쥴을 분리할때, 가장 적게 분리할수 있는 수를 구하라.\[5,10,6,8,1,5,2,3,1,10]그룹 1: 1, 5, 6, 8.그룹 2: 2, 3, 5, 10.그룹 3: 1, 1
문자열 s가 주어진다.주어진 문자열을 여러개의 서브 문자열로 분리할때, 겹치는 서브 문자열이 없도록 한다면서브 문자열의 갯수가 가장 많게 했을때, 그 갯수를 리턴하시오.서브 문자열은 아래와 같이 나눌수 있다.ababccc최대 5개의 문자열로 분리될수 있기 때문에, 정답
이진 트리 T에 대해 뒤집는 연산은 곧 왼쪽 서브트리와 오른쪽 서브트리를 교체하는것이다.이진트리 X와 이진트리 Y가 뒤집힘-동치 일 경우, X에서 몇번 뒤집는 연산을 통해 Y 트리를 만들수 있다는 뜻이다.두 이진 트리가 주어질때, 이 둘이 뒤집힘-동치 인지 확인하시오.
정수가 담긴 큰 배열이 하나가 주어질때, 서브어레이들 중 값들의 곱이 가장 최대가 되는결과 값을 구하여라 서브어레이 : 배열 내에서 연속되는 숫자들 Ex. 1, 2, 3 -> 2, 3 은 서브어레이, 1, 3은 이어지지 않아아님2, 3 이 곱이 6으로 가장 큰 곱을 가
2 이상의 양의 정수로 이루어진 배열이 주어진다.여기서 숫자들을 빼내어 배열을 새로 만들때, 이 배열을 정렬하면 2, 4, 16 과 같이 이전 수가 다음 수의 제곱근이 되게 하면 sqaure streak 이라고 부른다.가장 큰 square streak의 길이를 리턴하시
특정 배열을 산이라고 부르기 위해선 아래와 같은 조건을 만족해야 한다.arr0 < arr1 < ... < arri - 1 < arriarri > arri + 1 > ... > arrarr.length - 1위 조건을 만족하는 0 < i <
고장난 로봇과 특정한 갯수의 로봇만을 고칠수 있는 공장이 있다.로봇이 최소한으로 이동하여 전부 고쳐질때, 이동한 거리를 구하시오.0번 로봇과 1번 로봇은 첫번째 공장까지 가기 위해 2씩 이동한다2 \* 2 = 42번 로봇은 두번째 공장에 가기 위해 이동할 필요가 없다.
주어진 2의 배수 길이의 문자열이 있다.이 문자열이 여러 2의 배수 길이의 0 혹은 1로만 이루어진 서브 문자열로 구성되게 하려면얼마나 많은 문자열을 바꾸어야 하는가?중간의 두 0을 둘다 1로 바꾼다1111, 즉 4개 길이의 1이 완성혹은 양 끝의 1을 0으로 바꾸어도
배열이 하나 주어질때, 한 숫자에 한번씩 소수를 뺄수 있다.배열이 오름차순으로 정렬되게 할수 있는가?4 - 3 = 19 - 7 = 26 - 0 = 610 - 0 = 101, 2, 6, 10 인 오름차순 배열로 만들수 있다.$$1 <= nums.length <
배열이 주어진다.다른 index를 가지면서 두 합이 lower와 같거나 크고 upper과 같거나 작은 쌍의 개수를 구하여라단, index의 위치만 뒤바뀐 pair는 세지 않는다.Ex. 1, 2 와 2, 1 은 따로 세지 않음0, 3 페어0, 4 페어0, 5 페어1, 3
n개의 가게에 m개 ( 배열의 길이 ) 가지 물품을 납품한다고 가정한다.배열은 i 종류의 물품의 갯수를 의미한다.납품에는 아래 규칙을 따른다.한 가게에는 단 한종류의 물품만 납품 가능하다.납품되는 양에는 제한이 없다 ( 0개도 가능 )모든 물품을 최대한 고르게 납품했을
주어진 배열에 대해 이어지는 부분 배열의 합이 k가 되는 가장 짧은 부분 배열의 길이를 구하시오.2 + -1 + 2 = 3 이 되어 길이는 3이다.$$1 <= nums.length <= 10^5$$$$10^5 <= numsi <= 10^5$$$$1
n \* n 의 matrix가 주어진다.이 안에서 두개의 붙어있는 숫자를 찾아서 이들에게 전부 -1을 곱하는 연산을 할수 있다.여러번 연산을 거친 이후 나올수 있는 matrix 값들의 최대 합을 구하여라\-3과 -2가 붙어있기에 이 둘에 -1을 곱하면 된다.총 합 16
2 x 3 슬라이딩 퍼즐에 1~5까지의 블록이 꽂혀 있다.0이 의미하는것은 빈 부분을 의미하며, 이는 주변의 다른 블록과 위치를 바꿀수 있다.즉, 빈자리로 다른 블록이 이동한다.1, 2, 3 이 되면 풀어졌다고 가정할때, 풀때까지의 최소한의 움직임을 구하거나안된다면 -
문제 0~n-1의 이름을 가진 도시가 있다. 각 도시는 0부터 n-1 까지 일직선으로 연결되어 있다. 쿼리는 아래를 의미한다. [s, e] s 도시에서 e도시로 가는 다리를 건설한다. 쿼리로 인한 다리가 계속 쌓여나간다고 할때, 각 쿼리마다 0번 도시에서
그리드에 0은 장애물이 없는것, 1은 장애물이 있는것이다.(0, 0) 에서 그리드의 오른쪽 맨 아래까지 이동할때 최소한으로 거칠수 있는 장애물의 수를 구하라0장애물을 하나도 거치지 않고도 갈수 있다.$$m == grid.length$$$$n == gridi.length
시작지점과 끝점 노드로 구성된 pairs가 있다이를 이용해 오일러 경로를 구하라\[5,1,4,5,11,9,9,4]\[11,9,9,4,4,5,5,1]$$1 <= pairs.length <= 10^5$$$$pairsi.length == 2$$$$0 <= s
문제 문자열이 주어지는데 문자열의 각 문자는 아래를 의미한다. L : 왼쪽 빈칸으로 이동할수 있다. R : 오른쪽 빈칸으로 이동할수 있다. _ : 빈칸 start 와 target 문자열이 주어질때, 문자열의 문자를 원하는만큼 이동하여 start 문자열을 target 문자열과 동일하게 만들수 있는지 여부를 리턴하시오. 예시 한개의 L을 왼쪽으...
문제 문자열이 주어지는데 문자열의 각 문자는 아래를 의미한다. L : 왼쪽 빈칸으로 이동할수 있다. R : 오른쪽 빈칸으로 이동할수 있다. _ : 빈칸 start 와 target 문자열이 주어질때, 문자열의 문자를 원하는만큼 이동하여 start 문자열을 target 문자열과 동일하게 만들수 있는지 여부를 리턴하시오. 예시 한개의 L을 왼쪽으...
여러개의 공이 들어있는 백이 주어집니다. 배열은 i번째 백의 공의 갯수를 의미합니다.한번의 연산에 당신은 한개의 백에 있는 공들을 두개의 백에 나눠담을수 있습니다.연산을 할수 있는 최대 횟수가 주어질때, 모든 연산이 끝나고 난 뒤 백에 들어있는 공의 갯수중 최댓값을 제
시작시간, 끝시간, 값 으로 이벤트의 시간표가 주어진다.이 이벤트를 성공적으로 마치면 주어진 값 만큼의 보상을 얻는다.최대 2개의 이벤트를 진행할때 얻을수 있는 최대의 보상을 구하여라단, 이벤트의 시간은 겹쳐선 안된다.1시에 시작해서 2시에 끝나는 이벤트가 있으면, 최
와 초장문 1\. classes배열엔 시험을 통과한 인원, 전체 인원 이 저장되어 있다.2\. extraStudents는 시험을 반드시 통과할수 있는 추가 인원의 숫자이다.3\. 적당히 class 안에 extraStudents를 넣었을때, 개별 class들의 합격률의
0 부터 n-1 까지 이름붙혀진 노드로 이루어진 무방향 트리가 있다.values에는 각 노드들의 weight값이 주어진다.이 트리를 여러 작은 트리로 나눌때 모든 weight의 합이 k에 의해 나누어 질 경우 가장 많이 나눈 트리의 갯수를 리턴하시오2개로 나눌수 있다.
빌딩 여러개와 그 빌딩의 높이가 주어진다.빌딩은 반드시 오른쪽, 자신보다 높은 빌딩으로만 이동 가능하다.두 사람의 위치가 쿼리로 주어질때 두 사람이 만날수 있는 가장 왼쪽의 빌딩의 index를 답에 채워라단 없으면 -1너무 복잡한 관계로 https://leet
동일한 레벨의 노드의 값을 서로 바꿀수 있다, 또한 모든 노드의 값은 유니크하다.모든 레벨이 절대적으로 오름차순이 되게 하려면 최소 몇번을 바꿔야 하는가?4, 3 바꾸고7, 5 바꾸고8, 7 바꾼다.총 3번 필요트리의 값은 $$1 <= x <= 10^5$$