📌 LeetCode [876]: Middle of the Linked List🔗 문제 링크문제 설명 📄단일 연결 리스트의 헤드 head가 주어집니다.리스트의 중간 노드를 반환하세요.리스트의 길이가 짝수라면, 두 번째 중간 노드를 반환해야 합니다.문제 접근 방식 📋리스트 길이 계산:리스트를 한 번 순회하며 전체 길이를 계산.중간 위치 탐색:길이의 절반만큼 다시 순회하여 중간 노드에 도달.중간 노드 반환:중간에 도달한 노드를 반환.Solution 💻# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val = val# self.next = ..
알고리즘
📌 LeetCode [771]: Jewels and Stones🔗 문제 링크문제 설명 📄문자열 jewels와 stones가 주어집니다.jewels는 보석을 나타내고, stones는 보석과 돌이 섞여있는 문자열입니다.stones에 포함된 보석의 개수를 반환하세요.문제 접근 방식 📋보석과 돌의 빈도 계산:Counter를 사용하여 stones의 각 문자의 빈도를 저장.보석 개수 합산:jewels에 포함된 각 문자를 순회하면서, stones에서 해당 보석의 개수를 합산.최종 결과 반환:합산한 개수를 반환.Solution 💻from collections import Counterclass Solution: def numJewelsInStones(self, jewels: str, stones: str..
📌 LeetCode [485]: Max Consecutive Ones🔗 문제 링크문제 설명 📄0과 1로 구성된 정수 배열 nums가 주어집니다.배열에서 연속된 1의 최대 길이를 반환하세요.문제 접근 방식 📋변수 설정:temp: 현재 연속된 1의 길이를 저장.answer: 현재까지 발견된 최대 연속된 1의 길이를 저장.반복문으로 배열 순회:현재 숫자가 1이면 temp를 증가.숫자가 0이면 answer를 업데이트하고 temp를 초기화.최종 갱신:반복문이 종료된 후, 마지막 temp 값과 answer를 비교하여 최종 결과를 반환.Solution 💻class Solution: def findMaxConsecutiveOnes(self, nums: List[int]) -> int: ans..
📌 LeetCode [867]: Transpose Matrix🔗 문제 링크문제 설명 📄주어진 2D 행렬 matrix를 전치 행렬로 변환하세요.전치 행렬은 다음과 같은 규칙을 따릅니다:result[i][j] = matrix[j][i]문제 접근 방식 📋전치 행렬의 구조 이해:원래 행렬의 행(i)과 열(j)의 값을 교환하여 새 행렬을 만듭니다.새 행렬의 크기는 원래 행렬의 열과 행의 크기가 뒤바뀝니다.결과 행렬 초기화:전치 행렬을 저장할 크기와 초기값이 설정된 2D 배열을 생성합니다.이중 반복문 사용:원래 행렬을 순회하면서 값을 교환하여 새 행렬에 추가합니다.Solution 💻class Solution: def transpose(self, matrix: List[List[int]]) -> Lis..
📌 LeetCode [1480]: Running Sum of 1d Array🔗 문제 링크문제 설명 📄정수 배열 nums가 주어질 때, 각 인덱스 i까지의 누적 합을 계산하여 결과 배열을 반환하세요.즉, 결과 배열의 각 요소는 다음과 같습니다:result[i] = sum(nums[0] ... nums[i])문제 접근 방식 📋누적 합 계산:반복문을 사용해 배열을 순회하면서, 각 숫자를 누적 합에 추가합니다.현재까지의 합을 결과 배열에 추가합니다.공간 활용:결과 배열을 별도로 만들어 각 단계의 누적 값을 추가합니다.Solution 💻class Solution: def runningSum(self, nums: List[int]) -> List[int]: numSum = 0 ..
📌 LeetCode [1598]: Crawler Log Folder🔗 문제 링크문제 설명 📄주어진 로그 목록 logs는 파일 시스템의 이동 경로를 나타냅니다. 다음 규칙에 따라 파일 시스템의 최상위 폴더로 이동하는 데 필요한 최소 작업 수를 반환합니다:"../": 현재 폴더에서 상위 폴더로 이동. 최상위 폴더에 있는 경우 무시."./": 현재 폴더에 머무름. 무시."x/": x라는 하위 폴더로 이동.최종적으로 필요한 최상위 폴더 이동 횟수를 반환하세요.문제 접근 방식 📋로그 분석:"../"는 상위 폴더로 이동. 최상위 폴더에 있지 않다면 answer를 감소시킵니다."./"는 무시.나머지 하위 폴더로 이동 시 answer를 증가시킵니다.문자열 처리:각 로그의 끝에 있는 /는 로그의 의미를 구분하기 ..
📌 LeetCode [1945]: Sum of Digits of String After Convert🔗 문제 링크문제 설명 📄주어진 문자열 s를 다음 과정을 통해 변환합니다:문자열의 각 문자를 알파벳 순서에 따른 숫자로 변환합니다.예: a -> 1, b -> 2, ..., z -> 26.변환된 숫자를 하나의 문자열로 연결합니다.이 문자열을 k번 반복하여 각 자리의 숫자를 더합니다.최종 결과를 반환합니다.문제 접근 방식 📋문자 변환:문자열 s를 알파벳 순서에 따른 숫자로 변환하여 문자열 리스트로 만듭니다.ord(char) - 96을 사용해 알파벳 숫자를 얻습니다.자리수 합 계산:변환된 문자열을 k번 반복해서 각 자리의 숫자를 더하며 변환합니다.매번 자리수 합을 계산해 문자열로 다시 변환합니다.Sol..
📌 LeetCode [1460]: Make Two Arrays Equal by Reversing Subarrays🔗 문제 링크문제 설명 📄두 개의 배열 target과 arr가 주어집니다.다음과 같은 연산을 무한히 수행할 수 있습니다:arr에서 서브배열을 선택하고, 그 순서를 뒤집습니다.위 조건으로 배열 arr을 target과 동일하게 만들 수 있는지 판단하여 True 또는 False를 반환하세요.문제 접근 방식 📋문제의 본질:서브배열의 순서를 뒤집는 연산은 배열 요소의 순서를 변경할 수 있지만, 요소 자체를 추가하거나 제거할 수는 없습니다.따라서 두 배열이 동일해지려면 두 배열의 요소와 각 요소의 빈도수가 같아야 합니다.카운터를 활용한 비교:Python의 collections.Counter를 활용..