본문 바로가기
728x90
반응형

CodeSignal66

rearrangeLastN 단일 연결 리스트에서 마지막 n개의 노드를 리스트의 시작 부분으로 이동 주어진 단일 연결 리스트에서 마지막 n개의 노드를 리스트의 시작 부분으로 이동시켜야 합니다. 예를 들어: 입력 리스트가 [1, 2, 3, 4, 5]이고 n이 3이면, 결과는 [3, 4, 5, 1, 2]가 되어야 합니다. 입력 리스트가 [1, 2, 3, 4, 5, 6, 7]이고 n이 1이면, 결과는 [7, 1, 2, 3, 4, 5, 6]이 되어야 합니다. // Singly-linked lists are already defined with this interface: // class ListNode { // public T value { get; set; } // public ListNode next { get; set; } // } .. 2024. 3. 20.
reverseNodesInKGroups 주어진 연결 리스트 l의 노드들을 크기 k씩 뒤집고 수정된 리스트를 반환해야 합니다. k는 양수이며, l의 길이보다 작거나 같아야 합니다. 만약 연결 리스트의 노드 수가 k의 배수가 아니라면, 뒤에 남은 노드는 그대로 유지되어야 합니다. 노드의 값은 변경할 수 없으며, 노드 자체만 변경할 수 있습니다. 예시: 예시 1: l = [1, 2, 3, 4, 5]이고 k = 2인 경우, 출력은 [2, 1, 4, 3, 5]가 되어야 합니다. 예시 2: l = [1, 2, 3, 4, 5]이고 k = 1인 경우, 출력은 [1, 2, 3, 4, 5]가 되어야 합니다. 예시 3: l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]이고 k = 3인 경우, 출력은 [3, 2, 1, 6, 5, 4, 9, 8.. 2024. 3. 15.
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.
728x90
반응형