분류 전체보기 85

99클럽 코테 스터디 38일차 TIL + Heap(Seat Reservation Manager)

오늘의 과제리트코드 medium으로 분류된 Seat Reservation Manager 입니다. 이번 유형은 힙 입니다.문제https://leetcode.com/problems/seat-reservation-manager/description/  먼저 문제 요구사항 요약입니다. 좌석 예약 프로그램을 디자인합니다. 초기화 함수, 예약, 예약 취소 함수를 구현하면 되는데 예약시에는 가장 낮은 번호의 좌석 번호 순서대로 숫자를 반환합니다. 자료구조로서 힙은 최소 힙 혹은 최대 힙을 사용할텐데 문제의 요건을 보면 "가장 낮은 번호 순서대로" 좌석을 예약한다라고 나와있으니 최소 힙으로 사용하도록 하겠습니다. 이전 문제에서 사용했던 우선순위 큐를 사용할텐데 초기화시 정렬 순서에 따라 정렬된 값을 반환해주는 특성을 ..

99클럽 코테 스터디 37일차 TIL + 스택/큐(Minimum Add to Make Parentheses Valid)

오늘의 과제리트코드 medium으로 분류된 Minimum Add to Make Parentheses Valid 입니다. 이번 유형은 스택/큐 입니다.문제https://leetcode.com/problems/minimum-add-to-make-parentheses-valid/description/  먼저 문제 요구사항 요약입니다. 짝이 맞거나 맞지 않은 괄호가 주어질 때 삽입이나 이동을 통해 온전한 괄호를 만들 수 있는 최소 이동 횟수를 반환하면 됩니다. 문제의 분류가 스택이고 스택 단골 문제인 괄호가 나왔으니 스무스하게 풀어주면 됩니다. 스택 기초 문제로는 짝이 맞는 문자열이라면 true, 맞지 않는다면 false를 반환하는 문제에서 조~금 심화 문제인데 기존의 공식과 똑같이 진행하면 됩니다. 먼저 (를..

99클럽 코테 스터디 36일차 TIL + 스택/큐(Removing Stars From a String)

오늘의 과제리트코드 medium으로 분류된 Removing Stars From a String 입니다. 이번 유형은 스택/큐 입니다.문제https://leetcode.com/problems/removing-stars-from-a-string/description/  먼저 문제 요구사항 요약입니다. 문자열이 주어지고 문자중 *를 만나면 왼쪽에서 가장 가까운 문자와 함께 *도 제거 후 반환하면 됩니다. 괄호 짝 맞추기와 같이 전형적인 스택 문제입니다. 후입선출의 자료구조 특성을 이용하여 문자를 계속 담다가 *를 만날때만 pop을 통해 문자를 제거해주면 되는 아주 간단한 문제입니다. 코드입니다.class Solution { public String removeStars(String s) { ..

99클럽 코테 스터디 35일차 TIL + 스택/큐(Flatten Nested List Iterator)

오늘의 과제리트코드 medium으로 분류된 Flatten Nested List Iterator 입니다. 이번 유형은 스택/큐 입니다.문제https://leetcode.com/problems/flatten-nested-list-iterator/description/  먼저 문제 요구사항 요약입니다. 중첩 가능한 리스트가 주어집니다. 다음 요소를 반환하는 next(), 다음 요소가 있는지를 반한하는 hasNext() 함수를 구현하면 됩니다. 일단 문제의 힌트에 맞게 스택/큐를 사용하여 접근했습니다. 처음 주어지는 nestedList내 요소가 숫자인지, 중첩 List인지 알 수 없기 때문에 일단은 스택에 모두 넣어놓고 숫자면 pop, 아니면 해당 리스트 내 요소를 push하는 방법으로 풀이를 진행했습니다. 먼..

99클럽 코테 스터디 34일차 TIL + 스택/큐(Find the Winner of the Circular Game)

오늘의 과제리트코드 medium으로 분류된 Find the Winner of the Circular Game 입니다. 이번 유형은 스택/큐 입니다.문제https://leetcode.com/problems/find-the-winner-of-the-circular-game/description/  먼저 문제 요구사항 요약입니다. N이 주어질 때 K번째마다 요소를 제거하여 마지막 하나의 요소만 남을 때 까지 반복 후 해당 요소를 반환하면 됩니다. 이 문제는 요세푸스 문제의 변형으로 다음과 같은 수식을 갖고 풀 수 있습니다.f(n, k) = (f(n - 1, k) + k) % n 단순 암기 문제로 코드 또한 위 수식이 전부입니다. 마지막 한 명이 남을 때 까지 재귀적으로 호출해주면 됩니다.class Soluti..

