본문 바로가기

전체 글

(2341)
(Python3) - LeetCode (Medium) : 3223. Minimum Length of String After Operations https://leetcode.com/problems/minimum-length-of-string-after-operations문제 아이디어로 해결한 문제였습니다.📕 풀이방법📔 입력 및 초기화📑 s의 길이 length선언 후 저장합니다.📑 s의 문자별 빈도수를 저장할 Counter s_counter를 선언 후 저장합니다.📑 정답 변수 ans 선언 후 0으로 초기화합니다.📔 풀이과정📑 자기 자신을 제외한 양 옆의 같은 문자를 지울 수 있기 때문에 2를 초과하는 빈도 수의 문자들은 모두 1개 또는 2개로 줄일 수 있습니다.1. 빈도 수가 2개를 초과하는 홀수인 경우 가운데 문자의 양 옆을 짝수개로 제거할 수 있으므로 1개의 문자가 남습니다.2. 빈도 수가 2개를 추과하는 짝수인 경우 문자의 ..
(Python3) - LeetCode (Medium) : 1400. Construct K Palindrome Strings https://leetcode.com/problems/check-if-a-parentheses-string-can-be-valid/solutions/6245791/check-if-a-parentheses-string-can-be-valid구현 문제였습니다.📕 풀이방법📔 입력 및 초기화다음 변수를 선언해줍니다.최소 개수(low): 가능한 최소 ( 개수최대 개수(high): 가능한 최대 ( 개수📔 풀이과정 s의 길이가 홀수라면 괄호짝이 맞지 않으므로 False를 반환합니다.왼쪽에서 오른쪽 (left-to-right) for loop로 스캔해줍니다.locked[i] == '0' 이면 s[i]를 ( 또는 )로 변경 가능합니다.low가 음수가 되면 유효하지 않은 문자열이므로 False 반환합니다.high가 ..
(Python3) - LeetCode (Medium) : 1400. Construct K Palindrome Strings https://leetcode.com/problems/construct-k-palindrome-strings/descriptionpalindrome조건을 적용해본 문제였습니다.📕 풀이방법📔 입력 및 초기화홀수 빈도 수를 가진 odd_char_num를 선언 후 0으로 초기화합니다. 각 알파뱃별 빈도수를 저장할 alpha_map을 선언 후 s에 대해 for loop를 수행하며 빈도수를 저장해줍니다.📔 풀이과정1. 최소 palindrome은 하나의 문자이므로 s의 길이가 k미만이면 k개를 사용해 s를 만들 수 없으므로 False를 반환합니다. 2. palindrome의 조건은 홀수개인 문자가 1개거나 0개일 때 나머지 문자들은 모두 짝수여야 합니다. k개의 palindrome으로 s를 만들어야 하기 때..
(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) : 2185. Counting Words With a Given Prefix https://leetcode.com/problems/counting-words-with-a-given-prefixstartswith함수를 사용해본 문제였습니다.📕 풀이방법📔 입력 및 초기화정답 변수 ans를 선언 후 0으로 초기화합니다.📔 풀이과정words를 순회하며 각 단어에서 시작이 pref인 경우 ans를 1씩 더해줍니다.📔 정답 출력 | 반환ans를 반환합니다.📕 Code📔 Python3class Solution: def prefixCount(self, words: List[str], pref: str) -> int: ans = 0 for word in words: if word.startswith(pref): ..
(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📔..