Leetcode 279

[Intervals][Easy] 228. Summary Ranges

https://leetcode.com/problems/summary-ranges/description Q. 주어진 정렬된 정수 배열 nums의 범위를 아래와 같은 규칙의 string으로 표시하라.  Solution.  논리대로 코드를 작성한다.  다른 문제의 초석이 되는 구간 check 구현을 확인하는 문제.  public IList SummaryRanges(int[] nums) { IList ret = new List(); if(nums.Length==0) return ret; int start = nums[0]; int cur = start; for(int q = 1; q {cur}"); else ret.Add($"{start}")..

[Hashmap][Easy] 219. Contains Duplicate II

https://leetcode.com/problems/contains-duplicate-ii/description Q. 정수 배열 nums와 정수 k 가 주어질 때, 그 값이 같고 index차이가 k보다 같거나 작은 두 원소가 존재하는지 찾아라.   Solution 역시, 말이 복잡해 보이지, 조건 자체는 간단하다.    같은 원소 중 위치 차이가 k 이하로 나는 두 원소를 찾는다.  public bool ContainsNearbyDuplicate(int[] nums, int k) { Dictionary> dictBuff = new Dictionary>(); for(int q = 0; q ()); else { for(int z = 0; z   결과.

[Hashmap][Easy] 202. Happy Number

https://leetcode.com/problems/happy-number/description Q. 해당 정수 number가 주어질 때, 이것이 happy number 인지 판단하라.  각 자리수를 반복해서 더한 합이 1 이 되면 이것을 happy number라고 부른다.   Solution. 우선 happy number가 되는지 판별하는 코드를 만든다.  happy number가 되지 않으면 해당 과정을 다시 밟는데, 특정 숫자들은 기존에 나왔던 숫자셋이 다시 나오기 시작한다. 이렇게 되면 이 과정이 무한히 반복되게 된다. 이때 이 숫자는 happy number가 되지 않는다고 판단할 수 있다.  다만 숫자 자리수 조합을 비교할 때, 같은 조합인지를 비교해야하므로, 여러가지 방법으로 이를 체크 할 ..

[Hashmap][Medium] 49. Group Anagrams

https://leetcode.com/problems/group-anagrams/description Q. 주어진 문자열 목록 strs 에 대해 서로 anagrams 인 것들에 대해 묶어서 출력하라.   Solution 여러 풀이가 있을 수 있다.   Frequency buffer를 사용하면, 각 문자당 freq buffer를 만들고,  해당 버퍼가 같다면, anagram 하다고 판단할 수 있다.  하지만 O(NxN)의 TC가 소요되고, 역시나 Time limitation 오류가 생긴다.   다른 접근을 해 본다.  문자를 같은 원리에 의해 재 조립하면, 같은 문자를 가진 단어는 같은 문자 순서를 가질 것이다. 즉, string을 정렬해 본다.   정렬에 O(N x logN), map 비교에 N 즉, 최..

[Hashmap][Easy] 290. Word Pattern

https://leetcode.com/problems/word-pattern/description Q. pattern과 단어 문자열 s 가 주어질때, 패턴과 문자열이 일치하는지 판단하라.   Solution.  최대한 단순하게 접근하고 TC는 O(N)으로 제한한다.   우선 s의 단어셋과 pattern의 길이가 다르면 무조건 일치하지 않게 된다.   다음으로 s의 단어셋을 풀어 hashset을 만들어 놓는다. 이 수대로 다른 단어가 존재 한다는 것이다.   마지막으로 pattern을 순회하며, 각 패턴의 캐릭터 별로 단어가 일치하는지 확인한다.   모두 통과하고 hashset의 수가 패턴의 단어수와 같다면, 일치하는 것으로 판단할 수 있다. 더보기 public bool WordPattern(string ..

[Hashmap][Easy] 205. Isomorphic Strings

https://leetcode.com/problems/isomorphic-strings/description Q. 두개의 문자열 s 와 t 가 주어 질때, isomorphic 한지 판단하라.  Solution.  즉, 캐릭터의 출현 빈도, 변환된 위치 등이 같다면 isomorphic 하다고 할 수 있겠다.  여러가지 방법을 활용 할 수 있겠다. 최대한 간단하게 freq buffer와 위치 체크 등을 이용한다.  더보기public bool IsIsomorphic(string s, string t) { if(s.Length != t.Length) return false; Dictionary dictFreqS = new Dictionary(); for(int q = 0; q di..

[Matrix][Medium] 289. Game of Life

https://leetcode.com/problems/game-of-life/description Q. 2차 정수 행렬 board가 주어진다. 1이 live, 0이 dead를 의미할 때, 다음에 의해 다음 상태를 구하라.  - live cell일 시, 주변에 live cell이 2개보다 적다면 dead 된다.  - live cell일 시, 주변에 live cell이 2개 혹은 3개 라면 live cell이 된다.  - live cell일 시, 주변에 3개 이상의 live cell이 있다면 dead cell이 된다.  - dead cell일 시, 주변에 3개의 live cell이 있다면 live cell이 된다.  추가 메모리 할당을 하지 말아라.   Solution.  우선 문제 해석을 정확하게 하자. ..

[Matrix][Medium] 36. Valid Sudoku

https://leetcode.com/problems/valid-sudoku/description Q. 유효한 sudoku인지 판단하라.   Solution 위 3 조건을 체크하는 로직을 만든다.   다양한 방법이 있을 수 있다고 본다.   최대한 간단하게 만들어 본다.더보기 bool IsValid(char ch, HashSet cache){ if(ch'9') return false; if(cache.Contains(ch)) return false; return true;}public bool IsValidSudoku(char[][] board) { // Row check. for(int y = 0; y buff = new HashSet(); ..