본문 바로가기

Algorithm/Implementation

(750)
(Python3) - LeetCode (Medium) : 1267. Count Servers that Communicate https://leetcode.com/problems/count-servers-that-communicate구현 문제였습니다.📕 풀이방법📔 입력 및 초기화다음 변수를 선언합니다.📑 행 길이 rows, 열 길이 cols, 정답 변수 can_communicate, 방문여부 배열 ck를 선언 후 적절히 초기화합니다.📔 풀이과정📑 grid의 원소를 순회현재 행에 대해 수평으로, 현재 열에 대해 수직으로 server개수를 세줍니다.📑 방문하지 않았고 통신 가능한 server 개수 세기세준 서버의 개수가 1개를 초과한다면 통신이 가능합니다.해당 조건을 만족한다면 다시 현재 행에 대해 수평으로, 현재 열에 대해 수직으로 방문하지 않은 server개수를 세주며 방문해줍니다.방문하지 않은 server 개수를..
(Python3) - LeetCode (Medium) : 2425. Bitwise XOR of All Pairings https://leetcode.com/problems/bitwise-xor-of-all-pairingsxor의 특성에 대해 파악해 해결한 문제였습니다.📕 풀이방법📔 입력 및 초기화다음 변수를 선언합니다.📑 nums1의 xor을 저장할 xors1와 num2의 xor한 결과를 저장할 xors2를 선언해 각 배열들을 xor한 값을 각각 저장합니다.📑 nums1, nums2의 길이 len1, len2를 선언 후 저장합니다.📔 풀이과정📑 10만이 배열 최대 길이이므로 O(n^2)로 풀 수 없습니다. xor의 특성을 이용해야 합니다. 예제로 살펴보겠습니다. 숫자들을 알파뱃으로 바꿔 표현하면 여러 경우에 대해 다음과 같이 표현할 수 있습니다.1. nums1 = [a,b], nums2 = [c]인 경우 ..
(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 (Easy) : 1974.minimum-time-to-type-word-using-special-typewriter https://leetcode.com/problems/minimum-time-to-type-word-using-special-typewriter/시계, 반시계 방향을 생각해 해결한 문제였습니다.📕 풀이방법📔 입력 및 초기화현재 포인터 piv와 움직임 move를 선언 후 각각 'a', 0으로 초기화합니다.📔 풀이과정word의 원소를 순회하며 다음을 진행합니다.1. 시계방향은 현재 문자를 아스키 코드로 변환한 값에서 piv를 아스키 코드로 변환한 값의 차이입니다. 만약 이 차이가 음수라면 같은 방향으로 진행해야하므로 26을 더해줍니다. 2. 반시계 방향은 반대로 piv - 현재 문자가 됩니다. 만약 이 차이가 음수라면 마찬가지로 26을 더해줍니다. 3. 시계, 반시계방향의 움직임의 최솟값을 move에..
(Python3) - LeetCode (Easy) : 2558. Take Gifts From the Richest Pile https://leetcode.com/problems/take-gifts-from-the-richest-pile간단 구현 문제였습니다.📕 풀이방법📔 풀이과정k초만큼 loop를 수행하며 주어진 계산을 수행합니다.1. 최댓값의 index를 찾아 해당 원소를 sqrt후 소수점 이하는 버립니다.📔 정답 출력 | 반환계산된 gifts의 원소들의 합을 반환합니다.📕 Code📔 Python3class Solution: def pickGifts(self, gifts: List[int], k: int) -> int: for _ in range(k): max_pile_idx = gifts.index(max(gifts)) gifts[max_pile_idx]..
(SQL) - LeetCode (easy) 1967. Number of Strings That Appear as Substrings in Word https://leetcode.com/problems/number-of-strings-that-appear-as-substrings-in-word/description/문자열을 다뤄본 문제였습니다.📕 풀이방법📔 입력 및 초기화정답 변수 answer 선언 후 0으로 초기화합니다.📔 풀이과정patterns의 원소를 순회하며 word에 해당 pattern이 존재한다면 부분 문자열이므로 answer를 1씩 증가시켜줍니다.📔 정답 출력 | 반환answer를 반환합니다.📕 Code📔 Python3class Solution: def numOfStrings(self, patterns: List[str], word: str) -> int: answer = 0 for p in p..
(SQL) - LeetCode (easy) 1975. Maximum Matrix Sum https://leetcode.com/problems/maximum-matrix-sum/description구현 문제였습니다.📕 풀이방법📔 입력 및 초기화행 r, 열 c, 음수의 개수 minus_count, 가장 작은 절댓값 min_abs_num, 원소들의 총 합 sum을 선언 후 적절히 초기화합니다.📔 풀이과정1. matrix의 원소를 순회하며 음수의 개수를 minus_count에 세주고 최소 절댓값은 min_abs_num에 저장합니다.📔 정답 출력 | 반환1. minus_count가 짝수라면: 인접한 부분들을 자유롭게 -1로 곱해 부호를 바꿀 수 있으므로 minus_count가 짝수라면 어떻게든 모든 원소를 양수로 만들 수 있습니다. 즉, 2개의 음수가 멀리 떨어져 있더라도 인접한 원소들을..