LeetCode 공부 - Longest Harmonious Subsequence

LeetCode(594) - Longest Harmonious Subsequence 문제 임의의 harmonious array를 정의한다. harmonious array는 배열의 양 끝단의 수가 그 사이의 수보다 1이 더 큰 배열을 말한다. 배열 nums가 주어질 때, 해당 배열을가지고 가장 긴 harmonious array를 만들었을 때 자리수를 반환하라. 입력 Input: nums = [1,3,2,2,5,2,3,7] 출력 Output: 5 배열 1,3,2,2,5,2,3,7를 이용하여 harmonious array 3,2,2,2,3을 만들 수 있으므로 5를 반환한다. 풀이 map을 이용하여 각 숫자의 출현 횟수를 카운트 한다. map의 첫 번째 pair를 가르키는 prev변수를 생성하고 map을 순회한다....

January 27, 2023 · 2 min · 246 words · Me

LeetCode 공부 - Distribute Candies

LeetCode(575) - Distribute Candy 문제 Alice는 n개의 캔디를 가지고 있다. i 캔디는 candyTpye[i]의 타입이다. Alice는 살이쪄서 캔디를 줄여야한다..! 주치의는 Alice가 가지고 있는 캔디의 n/2만큼만 먹으라고 한다. Alice는 최선의 선택을 하고싶다. n/2만큼을 먹어야한다면, 가능한한 많은 종류의 캔디를 먹고싶다. 만약 6종류의 캔디가 있다면, 3종류의 캔디를 먹고, 3종류의 캔디 총 6개가 있다면 있다면 n/2를 한 만큼인 3개만을 먹되, 3종류의 캔디를 먹고싶다. 캔디의 종류를 나타내는 candyType이 주어질 때, Alice가 먹을 수 있는 캔디의 최대 개수를 반환하라....

January 25, 2023 · 1 min · 129 words · Me

LeetCode 공부 - Keyboard Row

LeetCode(500) - Keyboard Row 문제 string 문자열들의 배열인 words가 주어진다. 일반적인 키보드 배열은 알파벳을 세 줄로 나눌 수 있다. qqwertyuiop가 가장 첫 번째 줄, asdfghjkl가 두 번째 줄 마지막으로 zxcvbnm가 세 번재 줄이다. words를 구성하는 word가, 키보드를 구성하는 세 줄 중 하나의 라인에서 다 완성이 된다면 배열에 삽입하여 해당 배열을 반환하라. 입력 Input: words = ["Hello","Alaska","Dad","Peace"] 출력 Output: ["Alaska","Dad"] 풀이 키보드 배치를 세군데로 나누고, 세 개의 unordered_set을 만들어서 미리 저장한다....

January 23, 2023 · 2 min · 261 words · Me

LeetCode 공부 - Longest Palindrome

LeetCode(409) - Longest Palindrome 문제 문자열 s가 주어진다. 문자열 s의 문자들을 재조합하여 Palidrome을 만들 때 가장 긴 Palidrome의 길이를 반환하라. 입력 Input: s = "abccccdd" 출력 Output: 7 문자열 abccccdd를 재조합해서 가장 큰 길이의 Palidrome을 만들면 dccaccd이므로, 해당 길이인 7을 반환한다. 풀이 unordered_map으로 각 문자들의 출현빈도를 카운팅하고, 짝수 수를 구해 Palidrome을 계산한다. 라고 0. 처럼 생각했는데 짝수를 카운팅 후 Palidrome의 길이를 계산하는 방법을 몰라서 Solution을 보고 같이 map을 써서 본 풀이를 적는다(even이면 전체사이즈를, odd가 1 초과일때 +1 해주면 되는거였다)....

January 16, 2023 · 2 min · 239 words · Me

LeetCode 공부 - Find the Difference

LeetCode(387) - Find the Difference 문제 문자열 s와 t가 주어진다. 문자열 t는 문자열 s를 셔플링하고, 여기에 문자 하나를 추가한 문자열이다. 주어진 문자열 t에서 추가된 문자를 찾아 반환하라. 입력 Input: s = "abcd", t = "abcde" 출력 Output: "e" 풀이 소문자 알파벳만으로 구성된 문자열이므로, 모든 문자의 출현 빈도를 int[26]으로 해결할 수 있다. int[26] 배열을 s, t용으로 각자 하나씩 만들고, 두 배열을 순회하면서 출현 빈도가 다른 하나의 문자를 반환한다. 문자 계산은 삽입 시 c - 'a'로 하여 a는 0 번째 index에 추가되도록 하고, 반환할 때는 index + 'a'로 계산하여 index를 알파벳으로 변환한 후 반환한다....

January 15, 2023 · 1 min · 180 words · Me