PS/LeetCode
-
Problem : https://leetcode.com/problems/kth-largest-sum-in-a-binary-tree Difficulty : Medium Status : Solved Time : 00:04:22 문제 설명 더보기이진 트리의 루트 root와 양의 정수 k가 주어진다. 트리의 레벨합은 같은 레벨에 있는 모든 노드의 값의 합을 의미한다. k번째로 큰 레벨합을 구하여라. 트리 레벨이 k보다 적다면 -1을 반환하라. 두 노드는 루트 노드와 같은 거리에 있다면 같은 레벨이다. 풀이 여러 방법이 있겠지만, 나는 BFS를 먼저 시도했다. 트리에서 BFS를 수행하면, 한 사이클을 돌 때마다 한 레벨의 노드를 전부 방문할 수 있다. 즉 O(N) 시간복잡도 내에 추가적인 알고리즘 없이 레벨순으..
2583. Kth Largest Sum in a Binary TreeProblem : https://leetcode.com/problems/kth-largest-sum-in-a-binary-tree Difficulty : Medium Status : Solved Time : 00:04:22 문제 설명 더보기이진 트리의 루트 root와 양의 정수 k가 주어진다. 트리의 레벨합은 같은 레벨에 있는 모든 노드의 값의 합을 의미한다. k번째로 큰 레벨합을 구하여라. 트리 레벨이 k보다 적다면 -1을 반환하라. 두 노드는 루트 노드와 같은 거리에 있다면 같은 레벨이다. 풀이 여러 방법이 있겠지만, 나는 BFS를 먼저 시도했다. 트리에서 BFS를 수행하면, 한 사이클을 돌 때마다 한 레벨의 노드를 전부 방문할 수 있다. 즉 O(N) 시간복잡도 내에 추가적인 알고리즘 없이 레벨순으..
2024.10.22 -
Problem : https://leetcode.com/problems/split-a-string-into-the-max-number-of-unique-substrings Difficulty : Medium Status : Solved Time : 00:08:17 문제 설명 더보기문자열 s가 주어졌을때, 주어진 문자열을 분할하여 얻을 수 있는 유일 부분 문자열의 가장 큰 개수를 반환하라. 문자열 s는 임의의 공백이 아닌 부분문자열 리스트로 분할할 수 있고, 이 부분문자열을 이었을 때 원본 문자열이 된다. 그러나, 모든 부분문자열이 유일하도록 분할이 반드시 이루어져야 한다. 부분 문자열은 문자열 내부에 존재하는 연속적인 문자들로 정의된다. 풀이 DFS로 풀어보자. 현재 i번째 문자열부터 탐색을 진행한다..
1593. Split a String Into the Max Number of Unique SubstringsProblem : https://leetcode.com/problems/split-a-string-into-the-max-number-of-unique-substrings Difficulty : Medium Status : Solved Time : 00:08:17 문제 설명 더보기문자열 s가 주어졌을때, 주어진 문자열을 분할하여 얻을 수 있는 유일 부분 문자열의 가장 큰 개수를 반환하라. 문자열 s는 임의의 공백이 아닌 부분문자열 리스트로 분할할 수 있고, 이 부분문자열을 이었을 때 원본 문자열이 된다. 그러나, 모든 부분문자열이 유일하도록 분할이 반드시 이루어져야 한다. 부분 문자열은 문자열 내부에 존재하는 연속적인 문자들로 정의된다. 풀이 DFS로 풀어보자. 현재 i번째 문자열부터 탐색을 진행한다..
2024.10.22 -
Problem : https://leetcode.com/problems/parsing-a-boolean-expression Difficulty : Hard Status : Solved Time : 00:10:56 문제 설명 더보기불 대수 표현은 true 혹은 fals를 연산하는 표현식이다. 이는 다음과 같은 형태 중 하나로 나타날 수 있다. 't'는 true로 계산된다.'f'는 false로 계산된다.'!(subExpr)'는 내부 표현식 subExpr의 논리적 부정으로 계산된다.'&(subExpr1, subExpr2, ... , subExprn)'은 n >=1일때 내부 표현식들 subExpr1, subExpr2, ... subExprn의 논리곱으로 계산된다'|(subExpr1, subExpr2, .....
1106. Parsing A Boolean ExpressionProblem : https://leetcode.com/problems/parsing-a-boolean-expression Difficulty : Hard Status : Solved Time : 00:10:56 문제 설명 더보기불 대수 표현은 true 혹은 fals를 연산하는 표현식이다. 이는 다음과 같은 형태 중 하나로 나타날 수 있다. 't'는 true로 계산된다.'f'는 false로 계산된다.'!(subExpr)'는 내부 표현식 subExpr의 논리적 부정으로 계산된다.'&(subExpr1, subExpr2, ... , subExprn)'은 n >=1일때 내부 표현식들 subExpr1, subExpr2, ... subExprn의 논리곱으로 계산된다'|(subExpr1, subExpr2, .....
2024.10.20 -
Problem : https://leetcode.com/problems/find-kth-bit-in-nth-binary-string Difficulty : Medium Status : Solved Time : 00:08:05 문제 설명 더보기두 개의 양의 정수 n, k가 주어질 때, Sn은 다음과 같이 형성된다. S1 = "0"i > 1 일때 Si = S(i-1) + "1" + reverse(invert(S(i-1))) +는 연결 연산자이다. reverse(x)는 문자열 x를 뒤집은 결과를 반환한다. invert(x)는 x의 모든 비트를 뒤집는다(0은 1로, 1은 0으로)예를 들어, 위의 순서대로 맨 처음 4개의 문자열은 다음과 같다 : S1 = "0"S2 = "011"S3 = "0111001"S4 ..
1545. Find Kth Bit in Nth Binary StringProblem : https://leetcode.com/problems/find-kth-bit-in-nth-binary-string Difficulty : Medium Status : Solved Time : 00:08:05 문제 설명 더보기두 개의 양의 정수 n, k가 주어질 때, Sn은 다음과 같이 형성된다. S1 = "0"i > 1 일때 Si = S(i-1) + "1" + reverse(invert(S(i-1))) +는 연결 연산자이다. reverse(x)는 문자열 x를 뒤집은 결과를 반환한다. invert(x)는 x의 모든 비트를 뒤집는다(0은 1로, 1은 0으로)예를 들어, 위의 순서대로 맨 처음 4개의 문자열은 다음과 같다 : S1 = "0"S2 = "011"S3 = "0111001"S4 ..
2024.10.19 -
Problem : https://leetcode.com/problems/count-number-of-maximum-bitwise-or-subsets Difficulty : Medium Status : Solved Time : 00:11:57 문제 설명 더보기정수 배열 nums가 주어질때, nums의 부분집합을 bitwise OR 연산하였을 때 가능한 가장 큰 값을 찾고, 최대 bitwise OR값을 도출하는 공집합이 아닌 서로 다른 부분집합의 개수를 반환하라. 어떤 배열 a가 어떤 배열 b의 부분집합이려면, a는 b에서 특정 원소(0개도 가능)를 제거함으로써 얻어질 수 있어야 한다. 두 부분집합은 선택된 원소의 인덱스가 다르다면 다르다고 취급된다. 어떤 배열 a의 bitwise OR은 a[0] OR a..
2044. Count Number of Maximum Bitwise-OR SubsetsProblem : https://leetcode.com/problems/count-number-of-maximum-bitwise-or-subsets Difficulty : Medium Status : Solved Time : 00:11:57 문제 설명 더보기정수 배열 nums가 주어질때, nums의 부분집합을 bitwise OR 연산하였을 때 가능한 가장 큰 값을 찾고, 최대 bitwise OR값을 도출하는 공집합이 아닌 서로 다른 부분집합의 개수를 반환하라. 어떤 배열 a가 어떤 배열 b의 부분집합이려면, a는 b에서 특정 원소(0개도 가능)를 제거함으로써 얻어질 수 있어야 한다. 두 부분집합은 선택된 원소의 인덱스가 다르다면 다르다고 취급된다. 어떤 배열 a의 bitwise OR은 a[0] OR a..
2024.10.18 -
Problem : https://leetcode.com/problems/maximum-swap/ Difficulty : Medium Status : Solved Time : 00:01:44 문제 설명 더보기정수 num을 입력으로 받는다. 단 한 번 두 자릿수를 교체할 수 있고, 이를 통해 가장 큰 숫자를 만들어야 한다. 얻을 수 있는 가장 큰 숫자를 반환하라. 풀이 우선, 문제 조건이 그렇게 빡빡하지 않아 브루트포스로 풀린다. 단순히 모든 경우를 테스트해서 가장 큰 숫자를 반환하면 된다. 풀이 코드(브루트포스)class Solution: def maximumSwap(self, num: int) -> int: length = len(str(num)) result = num..
670. Maximum SwapProblem : https://leetcode.com/problems/maximum-swap/ Difficulty : Medium Status : Solved Time : 00:01:44 문제 설명 더보기정수 num을 입력으로 받는다. 단 한 번 두 자릿수를 교체할 수 있고, 이를 통해 가장 큰 숫자를 만들어야 한다. 얻을 수 있는 가장 큰 숫자를 반환하라. 풀이 우선, 문제 조건이 그렇게 빡빡하지 않아 브루트포스로 풀린다. 단순히 모든 경우를 테스트해서 가장 큰 숫자를 반환하면 된다. 풀이 코드(브루트포스)class Solution: def maximumSwap(self, num: int) -> int: length = len(str(num)) result = num..
2024.10.18