알고리즘풀이 (38) 썸네일형 리스트형 Leetcode: Remove Nth Node From End of List, 연결 리스트의 끝부터 N번째 노드 삭제하기 문제설명 연결 리스트의 첫 노드(head)가 주어질 때, 리스트의 끝에서부터 N번째의 노드를 제거하고 연결 리스트의 첫 노드를 반환하라. 가장 먼저, 리스트의 길이를 구한다. 리스트의 길이에서 파라미터 n을 뺀 값이 지워야할 노드의 인덱스다. (5개의 길이에서 n이 2이라면, 3번째 노드) 총 길이와 n이 일치하거나 더 작은 경우 첫 번째 노드를 삭제한다. 그렇지 않다면, 지워야할 노드의 위치 전까지 이동하여 삭제한다. 문제풀이 public class ListNode { public var val: Int public var next: ListNode? public init() { self.val = 0; self.next = nil; } public init(_ val: Int) { self.val =.. Leetcode: Delete Node in a Linked List, 연결 리스트에서 노드 삭제하기 문제설명 단일 연결 리스트에서 노드를 삭제하는 함수를 작성하라. 리스트의 맨앞(head)에 대해 입력으로 받지 못한다. 대신, 삭제해야할 노드가 곧바로 함수 인자로 주어진다. 다만, 리스트에 가장 끝 노드(tail node)를 지우지는 않는 함수를 작성한다. 문제 풀이 이중 연결리스트가 아니므로 노드의 이전 포인터를 얻을 수 없다. 따라서, 이전 포인터와 다음 포인터를 연결하여 노드를 리스트에서 제거할 수 없다. 다음 노드의 값을 삭제할 노드에 복사하고 다음 노드의 다음 노드 값을 현재 노드의 다음 노드로 둔다. 다시 말해, 파라미터로 주어진 현재노드는 놔두고 다음 노드가 삭제되는 방식이다. public class ListNode { public var val: Int public var next: Li.. Leetcode: Longest Common Prefix, 가장 긴 공통 접두사 문제설명 문자열 배열이 주어졌을 때, 각 문자열들의 공통된 접두사를 찾는다. 0 Leetcode: strStr(), 건초더미에서 바늘찾기 문제설명 Return the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack. 건초더미(haystack)에 있는 가장 처음에 발견되는 바늘(needle)의 인덱스를 반환하라. 바늘을 찾지 못한다면, -1을 반환한다. 풀이방법 문자열은 배열로 바꿔서 푸는게 현명하다. 스위프트의 문자열의 인덱스 접근과 서브스트링이 여간 까다로운게 아니기 때문이다. 검색하려는 대상인 needle의 크기가 순회 중인 현재 인덱스를 넘어가서 비교하지 않도록 주의해야 한다. func strStr(_ haystack: String, _ needle: String) -> Int { if needle.isEmpty { .. Leetcode: Valid Palindrome, 회문 판별 문제설명 Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases. Note: For the purpose of this problem, we define empty string as valid palindrome. 풀이방법 문제 조건은 알파벳 또는 숫자만 회문으로 판별한다고 하였으므로, 문자열 배열에 이에 해당하는 것만 추가한다. 그리고, 이 문자열 배열의 양끝을 순회하면서 같은 문자 또는 숫자인지 판별한다. 참고 첫 번째 for 반복문에서, 문자열을 인덱스로 순회하면 타임아웃이 발생한다. 벤치마킹을 위해 CoreFoundation을 임포트하여 확인해보았다. 예제 문.. LeetCode: First Unique Character in a String, 한 문자열에서 가장 첫 번째 유일한 문자 찾기 문제 설명 Given a string, find the first non-repeating character in it and return its index. If it doesn't exist, return -1. 하나의 문자열이 주어졌을 때, 이 문자열에서 가장 첫 번째 중복되지 않는 문자를 찾아서 인덱스를 반환하라. 만약 중복되지 않는 문자가 존재하지 않는다면, -1를 반환하라. 풀이 방법 문자열을 순회하여 딕셔너리에 문자와 인덱스를 저장한다. 만약 문자가 존재한다면 value 값에 -1을 저장한다. 다시 한번 문자열을 순서대로 순회하여, 딕셔너리의 키에 해당하는 값이 -1이 아니라면, 중복되지 않는 것을 의미하므로 해당 인덱스를 반환한다. func firstUniqChar(_ s: Stri.. 이전 1 2 3 4 5 다음