알고리즘

📌 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..
📌 LeetCode [1752]: Check if Array Is Sorted and Rotated🔗 문제 링크문제 설명 📄정수 배열 nums가 주어졌습니다.배열이 정렬된 상태에서 순환된 형태인지 확인하는 문제입니다.순환된 배열은 정렬된 배열의 일부가 뒤로 이동된 상태입니다.예: [3, 4, 5, 1, 2]는 [1, 2, 3, 4, 5]의 순환된 형태입니다.문제 접근 방식 📋정렬된 배열 생성:주어진 배열을 정렬하여 sortNums를 생성합니다.배열 확장:주어진 배열을 두 배로 확장하여 모든 가능한 순환 조합을 확인합니다.순환 배열 비교:확장된 배열의 슬라이싱을 통해 정렬된 배열과 같은 순환 상태인지 확인합니다.Solution 💻class Solution: def check(self, num..
📌 LeetCode [884]: Uncommon Words from Two Sentences🔗 문제 링크문제 설명 📄두 개의 문자열 s1과 s2가 주어집니다. 각 문자열은 공백으로 구분된 단어들로 이루어져 있습니다.s1과 s2에서 한 번만 등장하는 단어를 찾아 리스트로 반환하세요.문제 접근 방식 📋문자열 분리:split(" ")을 사용해 각 문장을 단어 단위로 나눕니다.빈도 계산:두 문장에서 각 단어의 빈도를 dict로 저장합니다.희소 단어 추출:빈도가 1인 단어만 결과 리스트에 추가합니다.Solution 💻class Solution: def uncommonFromSentences(self, s1: str, s2: str) -> List[str]: pattern = dict()..
개발하는 장씨
'알고리즘' 카테고리의 글 목록 (8 Page)