본문 바로가기

분류 전체보기

(433)
해외 한인 커뮤니티 웹 사이트 2018.06~2018.07, with 팀원 3명 개요 2018 멋쟁이 사자처럼 해커톤에 나가면서 출품했던 프로젝트이다. 주제는 해외 한인들의 커뮤니티 사이트를 만드는 것이었다. 기본적인 커뮤니티로써의 기능들을 담고자 했다. 포함한 기능은 크게 2 가지이다. 회원 기능 : 기본적인 회원관리, 프로필, 쪽지 주고 받기, 알람 기능 등 게시글 기능 : 카테고리별 게시글, 이미지 업로드, WYSIWYG 에디터, 실시간 인기게시글, 게시글 검색, 실시간 검색어, 댓글과 대댓글, 좋아요와 싫어요 등 구현 백엔드(Ruby On Rails, AWS 서비스) : 윤신O, 이시O 프론트엔드(HTML, CSS, JavaScript) : 김정O, 홍연O 나는 기본적인 백엔드 기능의 전반을 팀원과 같이 맡았다. 카테고리별 게..
우선순위 큐(Priority Queue) / 힙(Heap) 우선순위 큐(Priority Queue) 우선순위 큐는 말 그대로 Queue 중에서도 특별한 Queue이다. 우선순위를 가지는 큐로써, 가장 우선순위가 높은 자료가 가장 먼저 출력되는 구조를 지닌다. 아래처럼, 완전히 정렬된 형태는 아니지만 출력은 언제나 우선순위가 가장 높은 자료형이 반환된다. 따라서, 출력될 때 우선순위가 가장 높은 자료가 나올 수 있도록 삽입, 삭제가 이루어져야 한다. 삽입과 삭제의 연산에서 많은 연산들이 소모되어서 비효율적으로 보일 수 있지만 언제나 우선순위가 높은 자료형을 O(1)로 꺼낼 수 있기에 이러한 자료형이 필요시 될 때도 있다. 구현 방법에는 다양한 방법이 있지만 Heap을 통해서 우선순위 큐를 구현하는 것이 가장 이상적이다. 아래의 두가지를 만족하는 자료형을 Heap이..
스택(Stack)과 큐(Queue), 순환 큐(Circular Queue) 스택(Stack) 스택(Stack)은 LIFO(Last In First Out)을 표현하는 대표적인 선형 자료구조 이다. 나중에 입력한 값이 먼저 출력되는 구조이다. 그래서 일반적인 스택은 top이라는 하나의 공간을 통해 입출력이 일어난다. 배열을 통해서 많이 표현하는데 아래와 같이 표현할 수 있다. 위와 같이 top이라는 하나의 공간을 통해 값을 입력, 출력한다. 삽입은 top이 가르키는 공간의 다음 공간으로 이동하여 삽입한다. 삭제는 top이 가르키는 공간의 자료를 꺼낸뒤 top은 이전 공간으로 이동한다. top이 -1일 경우 STACK은 비어있는 상태이다. top이 배열의 마지막 공간을 가르키고 있을 경우 STACK은 가득찬 상태이다. 스택(Stack) 구현 #include #define MAX_S..
제목을 짓자(2020.10.31) 제목을 갑자기 왜 짓게 됐냐면..별일없는 내이야기_xxxxxxxx로 다 지어놓으니까 구분이 잘 안된다...그리고 제목 짓는 재미도 있을 거 같아서 앞으로 일상 이야기에 제목을 지어볼까 한다. 약 한달 정도만에 다시 쓰게 됐는데 그동안 많은 일들도 있었고 그래서 조금 여유가 있어져서 한 번 써본다! 생존신고원래 주변에 연락을 적극적으로 하는 편은 아니다(그래서, 늘 욕을 많이 먹는다. 연락좀 하라고).근데, 이게 참 고치기 쉽지 않다. 잠도 많은 편이고, 나중에 해야지 하면서, 다른 일들을 하다보면 또 까먹고, 아 내일 해야지 하다가 또 까먹고... 그렇게 아 다음에 해야겠다 하고 잊는다. 연락을 해준 친구들에게는 참 못된 생각이다. 그래서 최근에 고치려고 나름(정말..) 노력을 하는 중이다. 여튼 연락 ..
프로그래머스 - 이중우선순위 큐(Java, LV3) https://programmers.co.kr/learn/courses/30/lessons/42628?language=java 코딩테스트 연습 - 이중우선순위큐 programmers.co.kr 풀이 우선순위큐(heap)을 오름차순, 내림차순(Collections.reverseOrder()) 기준으로 하나씩 만든다 삽입의 경우 두 heap에 각각 넣어준다 최대값 삭제의 경우 내림차순 우선순위큐에서 최대값을 찾아서 두 heap에 remove 한다 최소값 삭제의 경우 오름차순 우선순위큐에서 최솟값을 찾아서 두 heap에 remove 한다 결과값을 출력하는데 heap이 empty가 아닐 경우에만 값을 넣어 출력한다 import java.util.*; class Solution { public int[] solu..
프로그래머스 - 디스크 컨트롤러(Java, LV3) / Heap https://programmers.co.kr/learn/courses/30/lessons/42627?language=java 코딩테스트 연습 - 디스크 컨트롤러 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를 programmers.co.kr 풀이 Job 들에 대해서 시간이 빠른순으로 정렬(같을 경우 짧은 시간 순) Job 들을 작업시간이 짧은 순으로 우선순위 큐에 보관한다 현재 시간(t) 기준으로 작업수행이 가능한 Job들을 우선순위 큐에 넣고 반복문을 통해서 하나씩 꺼내서 수행한다 수행한 뒤 다시 현재 시간을 경과된 작업시간만큼 더해주고 다시 작업수행이 가능한 Job..
프로그래머스 - 카카오프렌즈 컬러링북(Java, 2017카카오) https://programmers.co.kr/learn/courses/30/lessons/1829?language=java 코딩테스트 연습 - 카카오프렌즈 컬러링북 6 4 [[1, 1, 1, 0], [1, 2, 2, 0], [1, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 3], [0, 0, 0, 3]] [4, 5] programmers.co.kr 풀이 전체 그래프에서 탐색할 영역 중 영역 0(배경색)을 제외한다 그래프 중 방문하지 않은 곳을 찾아서 그곳을 시작점으로 같은 색으로만 DFS 탐색을 한다. DFS 탐색을 하면서 영역의 수를 count하고, count한 영역이 최대영역 크기보다 크면 갱신한다. DFS 가 끝나면 전체 그래프 중에서 다시 탐색하지 않은 곳을 찾아서 DFS 탐색..
프로그래머스 - 소수 찾기(파이썬, LV2, 완전탐색) https://programmers.co.kr/learn/courses/30/lessons/42839?language=python3# 코딩테스트 연습 - 소수 찾기 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 programmers.co.kr 풀이 파이썬의 itertools의 permutation을 통해서 쉽게 구현이 가능했다. 먼저 모든 순열을 다 고려하는데, 만들어진 순열 String을 Integer로 변경하고 해당 Integer가 소수 Prime 인지 체크해서 개수를 카운트해주면 된다. 이 때, 중복 값 방지를 위해 개수 카운트 시 집합을 활용한다...