본문 바로가기
728x90
반응형

Leetcode47

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.
141. Linked List Cycle 주어진 연결 리스트(링크드 리스트)에 순환(사이클)이 존재하는지 여부를 판단하는 문제입니다. 문제 설명: 주어진 연결 리스트에 순환(사이클)이 존재하면 true를, 순환이 존재하지 않으면 false를 반환하세요. 연결 리스트는 각 노드가 데이터와 다음 노드를 가리키는 링크로 구성됩니다. 순환(사이클)이 존재한다는 것은 연결 리스트에서 어떤 노드를 시작점으로 하더라도 해당 노드를 지나면 언젠가 다시 동일한 노드에 도달할 수 있다는 것을 의미합니다. 예를 들어, 다음과 같은 연결 리스트가 순환을 가지고 있으면 true를 반환해야 합니다: 3 -> 2 -> 0 -> 4 ^ | | v +---------+ 반면에, 순환을 가지지 않는 연결 리스트는 다음과 같습니다: 1 -> 2 -> 3 -> 4 순환을 판단하기.. 2023. 11. 5.
110. Balanced Binary Tree 주어진 이진 트리가 균형 잡힌 트리인지 확인하세요. 균형 잡힌 트리는 모든 서브트리의 높이 차이가 1 이하인 트리를 의미합니다. 즉, 모든 서브트리가 높이 균형을 유지하고 있는 경우 균형 잡힌 트리입니다. 예를 들어, 다음은 균형 잡힌 트리입니다: 3 / \ 9 20 / \ 15 7 각 서브트리의 높이 차이가 1 이하입니다. 반면에, 다음 트리는 균형 잡힌 트리가 아닙니다: 1 / \ 2 2 / \ 3 3 / \ 4 4 여기서 왼쪽 서브트리와 오른쪽 서브트리의 높이 차이가 2이므로 균형 잡힌 트리가 아닙니다. 균형 잡힌 트리 여부를 판단하기 위해, 주어진 트리의 각 노드에서 왼쪽 서브트리와 오른쪽 서브트리의 높이를 비교하여 높이 차이가 1 이하인지 확인해야 합니다. 이 작업을 트리의 모든 노드에 대해 재.. 2023. 11. 4.
70. Climbing Stairs 주어진 계단을 오를 때, 각 단계마다 1단계 또는 2단계씩 올라가는 방법의 수를 계산하는 문제입니다. 문제 설명: 당신은 n개의 계단을 올라야 합니다. 한 번에 1단계 또는 2단계씩 올라갈 수 있을 때, n개의 계단을 올라갈 수 있는 방법의 수를 계산하세요. 예를 들어, n = 3인 경우, 다음과 같은 방법으로 3개의 계단을 올라갈 수 있습니다: 1단계 -> 1단계 -> 1단계 1단계 -> 2단계 2단계 -> 1단계 따라서 3개의 계단을 올라가는 방법은 총 3가지입니다. 예시: 입력: n = 2 출력: 2 설명: 2개의 계단을 올라가는 방법은 2가지입니다: 1단계 -> 1단계 또는 2단계 한 번. 입력: n = 3 출력: 3 설명: 3개의 계단을 올라가는 방법은 3가지입니다 (위의 예시 참고). 이 문제.. 2023. 11. 3.
728x90
반응형