전체 글 50

(간단한 코드)리트코드 704. Binary Search

이 문제는 리스트 안에 특정 값을 찾는 문제이고, 답은 생각보다 훨씬 쉽게 찾을 수 있지만, 문제는 binary search 방법으로 해답을 찾는 것을 요구한다. 여기서 "바이너리 서치"란 무엇일까?이런 그림을 많이들 봤을 것이다. 이를 binary tree라고 하며, 항상 "두 가지 선택지에서 하나를 택한다"라는 조건이 있는 상황을 의미한다. (참고로 binary는 0과 1로 판단을 내리는 컴퓨터공학에서 나온 용어이다) 이 구조의 특징은 다음과 같다.여기 나오는 빨간색 점이, 백화점이나 지하철 같은 곳에서 지도를 볼 때, "현 위치"를 나타낸다고 하자. 해당 그림은 1번을 택해서 왼쪽을 가는 그림을 나타낸다.그렇다면, 현 위치가 당연히 바뀔 것이고, 이에 따라 선택하지 않았던 오른쪽은 영원히 볼 수 없..

(간단한 코드)리트코드 141. Linked List Cycle

이번 문제는 연결 리스트에 "싸이클"이 존재하는지 판단하는 문제이다. 여기서 사용하는 방법은 two pointer과 유사한 방법으로 할 것인데, 한칸씩 뒤로 가는 slow와 두칸씩 뒤로가는 fast를 의미한다. 코드는 다음과 같다. # Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def hasCycle(self, head: Optional[ListNode]) -> bool: slow = fast = head while fast and f..

(간단한 코드)리트코드 21. Merge Two Sorted Lists

두개의 연결리스트를 크기 순서대로 연결하는 문제이다.  이 문제는 다음과 같은 단계로 값을 찾아 나갈 것이다. 연결 리스트 문제를 풀다보면, 정말로 자주 나오는 변수 dummy가 있다.dummy는 가짜의, 모조품 이라고 생각을 하면 되는데(바보라는 뜻도 있다)연결 리스트는 다음 원소를 찾는 과정에서 엉뚱한 곳으로 가는 경향이 있어서, 항상 우리가 반환 하고자 하는 첫번째 부분의 주소를 저장하기 위해서 dummy를 사용한다. 우선 코드를 보면 다음과 같다. (정답이 아니라 이해를 하고 싶다면, 코드보다는 설명을 먼저 보는 것을 권장한다)# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):..