본문 바로가기

Algorithm/Brute Force

(154)
(Rust) - LeetCode (Easy) : 3477. Fruits Into Baskets II https://leetcode.com/problems/fruits-into-baskets-ii/description전수조사로 해결한 문제였습니다.📕 풀이방법📔 입력 및 초기화i번째 바구니를 사용했는지 여부를 확인하기 위해 vector checked 변수를 mut으로 선언해줍니다.📔 풀이과정📑 i번째 fruit를 담을 j번째 basket 크기를 비교fruits에 대해 iter수행하며 for_each마다 basket에 enumerate 했을 때 j번째가 현재 fruit 이상이라면 담을 수 있으므로 j번째 checked 를 true로 바꿔줍니다. 📑 checked배열에서 false인 값을 변수 unplaced 📑 시간 복잡도O(n^2)📑 공간 복잡도O(n)📔 정답 출력 | 반환unplaced를 ..
(Python3) - LeetCode (Medium) : 2429. Minimize XOR https://leetcode.com/problems/minimize-xor📕 풀이방법📔 입력 및 초기화다음 변수를 선언합니다.📑 num1, num2를 이진수로 변환하는 bin_num1, bin_num2📑 target_bit_count를 선언 해 필요한 1의 개수를 세줍니다.📑 num1와 xor를 했을 때 문자열 x를 선언합니다.📑 x의 bit 수 bit_count를 선언 후 0으로 초기화합니다.📔 풀이과정1. x XOR num1에서 x가 최소가 되려면 target_bit_count만큼 있으면서 num1와 최대한 같은 자리에 '1'이 존재해야 됩니다. 따라서 target_bit_count를 넘지 않게 bin_num1을 순회하면서 x를 생성해줍니다.  2. 부족한 x를 다듬어줍니다.  2-1..
(Python3) - LeetCode (Medium) : 2657. Find the Prefix Common Array of Two Arrays https://leetcode.com/problems/find-the-prefix-common-array-of-two-arrays전수조사 문제였습니다.📕 풀이방법📔 입력 및 초기화다음 변수를 선언합니다.📑 B의 원소를 key, index를 value로 defaultdict b_map을 선언합니다. 이후 B의 원소를 순회하며 값에 맞게 저장합니다.📑 A의 길이 length를 선언 후 길이를 저장합니다.📑 정답 변수 ans를 선언 후 빈 배열로 초기화합니다.📔 풀이과정📑 2중 for loop를 수행하며 다음을 진행합니다.1. length - 1까지 for loop를 수행하며 변수 i를 iterator로 증가시키며 현재 확인하려는 index값을 제한합니다.2. 내부에 for loop를 수행해 0..
(Python3) - LeetCode (Medium) : 916. Word Subsets https://leetcode.com/problems/word-subsets/description전수조사로 해결한 문제였습니다.📕 풀이방법📔 입력 및 초기화정답변수 ans, words2의 알파뱃의 빈도수를 저장할 hash map words2_map을 선언 후 적절히 저장합니다. words2_map에 빈도 수를 저장할 때는 각 알파뱃별 빈도수를 단순히 1씩 증가시키는 것이 아니고 각 단어별 가장 많이 나온 빈도수를 저장해야합니다. words2 가 각각 ["e", "oo"], ["eo", "lo"] 라면 {e:1, o:2}, {e:1,l:1,o:1} 형태로 알파뱃이 o인 부분에 있어 한번에 최대로 나온 값을 저장합니다.📔 풀이과정words1의 길이는 최대 1만과 각 단어의 최대길이 10을 곱해도 10만..
(Python3) - LeetCode (Easy) : 3042. Count Prefix and Suffix Pairs I https://leetcode.com/problems/count-prefix-and-suffix-pairs-i전수조사 문제였습니다.📕 풀이방법📔 입력 및 초기화단어의 길이 length, 정답 ans를 선언 후 적절히 저장합니다.📔 풀이과정이중 for loop를 수행하며 서로 다른 두 단어를 뽑아 접두어와 접미사라면 해당 쌍을 찾았으므로 ans를 1씩 추가합니다.startswith, endswith를 사용하면 간단한 구현으로 알 수 있습니다.📔 정답 출력 | 반환ans를 반환합니다.📕 Code📔 Python3class Solution: def countPrefixSuffixPairs(self, words: List[str]) -> int: length = len(words) ..
(Python3) - LeetCode (Easy) : 1408. String Matching in an Array https://leetcode.com/problems/string-matching-in-an-array전수조사 문제였습니다.📕 풀이방법📔 입력 및 초기화1. words의 길이를 length에 저장합니다. 2. 정답변수 answer를 선언 후 저장합니다.📔 풀이과정words의 길이에 대해 이중 for loop를 수행하며 다음을 진행합니다.1. 같은 index를 건너뛰고 i번째 단어가 j번쨰 단어의 일부라면 answer에 i번째 문자를 저장합니다.📔 정답 출력 | 반환answer를 list로 변환한 결과를 반환합니다.📕 Code📔 Python3class Solution: def stringMatching(self, words: List[str]) -> List[str]: len..
(Python3) - LeetCode (Medium) : 1769. Minimum Number of Operations to Move All Balls to Each Box.py https://leetcode.com/problems/minimum-number-of-operations-to-move-all-balls-to-each-box전수조사 문제였습니다.📕 풀이방법📔 입력 및 초기화정답 배열 answer을 선언 후 빈 배열로 초기화합니다.📔 풀이과정i번째 box로 옮기기 위해 j번째 box에 대해 for loop를 수행하며 다음을 진행합니다. 1. 필요 연산 수 op를 선언 후 0으로 초기화합니다.  2. j번째 box가 1이라면 이를 i번째로 옮기기 위해 abs(i-j)만큼의 연산이 필요하므로 op에 해당 값들을 누적합니다. 3. answer에 i번째로 옮길 때의 최소 연산 수 op를 append해줍니다.📔 정답 출력 | 반환answer를 반환합니다.📕 Code📔..
(Python3) - LeetCode (Medium) : 1422. Maximum Score After Splitting a String https://leetcode.com/problems/maximum-score-after-splitting-a-string전수조사로 해결한 문제였습니다.📕 풀이방법📔 입력 및 초기화점수 score를 선언 후 0으로 초기화합니다.📔 풀이과정1. 주어진 substring과 비교할 문자 mode를 입력받아 특정문자의 개수를 반환하는 getScore를 구현합니다. 2. s에 대해 1부터 len(s)-1까지 for loop를 수행하며 left, right로 부분 문자열을 만들고 각각 getScore한 결과의 최댓값을 score에 저장합니다.📔 정답 출력 | 반환score를 반환합니다.📕 Code📔 Python3class Solution: def maxScore(self, s: str) -> i..