-
백준 2110번 공유기 설치 :: 마이구미알고리즘 풀이/이진 탐색 2018. 3. 16. 20:24
이 글은 백준 알고리즘 2110번 "공유기 설치" 를 풀이한다.풀이 방법으로는 이분(이진) 탐색을 사용한다.문제 링크 - https://www.acmicpc.net/problem/2110이분 탐색 - http://mygumi.tistory.com/72 도현이의 집 N개가 수직선 위에 있다. 각각의 집의 좌표는 x1, ..., xN이고, 집 여러개가 같은 좌표를 가지는 일은 없다.도현이는 언제 어디서나 와이파이를 즐기기 위해서 집에 공유기 C개를 설치하려고 한다. 최대한 많은 곳에서 와이파이를 사용하려고 하기 때문에, 한 집에는 공유기를 하나만 설치할 수 있고, 가장 인접한 두 공유기 사이의 거리를 가능한 크게 하여 설치하려고 한다.C개의 공유기를 N개의 집에 적당히 설치해서, 가장 인접한 두 공유기 사이..
-
캐시된 파일은 서버에 요청하지 않는가? :: 마이구미HTTP 2018. 3. 14. 17:39
제목 그대로 캐시(Cache) 에 대한 관한 글이다.그 외에도 본인이 작성한 캐시를 주제로 하는 글들이 존재한다.먼저 읽는다면, 좋을 것이다.메모리 캐시 vs 디스크 캐시캐시 제어 응답 헤더 설정 본인이 의문은 다음과 같았다.누군가에게는 너무나 당연한 내용일 수도 있다.(부끄럽지만 서버쪽 지식이 부족해서 의문이 생긴 거라고 볼 수 있다.) 클라이언트가 서버에게 보내는 요청에 대한 응답이 캐시되었다면, 다음에는 서버에 요청없이 브라우저 자체에서 처리하는가? 위와 같은 예는 다음과 같다. 개발자 도구를 통해 확인할 수 있듯이, 위와 같은 경우는 메모리 캐시 또는 디스크 캐시로부터 가져온다.이와 같은 경우에서 서버에 요청 여부에 대한 의문이다. 캐시를 활용하기 때문에, 서버에 요청할 이유가 없다.그렇다는건, ..
-
History API in HTML5 :: 마이구미HTML, CSS 2018. 3. 8. 21:11
이 글은 HTML5 에서 지원하는 History API 에 대해 다룬다.일반적으로 History API 는 SPA 와 관련된 기술이다.참고 링크 - http://w3c.github.io/html/browsers.html#session-history-and-navigation vue-router, react-router 등과 같은 라우터 모듈은 쉽고 편하게 SPA 구축을 위해 사용되고 있다.이러한 모듈은 사실 내부적으로 대단한 기술이 아닌, History API 를 기반으로 구현되었다.History API 는 HTML5에서 새롭게 지원되었다. History API 를 위해서는 세션 히스토리(Session History) 개념을 이해하는 것이 좋다.세션 히스토리 개념을 위해 간단하게 브라우저 로딩부터 설명하..
-
백준 1244번 스위치 켜고 끄기 :: 마이구미알고리즘 풀이/수학 2018. 3. 6. 19:59
이 글은 백준 알고리즘 문제 1244번 "스위치 켜고 끄기" 를 풀이한다.정올 초등부에서 출제된 문제로써, 단순 문제 이해를 통한 구현이다.문제 링크 - https://www.acmicpc.net/problem/1244 1부터 연속적으로 번호가 붙어있는 스위치들이 있다. 스위치는 켜져 있거나 꺼져있는 상태이다. 에 스위치 8개의 상태가 표시되어 있다. ‘1’은 스위치가 켜져 있음을, ‘0’은 꺼져 있음을 나타낸다. 그리고 학생 몇 명을 뽑아서, 학생들에게 1 이상이고 스위치 개수 이하인 자연수를 하나씩 나누어주었다. 학생들은 자신의 성별과 받은 수에 따라 아래와 같은 방식으로 스위치를 조작하게 된다.스위치 번호 ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ 스위치 상태 0 1 0 1 0 0 0 1 남학생은 스위치 번호가 ..
-
백준 1236번 성 지키기 :: 마이구미알고리즘 풀이/수학 2018. 3. 6. 00:36
이 글은 백준 알고리즘 1236번 "성 지키기" 를 풀이한다.접근 방식은 단순 문제 이해를 통한 수학적 접근이다.문제 링크 - https://www.acmicpc.net/problem/1236 영식이는 직사각형 모양의 성을 가지고 있다. 성의 1층은 몇 명의 경비원에 의해서 보호되고 있다. 영식이는 모든 행과 모든 열에 한 명 이상의 경비원이 있으면 좋겠다고 생각했다.성의 크기와 경비원이 어디있는지 주어졌을 때, 몇 명의 경비원을 최소로 추가해야 영식이를 만족시키는지 구하는 프로그램을 작성하시오. 본인은 행과 열을 기준으로 무언가를 한다고 했을 때, DFS 또는 BFS 를 생각한다.이 문제의 경우에도 그렇게 생각했다.하지만 N의 크기 때문에 다소 무리가 있어, 다른 접근을 생각했다. 문제의 핵심은 모든 ..
-
효과적인 이미지 로딩 구현 방식 :: 마이구미HTML, CSS 2018. 3. 5. 00:19
이 글은 이미지 로딩에 관한 방법들을 알아본다.로딩 이미지는 요청의 처리에 대한 응답이 완료되기전까지의 지연 시간을 위해 사용된다.즉, 이미지 로딩은 이미지 다운로드로 인해 지연되는 시간으로 인한 대안을 나타낸다.참고 링크 - https://jmperezperez.com/medium-image-progressive-loading-placeholder/ 현재 이미지 로딩을 위한 많은 방식이 존재한다.크게 3가지로 분류하면 다음과 같다. Lazy LoadingPlaceholderTailored image sizes Blur up Lazy Loading 은 지연 로딩으로 불리는 방식이다.사진첩과 같은 한번에 많은 수의 이미지를 보여주는 곳에서 많이 사용된다.예를 들어, 사진첩 페이지에 접속하면 바로 모든 이미..
-
오픈 프로젝트 기여하기 :: 마이구미GitHub 2018. 2. 27. 14:39
이 글은 Github의 오픈 프로젝트에 기여하는 법을 다룬다.오픈 프로젝트란, Github 에 존재하는 private이 아닌 대부분의 저장소로 볼 수도 있다.결과적으로 Github 에서의 컨트리뷰터(contributor), 포크(fork) 의 용어를 이해하는데 도움이 된다. 오픈 프로젝트에 기여하게 된다면, 그 프로젝트의 컨트리뷰터가 된다.컨트리뷰터는 오픈 프로젝트에 기여한 사람을 뜻한다. 기여의 기준은 없다.주석을 쓰거나 오타를 수정하거나 버그를 해결하거나 똑같다.오타 하나를 발견했더라도, 기여한 것이기 때문에 컨트리뷰터가 될 수 있다. 어떻게 기여할 수 있는가? 우선 순수하게 접근하는 방식이다. 관심있는 프로젝트의 저장소인 John 저장소를 내려받았다.사용하다보니 버그를 발견했다.버그를 수정한 후, ..
-
Line Sweep 알고리즘 :: 마이구미알고리즘 2018. 2. 11. 19:09
이 글은 Line Sweep 알고리즘을 다룬다.Line Sweep, Sweep Line, 라인 스위핑 등과 같이 불려진다.일반적으로 가장 가까운 두 점을 찾는 문제에서 출발한다.다음 링크의 문제 풀이를 통하여 알고리즘을 설명할 것이다.( 백준 2261번 "가장 가까운 두 점" )참고 - https://www.acmicpc.net/blog/view/25 수 많은 점들 중에서 가장 가까운 두 점을 찾는 문제가 존재한다.이러한 문제의 시나리오는 다음과 같다. See the Pen line sweeping by leejunghyun (@mygumi) on CodePen. 순수한 접근으로 점들 중에서 가장 가까운 두 점을 찾는 방법은 간단하다.모든 점들을 확인하면 된다.하지만 이러한 경우 시간복잡도는 O(N^2)..