Programming

Programming/LeetCode

[Dart] 383. Ransom Note

1. 문제https://leetcode.com/problems/ransom-note/description/?envType=study-plan-v2&envId=top-interview-150   2. 요구사항1) 두 문자열 ransomNote와 magazine이 주어진다.2) ransomNote를 작성하기 위해 필요한 모든 문자를 magazine에서 가져올 수 있는지 확인한다.3) 각 문자는 magazine에서 단 한 번만 사용할 수 있다.4) ransomNote와 magazine은 영어 소문자로 구성된다.   3. 핵심 아이디어1) magazine의 알파벳 등장 횟수 저장 후, ransomNote에 알파벳이 등장하면 횟수 감소magazine의 알파벳 등장 횟수를 List 타입의 charCount 변수에..

Programming/LeetCode

[Dart] 345. Reverse Vowels of a String

1. 문제https://leetcode.com/problems/reverse-vowels-of-a-string/description/?envType=study-plan-v2&envId=leetcode-75    2. 요구사항1) 주어진 문자열 모음만 뒤집어서 문자열을 반환한다.2) 모음은 a, e, i, o, u이며, 대소문자 구분 없이 나타난다.2) 다른 문자는 원래 위치에 그대로 남아 있어야 한다.   3. 핵심 아이디어1) 투 포인터 사용 문자열의 맨 앞과 맨 끝에서부터 두 개의 포인터를 사용하여 각각 모음을 찾는다.왼쪽 포인터는 모음을 찾을 때까지 오른쪽으로 이동하고, 오른쪽 포인터는 모음을 찾을 때까지 왼쪽으로 이동한다. 두 포인터가 모음을 찾으면 두 포인터끼리 문자를 서로 교환한다.교환 후에는..

Programming/LeetCode

[Dart] 242. Valid Anagram

1. 문제https://leetcode.com/problems/valid-anagram/?envType=study-plan-v2&envId=top-interview-150    2. 요구사항1) 두 개의 문자열 s와 t가 있다.2) t가 s의 애너그램이면 true를 반환하고, 아니면 false를 반환한다.3) 애너그램은 두 문자열이 같은 문자를 같은 개수만큼 가지고 있지만, 순서는 다른 경우를 말한다.    3. 핵심 아이디어1) List에 알파벳이 나온 횟수 저장 알파벳 소문자 a부터 z의 각 문자의 등장 횟수를 저장할 List를 생성한다. s문자열을 순회하며 각 문자의 개수를 증가한다. t문자열도 순회하며 각 문자의 개수를 감소한다. 리스트 배열에 문자가 남아있는지, 남아있지 않은지로 애너그램을 판별..

Programming/LeetCode

[Dart] 228. Summary Ranges

1. 문제 https://leetcode.com/problems/summary-ranges/description/?envType=study-plan-v2&envId=top-interview-150   2. 요구사항1) 정렬된 정수 배열 nums가 주어진다.2) 연속된 숫자들을 하나의 범위로 묶어 문자열 형태로 반환한다.3) 출력은 오름차순으로 정렬된 문자열 리스트이다.4) 빈 배열일 경우, 빈 리스트 []를 반환한다.   3. 핵심 아이디어1) 배열을 순회하며 연속적인 숫자인지 확인배열을 순회하며 연속적인 숫자를 찾아야 한다. 만약 연속적이지 않은 숫자를 만나거나 배열의 마지막 숫자에 도달하면,지금까지 추적해온 범위의 시작 숫자부터 현재 숫자까지를 문자열로 만들어 결과 리스트에 저장한다. 새로운 연속 범..