LeetCode

Programming/LeetCode

[Dart] 205. Isomorphic Strings

1. 문제https://leetcode.com/problems/isomorphic-strings/description/?envType=study-plan-v2&envId=top-interview-150  2. 요구 사항1) 두 개의 문자열 s와 t가 주어졌을 때 두 문자열이 동형인지 판별한다.2) 동형 문자열은 s 문자열의 문자 하나가 t 문자열의 문자로 일대일 매핑 되는 것이다.3) 같은 문자는 같은 문자로 매핑되어야 하며, 다른 문자로 바뀌어서는 안된다.  3. 핵심 아이디어 1) 각 문자를 ASCII 값으로 대체 후 비교 각 문자열의 문자를 정수(ASCII) 값으로 변환하여,두 개의 List 배열을 만들어 각 문자의 최근 등장 위치를 저장한다. 문자가 이전에 등장한 위치가 서로 다르면, 1대1 매핑..

Programming/LeetCode

[Dart] 202. Happy Number

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이면 해당 숫자는 해피 넘버이다.이 외의 숫자는 사이클을 형성하게 되어..

Programming/LeetCode

[Dart] 169. Majority Element (Boyer-Moore VoitingAlgorithm)

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로..

Programming/LeetCode

[Dart] 136. Single Number

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 = ..