알고리즘

· 알고리즘
📌 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를 활용..
· 알고리즘
📌 LeetCode [1518]: Water Bottles🔗 문제 링크문제 설명 📄초기에는 numBottles개의 물병을 가지고 있으며, 빈 병 numExchange개를 새 물병 1개로 교환할 수 있습니다.최대로 마실 수 있는 물병의 개수를 반환하세요.문제 접근 방식 📋시뮬레이션 기반 접근:현재 물병 개수를 소비하며 마십니다.마신 후 빈 병의 개수를 계산하여 새 물병으로 교환.빈 병의 수가 numExchange 미만이 되면 반복 종료.병 교환 로직:numBottles: 현재 가지고 있는 물병 개수.binBottles: 현재 가지고 있는 빈 병의 개수.매번 마신 병의 수를 누적하며, 교환 후 남은 빈 병을 갱신.Solution 💻class Solution: def numWaterBottles..
· 알고리즘
📌 LeetCode [2582]: Pass the Pillow🔗 문제 링크문제 설명 📄( n )명의 사람이 원형으로 둘러앉아 있습니다. 초기에는 첫 번째 사람이 베개를 가지고 있으며, 매 초마다 베개를 좌우로 전달합니다.( time )초가 지났을 때, 베개를 가진 사람의 번호를 반환하세요.조건:( 2 ( 1 문제 접근 방식 📋방향 전환:베개를 왼쪽(역방향)으로 전달할지 오른쪽(정방향)으로 전달할지 결정합니다.베개가 첫 번째 사람이나 ( n )번째 사람에게 도달하면 방향을 전환합니다.반복 시뮬레이션:( time )초 동안 각 사람에게 베개를 전달하며, 매번 방향에 따라 번호를 증가/감소시킵니다.Solution 💻class Solution: def passThePillow(self, n: in..
· 알고리즘
📌 LeetCode [706]: Design HashMap🔗 문제 링크문제 설명 📄사용자 정의 해시맵(HashMap)을 구현하는 문제입니다.다음 세 가지 연산을 지원해야 합니다:put(key, value): 주어진 키(key)와 값(value)을 삽입합니다. 만약 키가 이미 존재한다면, 값을 업데이트합니다.get(key): 주어진 키(key)에 해당하는 값을 반환합니다. 키가 존재하지 않으면 -1을 반환합니다.remove(key): 주어진 키(key)를 제거합니다.조건:키와 값은 (0 \leq key, value \leq 10^6).최대 (10^4)번의 호출이 발생합니다.문제 접근 방식 📋간단한 배열 구현:고정 크기의 배열을 사용하여 인덱스를 키로 활용합니다.(key) 값을 그대로 배열의 인덱스로..
· 알고리즘
📌 LeetCode [1539]: Kth Missing Positive Number🔗 문제 링크문제 설명 📄정렬된 정수 배열 arr와 정수 k가 주어질 때, 배열에서 누락된 k번째 양의 정수를 반환합니다.배열 arr는 1부터 시작하여 양의 정수만 포함합니다.문제 접근 방식 📋포인터와 카운터 사용:num은 현재 숫자를, index는 배열의 위치를 추적합니다.count는 누락된 숫자를 추적합니다.누락된 숫자 확인:현재 숫자 num이 배열 arr에 없는 경우:count를 증가시키고, num도 증가시킵니다.현재 숫자 num이 배열 arr에 있는 경우:배열의 다음 위치로 이동하며 num을 증가시킵니다.반복 조건:count가 k에 도달할 때까지 위 작업을 반복합니다.결과 반환:마지막으로 확인된 숫자에서 1을..
· 알고리즘
📌 LeetCode [860]: Lemonade Change🔗 문제 링크문제 설명 📄레모네이드를 판매하면서 고객이 지불한 금액에 대해 거스름돈을 정확히 제공할 수 있는지 확인하는 문제입니다.레모네이드 가격은 5달러입니다.고객이 (5), (10), (20) 달러 지폐 중 하나를 지불합니다.거스름돈은 항상 적은 수의 지폐를 우선적으로 사용해야 합니다.입력: 지폐 배열 bills출력: 거스름돈을 정확히 줄 수 있으면 True, 그렇지 않으면 False문제 접근 방식 📋현금 관리:(5)달러와 (10)달러 지폐의 개수를 money 딕셔너리로 추적합니다.조건 처리:(5)달러 지폐: 추가만 하면 됩니다.(10)달러 지폐: (5)달러로 거스름돈을 제공합니다.(20)달러 지폐:(10 + 5)달러로 거스름돈을 주거..
· 알고리즘
📌 LeetCode [1047]: Remove All Adjacent Duplicates In String🔗 문제 링크문제 설명 📄문자열 s가 주어졌을 때, 인접한 중복 문자 쌍을 제거하는 문제입니다.중복 문자 제거는 반복적으로 수행되며, 더 이상 제거할 수 없을 때 최종 문자열을 반환합니다.문제 접근 방식 📋스택 활용:스택을 사용하여 문자열의 문자를 순회하며 인접한 문자가 중복되는 경우 제거.스택의 마지막 문자가 현재 문자와 같다면 스택에서 제거.그렇지 않다면 스택에 현재 문자를 추가.결과 반환:최종 스택에 남아 있는 문자를 이어 붙여 결과 반환.Solution 💻class Solution: def removeDuplicates(self, s: str) -> str: stac..
알고리즘 노트
'알고리즘' 카테고리의 글 목록 (5 Page)