1. 문제https://leetcode.com/problems/happy-number/?envType=study-plan-v2&envId=top-interview-150 2. 요구사항1) 임의의 양의 정수 n이 주어진다.2) 숫자의 각 자리 숫자를 제곱한 값을 모두 더한다.3) 숫자 1이 될 때까지 이 과정을 반복한다.4) 이 과정이 1로 끝나면 이 숫자는 해피 넘버이다.5) 해피 넘버이면 true를 반환하고, 그렇지 않으면 false를 반환한다. 3. 핵심 아이디어1) 언젠가 한 자리 수로 수렴 아무리 큰 숫자라도 각 자릿수의 제곱을 반복적으로 더하다 보면 언젠가는 일의자리 수로 수렴하게 된다. 또한, 한 자리 수가 1이나 7이면 해당 숫자는 해피 넘버이다.이 외의 숫자는 사이클을 형성하게 되어..
1. 문제https://leetcode.com/problems/majority-element/description/?envType=study-plan-v2&envId=top-interview-150 2. 요구사항1) 주어진 배열에서 majority element를 찾는 문제이다.2) majority element는 배열의 원소 중 절반 이상의 개수를 차지하는 원소를 의미한다.3) 최빈값을 찾아야 하며, 최빈값이 존재하는 것이 항상 보장된다. 3. 핵심 아이디어1) 투표 알고리즘 (Boyer-Moore VoitingAlgorithm)배열에 포함된 원소들 중 절반 이상 포함된 원소를 찾는 시간 복잡도 O(n), 공간 복잡도 O(1)을 갖는 알고리즘이다. 과반수를 가진 숫자는 나머지 숫자들과 1:1로..
1. 문제https://leetcode.com/problems/single-number/description/?envType=study-plan-v2&envId=leetcode-75 2. 문제 요구사항1) 정수 배열 nums가 주어진다.2) 모든 숫자는 두 번식 등장하며, 단 하나만 예외이다.3) 이 유일한 숫자를 찾는다. 3. 핵심 아이디어1) XOR 연산XOR 연산은 같으면 0, 다르면 1을 반환하는 이진 연산이다. ABA ^ B000110011101 여기서 중요한 특징은 다음과 같다.- 자기 자신과 XOR 하면 0이다.A ^ A = 04 ^ 4 = 0100 ^ 0100 = 0000 = 0 - 0과 XOR 하면 자기 자신이다.A ^ 0 = A4 ^ 0 = 0100 ^ 0000 = 0100 = ..
1. 문제https://leetcode.com/problems/valid-palindrome/description/?envType=study-plan-v2&envId=top-interview-150 2. 요구사항1) 팰린드롬은 모든 대문자를 소문자로 바꾸고, 모든 영숫자가 아닌 문자를 제거한 후, 앞뒤로 읽어도 같은 구문이다.2) 문자열 s가 주어진 후, 팰린드롬이면 true를 반환하고, 아니면 false를 반환한다. 3. 핵심 아이디어1) 문자열 전처리 후, 문자 비교 주어지는 문자열에는 공백과 특수 문자가 있으며, 대문자와 소문자가 나누어져 있다.이를 순수한 소문자 문자열로 바꾸기 위해 전처리 과정을 거친다.String result = s.replaceAll(RegExp('[^a-zA-Z0-9]..