99클럽 코테 스터디 33일차 TIL + 정렬(Reordered Power of 2)

오늘의 과제리트코드 medium으로 분류된 Reordered Power of 2 입니다. 이번 유형도 정렬입니다.문제https://leetcode.com/problems/reordered-power-of-2/description/  먼저 문제 요구사항 요약입니다. 정수가 주어질 때 2의 거듭제곱을 만들 수 있는지 여부를 반환하면 됩니다. 거듭제곱 여부를 쉽게 확인하기 위해 미리 2의 30제곱까지 구해둡니다. 30제곱까지만 구하는 이유는 입력으로 최대 10의 9승(10억)까지만 주어지기 때문입니다. 또한 임의의 정렬이라고 했으나 모두 통일하여 정렬하기 위해 2의 거듭제곱을 오름차순으로 정렬하여 넣어줍니다.List powerOf2Digits = new ArrayList();for (int i = 0; i  ..

99클럽 코테 스터디 32일차 TIL + 정렬(Top K Frequent Elements)

오늘의 과제리트코드 medium으로 분류된 Top K Frequent Elements 입니다. 이번 유형은 정렬입니다.문제https://leetcode.com/problems/top-k-frequent-elements/description/  먼저 문제 요구사항 요약입니다. 문자열이과 정수가 주어지면 문자의 빈도에 따라 내림차순으로 정렬 후 정수만큼 반환해주면 됩니다. 어제의 문자와 완전히 동일하게 풀었습니다. 코드입니다.import java.util.*;class Solution { // 1. num을 센다. // 2. 정렬을 한다. // 3. k만큼 배열에 넣는다. public int[] topKFrequent(int[] nums, int k) { var map = ..

99클럽 코테 스터디 31일차 TIL + 문자열(Sort Characters By Frequency)

오늘의 과제리트코드 medium으로 분류된 Sort Characters By Frequency 입니다. 이번 유형은 문자열 입니다.문제https://leetcode.com/problems/sort-characters-by-frequency/description/  먼저 문제 요구사항 요약입니다. 문자열이 주어지면 문자의 빈도에 따라 내림차순으로 정렬 후 반환하면 됩니다. 입력 제한은 영어 대문자 소문자 숫자로 구성되어 있으며 최대 5 * 10⁵ 길이를 갖고 있으니 O(n²)으로는 풀 수 없습니다. 접근입니다. "문자 빈도"에 따라 문자열을 정렬해야 하니 단순한 생각으로 문자를 먼저 계산합니다. 각 문자에 대한 카운팅은 여러가지 방법이 있겠으나 저는 map을 활용하여 풀이하였습니다. map에서 제공하는 a..

99클럽 코테 스터디 30일차 TIL + 문자열(Minimum Suffix Flips)

오늘의 과제리트코드 medium으로 분류된 Minimum Suffix Flips 입니다. 이번 유형은 문자열 입니다.문제https://leetcode.com/problems/minimum-suffix-flips/description/  먼저 문제 요구사항 요약입니다. 모두 0인 이진 문자열이 있다고 가정하고 이 문자열을 target의 이진 문자열과 일치 시키려면 몇 번의 flip을 해야하는지 반환하면 되는 문제입니다. 문제만 이해하면 이번에도 굉장히 간단히 풀 수 있는 문제입니다. 먼저 반환할 answer 값과 뒤집어야할지 결정할 flip 변수를 선언합니다. 이후에는 주어진 target 문자열을 순회하며 flip 값과 target char 값을 비교하며 뒤집어주면 됩니다. 문제 조건에 보면 i번을 선택하..

99클럽 코테 스터디 29일차 TIL + 문자열(Iterator for Combination)

오늘의 과제리트코드 medium으로 분류된 Iterator for Combination 입니다. 이번 유형은 문자열 입니다.문제https://leetcode.com/problems/iterator-for-combination/description/  먼저 문제 요구사항 요약입니다. 소문자로 정렬된 알파벳 문자열과 조합해야 할 길이가 주어질 때 가능한 모든 조합을 생성하고, 이 조합을 순차적으로 반환하거나 다음 값의 여부를 반환하는 메서드를 작성해야 합니다. 풀이 방법은 최대한 간단히 하기위해 조합 가능한 문자열을 미리 만들어 리스트에 넣어두고 next와 hasNext는 리스트의 값을 이용하는 방식으로 진행하겠습니다. 먼저 초기화입니다. 조합 가능한 문자열을 담을 리스트와 next, hasNext에 사용할..