전체 글

안녕하세요. 사진과 철학에 관심이 많은 웹 프론트엔드 개발자 오원종입니다. 시간이 지나도 꾸준히 읽힐 수 있는 글을 쓰고 싶습니다. 재미있는 일만 하면서 살고 있는 사람입니다.
오늘은 백준 1300번 문제를 풀어 보려고 한다. https://www.acmicpc.net/problem/1300 이 문제는 이분 탐색을 사용하여 푸는 문제이다. 이분 탐색을 알고, 약간의 아이디어만 생각해 낼 수 있으면 풀 수 있는 무난한 난이도의 문제인 것으로 보인다. 이분 탐색은 정렬이 되어 있는 데이터에 대해서 순차적으로 값을 찾는 방법이 아닌 탐색 범위를 절반씩 줄여 나가면서 찾아가는 탐색 알고리즘이다. 해당 범위의 중앙 값을 찾고 찾는 값과 비교하여, 찾는 값보다 중앙 값이 크면 두 범위 중 작은 범위에서 탐색을 이어나가고, 찾는 값보다 중앙 값이 작으면 반대로 큰 범위에서 탐색을 이어 나가는 방법이다. 순차 탐색은 최악의 경우 시간복잡도가 O(N)까지 나타난다. N = 1,000,000,0..
오늘은 작동 위임에 대해서 정리해 보려고 한다. 이 책 Part 1의 마지막 챕터이다. 지난 프로토타입 에 대한 포스팅에서 프로토타입이 어떠한 역할을 하는지에 대해서 자세하게 알아보았다. 한 마디로 요약을 해 보면 [[Prototype]] 체계는 한 객체가 다른 객체를 참조하기 위한 내부 링크이며, 엔진은 이 링크를 따라 연결된 객체에 특정 프로퍼티/메서드가 있는지를 체크한다. 이와 같이 자바스크립트의 무한한 가능성을 이끌어 낼 가장 중요한 핵심 기능이면서 실질적인 체계는 전적으로 '객체를 다른 객체와 연결하는 것'에서 비롯된다. 위임 지향 디자인 [[Prototype]]의 사용방법을 쉽게 이해하기 위해서는 [[Prototype]]이 클래스와 근본적으로 다른 디자인 패턴이라는 사실을 인지해야 하며, 기존..
오늘 설명할 문제는 백준 10422번 문제이다. https://www.acmicpc.net/problem/10422 10422번: 괄호 ‘(‘, ‘)’ 문자로만 이루어진 문자열을 괄호 문자열이라 한다. 올바른 괄호 문자열이란 다음과 같이 정의된다. ()는 올바른 괄호 문자열이다. S가 올바른 괄호 문자열이라면, (S)도 올바른 괄호 문자열이다. S와 T가 올바른 괄호 문자열이라면, 두 문자열을 이어 붙인 ST도 올바른 괄호 문자열이다. (()())()은 올바른 괄호 문자열이지만 (()은 올바른 괄호 문자열이 아니다. 괄호 문자열이 주어졌을 때 올바른 괄호 문자열인지 확인하는 방법은 여러 www.acmicpc.net 이 문제는 동적 프로그래밍을 사용해서 푸는 문제이다. 아이디어를 알고 나면 되게 쉽지만, ..
· 끄적끄적
넷플릭스 오리지널 시리즈 시즌 1을 리뷰해 보려고 한다. 정말 오랜만에 괜찮은 드라마를 본 것 같다는 생각이 든다. 크리스천으로서도 많은 생각을 하게 만드는 드라마였다. 해당 리뷰에는 스포일러가 포함되어 있습니다. 참고해주세요 드라마는 시리아의 수도 다마스쿠스에서 시작한다. 시리아는 현재 내전 중이며, ISIL(이라크 레반트 이슬람 국가)이 장악을 하고 있다. 그리고 이 도시를 공격하기 위한 세력들이 탱크 등으로 무장한 세력들이 들어오게 된다. 여기에서 한 남자가 사람들에게 연설을 하고 있다. 저들은 신의 말씀을 전달하고 있다고 하지만 왜곡하고 있으며, 알라를 노하게 한다는 메시지이다. 그러면서 경전에 "알라께서 정하신 일 외에 우리에게 주어진 것은 없다"고 말한다. 몇몇 사람들은 이 남자의 말에 반대하..
이번에는 실습을 해보는 포스팅을 해 보려고 한다. 참고로 이 실습은 유데미에서 내가 듣고 있는 도커 강의에서 다루었던 실습이다. https://www.udemy.com/course/docker-mastery/ 이 강의에서 도커 컴포즈 파일 관련해서 다루었던 실습을 정리해 보려 한다. 이번 실습의 목표는 Drupal에서 새로운 소프트웨어가 나왔는데 이 새로운 기능들이 제대로 잘 작동하는지 도커로 커스텀 이미지를 빌드해서 테스트를 해보는 것이다. 아주 간단하고 빠르게 말이다. 여기서 도커 컴포즈 파일을 사용해야 한다. 나는 이전 과제에서 drupal 웹사이트를 도커로 띄우는 과제를 하나 했었고, 여기에서 이어서 진행한다. 빈 디렉토리에 Dockerfile을 하나 만든다. 이 도커파일에 대해서 설명을 하면, ..
오늘 설명할 문제는 백준 2109번 순회 강연이다. https://www.acmicpc.net/problem/2109 2109번: 순회강연 문제 한 저명한 학자에게 n(0≤n≤10,000)개의 대학에서 강연 요청을 해 왔다. 각 대학에서는 d(1≤d≤10,000)일 안에 와서 강연을 해 주면 p(1≤p≤10,000)만큼의 강연료를 지불하겠다고 알려왔다. 각 대학에서 제시하는 d와 p값은 서로 다를 수도 있다. 이 학자는 이를 바탕으로, 가장 많은 돈을 벌 수 있도록 순회강연을 하려 한다. 강연의 특성상, 이 학자는 하루에 최대 한 곳에서만 강연을 할 수 있다. 예를 들어 네 대학에서 제시한 www.acmicpc.net 전형적인 그리디 알고리즘 문제로, 이 알고리즘에 대한 이해가 있다면 어렵지 않게 풀 수..
이번주는 크로스핏 박스에 3번 갔다. 원래 오늘(토요일)까지 네 번 가려고 했는데 오늘은 늦잠을 자느라 못 갔다 ㅠㅠ 스쿼시 주 2회 강습까지 받으면서 총 일주일에 운동을 5번씩 하니까 ㅋㅋㅋ 몸이 저절로 좋아지는 것이 느껴진다. 앞으로 두 달 정도 기간동안 내 27년 인생에서 최고의 바디 컨디션을 만들고 입사를 하는 걸 목표로 잡았다! 남들이 보기에 멋있는 몸을 만드는 것도 좋은데, 나는 건강한 몸을 만들고 싶다. 체력적으로도 지치지 않고 부상 쉽게 안 당할 수 있는 그러한 건강한 몸 말이다 ㅎㅎ 이번주에 했던 와드 3개와 배웠던 동작 하나를 이번 포스팅에서 적어본다. 그리고 앞으로 매주 동작 하나와, Fran, Cindy 같은 크로스핏 대표 와드도 매주 하나씩 해볼까 한다. ㅋㅋㅋ 4월 20일 월요일..
지난 포스팅에 이어서 메모리 관리에 대해서 이어서 설명해 보도록 한다. 페이지 테이블 관리 페이지 테이블 관리가 복잡한 이유는 시스템에 여러 개의 프로세스가 존재하고, 프로세스마다 페이지 테이블이 하나씩 있기 때문이다. 메모리 관리자는 특정 프로세스가 실행될 때 마다 해당 페이지 테이블을 참조하여 가상 주소를 물리 주소로 변환하는 작업을 반복한다. 페이지 테이블은 메모리 관리자가 자주 사용하는 자료 구조이므로 필요시 빨리 접근할 수 있어야 한다. 따라서 페이지 테이블은 물리 메모리 영역 중 운영체제 영역의 일부에 모아놓는다. 페이지 테이블의 수가 늘어나거나 페이지 테이블의 크기가 늘어나면 운영체제 영역이 그만큼 늘어나 사용자 영역이 줄어든다. 물리 메모리의 크기가 작을 때는 프로세스만 스왑 영역으로 옮겨..
DevOwen
오웬의 개발 이야기