본문 바로가기
728x90
반응형

분류 전체보기279

mergeTwoLinkedLists 두 개의 오름차순으로 정렬된 단일 연결 리스트가 주어졌을 때, 이 두 리스트를 병합하는 것입니다. 병합된 리스트도 오름차순으로 정렬되어야 합니다. 즉, 첫 번째 두 리스트의 노드를 연결하여 새로운 단일 연결 리스트를 만들어야 합니다. 이 문제를 풀기 위해서는 O(l1.length + l2.length) 시간 복잡도를 가져야 합니다. 이것이 면접에서 요구되는 작업입니다. 예를 들어, 다음과 같은 두 개의 연결 리스트가 주어졌다고 가정해 봅시다: 리스트 1: 1 -> 3 -> 5 리스트 2: 2 -> 4 -> 6 이 두 리스트를 병합하면 다음과 같은 결과가 나와야 합니다: 병합된 리스트: 1 -> 2 -> 3 -> 4 -> 5 -> 6 이 문제를 풀기 위해서는 두 리스트를 순회하면서 노드를 비교하고 새로운 .. 2024. 3. 14.
addTwoHugeNumbers 두 개의 큰 정수가 링크드 리스트로 주어졌습니다. 각 링크드 리스트 요소는 0부터 9999까지의 숫자로, 정확히 4자리 숫자를 나타냅니다. 나타낸 숫자에는 선행 0이 있을 수 있습니다. 이 두 큰 정수를 더하고 결과를 동일한 형식으로 반환하는 것이 문제입니다. 예시: a = [9876, 5432, 1999]이고 b = [1, 8001]인 경우, 결과는 [9876, 5434, 0]이 됩니다. 설명: 987654321999 + 18001 = 987654340000. a = [123, 4, 5]이고 b = [100, 100, 100]인 경우, 결과는 [223, 104, 105]가 됩니다. 설명: 12300040005 + 10001000100 = 22301040105. // Singly-linked lists .. 2024. 3. 11.
isListPalindrome 주어진 정수로 구성된 단일 연결 리스트가 회문인지 확인하는 두 가지 일반적인 접근 방식이 있습니다. 스택 사용: 연결 리스트를 순회하고 값을 스택에 넣습니다. 그런 다음 리스트를 다시 순회하고 스택에서 꺼낸 값을 현재 노드와 비교합니다. 모든 노드가 일치하면 연결 리스트는 회문입니다. 그렇지 않으면 회문이 아닙니다. 이 접근 방식은 O(n) 시간 복잡도를 가지며 스택에 추가 공간을 사용합니다. 두 번째 절반 뒤집기: 연결 리스트의 중간 지점을 찾습니다. 두 번째 절반을 뒤집습니다. 첫 번째 절반과 뒤집힌 두 번째 절반을 비교합니다. 일치하면 연결 리스트는 회문입니다. 그렇지 않으면 회문이 아닙니다. 이 접근 방식도 O(n) 시간 복잡도를 가지지만 추가 공간은 **O(1)**만 사용합니다. 문제에서 시간 .. 2024. 3. 9.
removeKFromList 주어진 연결 리스트에서 값이 k인 노드를 모두 제거하는 문제입니다. 이 문제를 해결하기 위해서는 연결 리스트를 순회하면서 값이 k인 노드를 발견하면 해당 노드를 제거해야 합니다. // Singly-linked lists are already defined with this interface: // class ListNode { // public T value { get; set; } // public ListNode next { get; set; } // } // ListNode solution(ListNode l, int k) { if(l == null){ return null; } ListNode current = l; while(current != null && current.value == k){.. 2024. 3. 8.
isCryptSolution 암호화된 문자열을 해독하여 올바른 숫자로 변환하여 검증하는 것입니다. 세 개의 문자열로 이루어진 crypt 배열과 두 개의 문자열로 이루어진 solution 배열이 주어집니다. 각 문자는 0부터 9까지의 숫자를 나타냅니다. crypt 배열의 각 문자열을 해독하여 올바른 숫자로 변환한 후, 덧셈 연산을 수행하여 crypt 배열의 마지막 문자열이 solution 배열의 합과 동일한지 확인해야 합니다. 또한 다음 규칙을 따라서 암호화를 수행합니다. 각 문자열의 첫 번째 문자는 0으로 시작하지 않습니다. 따라서 "00123"과 같은 문자열은 유효하지 않습니다. 각 문자는 0부터 9까지의 숫자 중 하나를 나타냅니다. 각 문자열의 길이는 1 이상 15 이하입니다. bool solution(string[] crypt.. 2024. 3. 7.
sudoku2 주어진 그리드가 유효한 스도쿠 퍼즐인지 확인하는 알고리즘을 구현해야 합니다. 스도쿠 퍼즐은 9 × 9 그리드에 1부터 9까지의 숫자를 중복되지 않게 채워넣는 것이 목표입니다. 각 행, 각 열, 그리고 3 × 3 크기의 서브 그리드(총 9개)에는 1부터 9까지의 숫자가 한 번씩만 나타나야 합니다. bool solution(char[][] grid) { HashSet rows = new HashSet(); HashSet cols = new HashSet(); HashSet subs = new HashSet(); for(int i = 0;i 2024. 3. 6.
rotateImage 주어진 2D 행렬을 90도 시계 방향으로 회전시키는 문제 추가적인 메모리를 O(1)만 사용하여 풀어야 합니다. 여기서는 주어진 행렬을 원래의 행렬에 덮어씌우면서 회전을 진행하는 방법을 사용할 수 있습니다. 이를 위해서는 주어진 행렬을 다음과 같이 네 단계로 나눠서 회전시킬 수 있습니다: 주어진 행렬을 대각선을 기준으로 대칭시킵니다. 행렬의 각 행을 뒤집습니다. int[][] solution(int[][] a) { int n = a.Length; for(int i = 0;i 2024. 2. 28.
728x90
반응형