본문 바로가기
728x90
반응형

Leetcode43

389. Find the Difference 주어진 두 개의 문자열 s와 t에서 t에 추가된 한 문자를 찾는 문제입니다. 이 문제에서 s는 t에 랜덤하게 하나의 문자가 추가된 문자열입니다. 예를 들어, s = "abcd"와 t = "abcde"가 주어진 경우, t에 추가된 문자는 'e'입니다. 이 문제를 해결하는 일반적인 방법은 다음과 같습니다: 문자열 s와 t를 모두 순회하면서 각 문자의 등장 횟수를 카운트합니다. 이를 위해 두 개의 배열이나 딕셔너리를 사용할 수 있습니다. 두 문자열을 비교하면서 s에는 있지만 t에는 없는 문자를 찾습니다. 이 문자가 t에 추가된 문자입니다. public char FindTheDifference(string s, string t) { int[] count = new int[26]; foreach(char c in.. 2023. 11. 8.
367. Valid Perfect Square 주어진 양의 정수가 완전한 제곱수인지를 확인하는 문제입니다. 즉, 어떤 양의 정수 num이 주어질 때, 이 숫자가 다른 정수의 제곱으로 나타낼 수 있는지 여부를 판단해야 합니다. 예를 들어, 16은 4의 제곱으로 나타낼 수 있으므로 완전한 제곱수입니다. 반면에 14는 다른 정수의 제곱으로 나타낼 수 없으므로 완전한 제곱수가 아닙니다. 주어진 숫자 num이 1보다 작거나 같은 경우, true를 반환합니다. 왜냐하면 1은 이미 완전한 제곱수입니다. 이진 검색(binary search)을 사용하여 num의 제곱근을 찾습니다. 즉, num의 제곱근을 sqrt라고 했을 때, sqrt * sqrt가 num보다 크면 sqrt를 감소시키고, sqrt * sqrt가 num보다 작으면 sqrt를 증가시킵니다. 이 과정을 .. 2023. 11. 8.
350. Intersection of Two Arrays II 두 개의 정수 배열에서 중복된 원소들의 목록을 찾는 문제입니다. 이 문제에서는 중복된 원소를 모두 포함해야 합니다. 즉, 중복된 원소가 여러 번 나타날 수 있으며, 그만큼 결과 목록에도 여러 번 나타나야 합니다. 예를 들어, 두 배열 nums1 = [1, 2, 2, 1]과 nums2 = [2, 2]가 주어진 경우, 이 두 배열의 중복된 원소는 [2, 2]입니다. 이 문제를 해결하기 위한 일반적인 접근 방법은 다음과 같습니다: 하나의 배열을 Dictionary 또는 HashMap에 저장합니다. 이때, 배열의 각 원소를 키로 사용하고, 해당 원소의 빈도(나타난 횟수)를 값으로 저장합니다. 다른 배열을 순회하면서, 각 원소가 Dictionary에 이미 존재하면 빈도를 줄이고 결과 목록에 추가합니다. 빈도가 0.. 2023. 11. 7.
349. Intersection of Two Arrays 주어진 두 개의 정수 배열에서 공통된 원소(교집합)를 찾는 문제입니다. 각 배열은 중복된 원소를 포함할 수 있지만, 교집합 결과에서 중복된 원소는 한 번만 나타나야 합니다. public int[] Intersection(int[] nums1, int[] nums2) { Dictionary dic = new Dictionary(); HashSet ret = new HashSet(); for(int i = 0;i 2023. 11. 7.
242. Valid Anagram 두 개의 문자열을 비교하여 하나의 문자열이 다른 문자열의 애너그램(Anagram)인지 확인하는 문제입니다. 애너그램은 같은 문자를 사용하여 다른 순서로 재배열한 문자열을 의미합니다. 예를 들어, "listen"은 "silent"의 애너그램입니다. 두 문자열의 길이가 다르다면, 두 문자열은 애너그램이 될 수 없으므로 false를 반환합니다. 두 문자열의 길이가 동일하다면, 각 문자열의 문자 빈도를 저장하기 위한 데이터 구조(예: 딕셔너리)를 만듭니다. 첫 번째 문자열을 반복하면서 각 문자의 빈도를 업데이트합니다. 두 번째 문자열을 반복하면서 첫 번째 문자열의 빈도와 비교하며 빈도를 감소시킵니다. 두 번째 문자열을 순회하면서 빈도를 감소시킬 때, 해당 문자가 두 번째 문자열에 없거나 이미 빈도가 0이라면 두.. 2023. 11. 7.
168. Excel Sheet Column Title 엑셀 시트의 열 번호를 해당 열의 알파벳 표기로 변환하는 문제입니다. 문제 설명: 엑셀 시트의 열 번호는 1부터 시작하며, 각 열은 "A", "B", "C", ..., "Z", "AA", "AB", "AC", ... 순서로 표현됩니다. 여기서 "A"는 1번 열, "B"는 2번 열, "Z"는 26번 열, "AA"는 27번 열, "AB"는 28번 열을 나타냅니다. 주어진 숫자 n에 해당하는 열 번호를 알파벳 표기로 변환하여 반환하세요. 예를 들어, n이 1인 경우, 반환값은 "A"입니다. n이 28인 경우, 반환값은 "AB"입니다. 이 문제를 해결하기 위해서는 10진수를 26진수로 변환하는 것과 유사한 방법을 사용합니다. public string ConvertToTitle(int n) { StringBuil.. 2023. 11. 6.
145. Binary Tree Postorder Traversal 이진 트리를 후위 순회(postorder traversal)하는 방법을 구현하는 문제입니다. 문제 설명: 주어진 이진 트리를 후위 순회(postorder traversal)하는 방법은 다음과 같습니다: 왼쪽 서브트리를 후위 순회합니다. 오른쪽 서브트리를 후위 순회합니다. 루트 노드를 방문합니다. 후위 순회는 왼쪽 서브트리와 오른쪽 서브트리를 모두 순회한 후에 루트 노드를 방문하는 순서입니다. 예를 들어, 다음과 같은 이진 트리가 주어진 경우: 1 / \ 2 3 / \ 4 5 후위 순회(postorder traversal)는 다음과 같은 순서로 노드를 방문합니다: 4 -> 5 -> 2 -> 3 -> 1 후위 순회를 구현하기 위해 재귀 함수를 사용하거나 스택을 활용할 수 있습니다. public class S.. 2023. 11. 5.
728x90
반응형