2023/09/16 7

[Leetcode Top Interview 150] 202. Happy Number

난이도 : easy 문제링크 n이라는 정수가 주어짐 n이 happy number인지 체크하라 happy number 양의 정수로 시작하며, 각각의 digit 제곱의 합으로 교체됨 숫자가 1이 될때까지 반복하며, 1이되면 그 숫자는 happy number 이다. 1. 접근법 각각의 digit 제곱의 합은 10의 멱수가 되어야 한다 n - digit 제곱합을 해시테이블에 저장한다 방문한 n은 다시 방문하지 않는다 3. 구현 코드 class Solution { Map map = new HashMap(); public boolean isHappy(int n) { while (n != 1 && !map.containsKey(n)) { n = process(n); } return n == 1 ? true : fal..

Algorithm/(Java) PS 2023.09.16

[Leetcode Top Interview 150] 49. Group Anagrams

난이도 : medium 문제링크 string 배열이 주어진다 : strs strs 중, 서로 anagram인 문자열들을 그룹핑하고, 2차원 배열로 리턴하라 ex) Input: strs = ["eat","tea","tan","ate","nat","bat"] Output: [["bat"],["nat","tan"],["ate","eat","tea"]] anagram은 또 다른 단어의 재구성을 통해원본 단어를똑같이 만들 수 있는 단어를 뜻한다 반드시 모든 문자를 한번씩 사용하여 구성해야 한다 ex) s = "anagram", t= = "nagaram" => true ex) s = "ab", t= = "a" => false (s의 문자 b를 사용하지 않았음) 1. 접근법 해시테이블 사용 anagram 대표문자 -..

Algorithm/(Java) PS 2023.09.16

[Leetcode Top Interview 150] 290. Word Pattern

난이도 : easy 문제링크 두개의 문자열이 주어진다 : pattern, s s가 pattern 문자열의 패턴을 따르는지 확인하라 ex) pattern = "abba", s = "dog cat cat dog" => true ex) pattern = "abba", s = "dog cat cat fish" => false 1. 접근법 해시테이블 생성 pattern 문자에 대응되는 s 문자열 s 문자열에 대응되는 pattern 문자 한 문자씩 순회하면서, 특정 pattern 문자에 대응되는 s 문자열이 해시테이블에서 가지고있는 값과 동등한지 확인 s 문자열에 대응되는 pattern 문자가 해시테이블에서 가지고있는 값과 동등한지 확인 3. 구현 코드 public boolean wordPattern(String ..

Algorithm/(Java) PS 2023.09.16

[Leetcode Top Interview 150] 205. Isomorphic Strings

난이도 : easy 문제링크 두개의 문자열이 주어진다 : s, t s와 t가 isomorphic 한지 체크하라 isomorphic은 다르게 표현되지만 같은 구조를 가지고 있을 때 사용한다 s의 문자가 t의 문자로 replace될 수 있으면 isomorphic하다 할 수 있다 ex) s="egg", t="add" => true ex) s="foo", t="bar" => false ex) s="paper", t="title" => true 1. 접근법 해시테이블 생성 s문자에 대응되는 t문자 t문자에 대응되는 s문자 한 문자씩 순회하면서, 특정 s문자에 대응되는 t문자가 해시테이블에서 가지고있는 값과 동등한지 확인 특정 t문자에 대응되는 s문자가 해시테이블에서 가지고있는 값과 동등한지 확인 3. 구현 코드 ..

Algorithm/(Java) PS 2023.09.16

[Leetcode Top Interview 150] 242. Valid Anagram

난이도 : easy 문제링크 두개의 문자열이 주어진다 : s, t t가 s의 anagram이라면 true를 리턴하라 anagram은 또 다른 단어의 재구성을 통해 원본 단어를 똑같이 만들 수 있는 단어를 뜻한다 반드시 모든 문자를 한번씩 사용하여 구성해야 한다 ex) s = "anagram", t= = "nagaram" => true ex) s = "ab", t= = "a" => false (s의 문자 b를 사용하지 않았음) 1. 접근법 단어별 갯수를 관리하는 자료구조인 해시테이블을 이용한다 3. 구현 코드 class Solution { public boolean isAnagram(String s, String t) { Map map = new HashMap(); for (char c : s.toChar..

Algorithm/(Java) PS 2023.09.16

[Leetcode Top Interview 150] 383. Ransom Note

난이도 : easy 문제링크 두개의 문자열이 주어진다 : ransomNote, magazine magazine의 문자를 사용해 ransomNote를 생성할 수 있다면 true를 리턴하라 1. 접근법 magazine이 ransomNote의 모든 문자를 포함해야 함 magazine의 문자 별 갯수를 hashtable을 사용하여 관리한다 ransomNote의 문자들을 각각 순회하면서 megazine의 문자에 포함되어 있는지 확인한다 확인될 경우, 해당 문자를 사용하여 ransomNote를 생성하는데 쓴다 Key의 value값을 내린다 3. 구현 코드 class Solution { public boolean canConstruct(String ransomNote, String magazine) { Map map..

Algorithm/(Java) PS 2023.09.16