전체 글

전체 글

    [JavaScript] 클래스와 오브젝트의 차이점, 객체지향 언어 클래스 정리 (6)

    class 붕어빵을 만들 수 있는 틀, class로 찍어낸 것이 object입니다. es6 이전에는 class가 없었기 때문에 바로 object를 생성했습니다. 1. Class declaration 클래스를 다음과 같이 선언할 수 있습니다. class Person { // constructor constructor(name, age) { // fields this.name = name; this.age = age; } // methods speak() { console.log(`${this.name}: hello!`); } } Person이라는 클래스를 만들고 construtor 생성자를 이용해서 오브젝트를 만들 때 필요한 데이터를 전달합니다. 전달받은 데이터를 이 클래스에 존재하는 두가지 fields에..

    [알고리즘 3주차] WIL - 힙, 정렬(버블, 선택, 삽입, 퀵, 머지, 힙)

    Heap 완전이진트리로서 부모노드가 자식노드보다 크거나 작은 순서로 정렬되어있는 자료구조를 말합니다. 부모노드가 자식노드보다 작으면 최소힙이라고 부르고, 크면 최대힙이라고 부릅니다. 여기서 완전이진트리란 트리의 왼쪽부터 봤을 때 노드가 비어있지 않은 구조를 말합니다. 힙은 배열로 표현이 가능한데 루트노드를 1인 인덱스로 가정합니다. 루트노드를 중심으로 왼쪽 자식노드는 2 * 부모인덱스, 오른쪽 자식노드는 (2 * 부모인덱스) + 1 가 됩니다. 힙의 삽입 및 삭제에 대해서 알아보겠습니다. 최소힙을 기준으로 알아보겠습니다. 맨 위 루트 노드는 모든 노드중 가장 작은 노드가 될 것입니다. 삽입 이 트리에 어떠한 값을 append합니다. 그리고 부모노드와 비교해 가면서 자신의 자리를 찾아갑니다. 삭제 삭제는 ..

    [23일차] TIL 이진 탐색(Binary Search) - (1)

    이진탐색이란 정렬되어있는 배열에서 절반씩 줄여가며 탐색하는 기법입니다. 정렬되어있다는 전제가 필요하며 수행했을 시 1억 개 목록을 탐색한다면 27번 안에 찾을 수 있다. 직접 구현하는 방법도 있지만, 파이썬 내장함수인 bisect_left 를 사용해도 됩니다. bisect_right도 있지만 가장 많이 사용되는 것이 bisect_left 입니다. bisect_left는 target값의 index를 반환하는 반면 bisect_right는 index + 1값을 반환하게 됩니다. 따라서 특별한 경우가 아니라면 bisect_left를 가장 많이 사용하게 될것입니다. 1. leetcode 704 https://leetcode.com/problems/binary-search/ leetcode 704번 문제입니다. ..

    [22일차] TIL - Week3 Test

    1. H-Index https://programmers.co.kr/learn/courses/30/lessons/42747 처음에 대부분의 테스트를 통과하지 못했었는데 문제를 잘못 이해하고 있었습니다. h의 값이 반드시 citations배열에 존재 하지 않아도 된다는 것을 간과했습니다. 다음은 정답 판정 받은 풀이입니다. def solution(citations): answer = 0 citations.sort(reverse=True) lst = [i for i in range(max(citations))] lst.sort(reverse=True) for h in lst: lg = 0 sm = 0 for num in citations: if h = h: answer = h break return answe..

    [알고리즘] 백준 1012 파이썬 풀이

    유기농 배추 흔하게 보이는 문제 패턴입니다. 1은 배추가 있는 장소이고 배추가 붙어있다면 배추흰지렁이는 한마리가 필요합니다. 결국, 배추 무더기의 개수를 묻는 문제입니다. 처음 다음과 같이 풀이했습니다. t = int(input()) for _ in range(t): count = 0 m, n, k = map(int, input().split()) graph = [[0] * n for _ in range(m)] for _ in range(k): x, y = map(int, input().split()) graph[x][y] = 1 dx = [-1, 0, 1, 0] dy = [0, 1, 0, -1] def dfs(x, y): if x = m or y >= n or grap..