<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>이인상</title>
  <link rel="alternate" type="text/html" href="https://www.fishingproductfr.com/@@2V5J" />
  <author>
    <name>siwocj</name>
  </author>
  <subtitle>대학에서 컴퓨터 소프트웨어를 전공 , 정보보안 석사를 했습니다. 모바일 개발을 했고 , SI 프로젝트 에서 개발 , 관리 업무를 15년 이상 하면서 기록했던 이야기를 남겨보려합니다</subtitle>
  <id>https://brunch.co.kr/@@2V5J</id>
  <updated>2017-01-18T11:47:42Z</updated>
  <entry>
    <title>웹과 인터넷은 다르다, 첫 출근 날 받은 질문 - 을지로 4층 작은 사무실에서 시작된 이야기</title>
    <link rel="alternate" type="text/html" href="https://www.fishingproductfr.com/@@2V5J/22" />
    <id>https://brunch.co.kr/@@2V5J/22</id>
    <updated>2026-10-11T00:41:24Z</updated>
    <published>2026-10-11T00:41:24Z</published>
    <summary type="html">2013년 10월, 을지로 인쇄 골목 위 4층. 계단을 오를 때마다 잉크 냄새가 따라왔다. 웹 에이전시 '빈칸'은 직원이 다섯 명이었다. 나는 여섯 번째였다. 전공은 국문학, 경력은 블로그 스킨을 몇 번 고쳐 본 것이 전부였다. 첫날, 노 팀장이 커피를 내밀며 물었다. &amp;quot;서하 씨, 웹이랑 인터넷이 같은 거예요?&amp;quot; 나는 웃었다. 당연히 같은 거 아닌가. 네이</summary>
  </entry>
  <entry>
    <title>문자열 매칭, 찾기의 기술 - Ctrl+F가 1초 만에 끝나는 이유</title>
    <link rel="alternate" type="text/html" href="https://www.fishingproductfr.com/@@2V5J/20" />
    <id>https://brunch.co.kr/@@2V5J/20</id>
    <updated>2026-10-11T00:41:02Z</updated>
    <published>2026-10-11T00:41:02Z</published>
    <summary type="html">300쪽짜리 계약서 파일에서 '위약금'이라는 단어를 찾는다. Ctrl+F를 누르고 단어를 입력하자마자 노란 표시가 뜬다. 당연하게 여기는 이 기능 뒤에는 수십 년 동안 다듬어진 알고리즘들이 있다. 문서가 길어질수록, 찾는 단어가 길어질수록, 순진한 방법과 똑똑한 방법의 차이가 커진다. 이번 화는 이미 본 것을 버리지 않는 찾기의 기술 이야기다. 순진한 방법</summary>
  </entry>
  <entry>
    <title>최단경로, 지도 앱의 속마음 - 내비게이션은 어떻게 가장 빠른 길을 찾는가</title>
    <link rel="alternate" type="text/html" href="https://www.fishingproductfr.com/@@2V5J/19" />
    <id>https://brunch.co.kr/@@2V5J/19</id>
    <updated>2026-10-05T10:48:01Z</updated>
    <published>2026-10-05T10:48:01Z</published>
    <summary type="html">토요일 아침, 지도 앱에 목적지를 입력한다. 1초도 안 돼 경로가 뜬다. &amp;quot;이 길이 가장 빠릅니다.&amp;quot; 수많은 교차로와 도로 가운데 앱은 어떻게 그 길을 골랐을까? 모든 경로를 다 따져 보았을 리는 없다. 경로의 수는 교차로 수에 따라 폭발적으로 늘어나니까. 답은 13화에서 본 관계에 있다. 서울에서 부산까지의 최단 경로가 대전을 지난다면, 그중 서울에서 대</summary>
  </entry>
  <entry>
    <title>최소신장트리, 가장 싸게 잇기 - 모든 마을을 가장 적은 비용으로 잇는 법, 그리고 순서 정하기</title>
    <link rel="alternate" type="text/html" href="https://www.fishingproductfr.com/@@2V5J/18" />
    <id>https://brunch.co.kr/@@2V5J/18</id>
    <updated>2026-10-05T02:34:27Z</updated>
    <published>2026-10-05T02:34:27Z</published>
    <summary type="html">섬마을 네 곳에 인터넷 케이블을 깔아야 한다. 어느 두 마을 사이에 케이블을 까느냐에 따라 비용이 다르다. 목표는 두 가지다. 모든 마을이 연결될 것, 그리고 비용이 가장 적을 것. 모든 마을 사이에 다 깔 필요는 없다. A와 B가 이어져 있고 B와 C가 이어져 있으면, A와 C는 B를 거쳐 통한다. 쓸데없이 빙 도는 고리(사이클)는 돈 낭비다. 사이클 없</summary>
  </entry>
  <entry>
    <title>그래프, 관계를 그리는 법 - 점과 선으로 세상을 옮기는 법</title>
    <link rel="alternate" type="text/html" href="https://www.fishingproductfr.com/@@2V5J/17" />
    <id>https://brunch.co.kr/@@2V5J/17</id>
    <updated>2026-10-04T17:21:17Z</updated>
    <published>2026-10-04T17:21:17Z</published>
    <summary type="html">친구 관계를 종이에 그려 보자. 사람마다 점을 하나 찍고, 친구끼리 선을 긋는다. 몇 분 만에 종이가 거미줄처럼 된다. 그리고 신기한 것들이 보이기 시작한다. 모두와 연결된 마당발, 두 무리를 잇는 단 한 사람, 아무와도 연결되지 않은 외톨이. 점과 선으로 이루어진 이 그림을 수학에서는 그래프라고 부른다. 막대그래프의 그 그래프가 아니다. 관계 그 자체를</summary>
  </entry>
  <entry>
    <title>DP 응용, 길&amp;middot;조약돌&amp;middot;문자열 - 표 하나로 푸는 네 가지 문제</title>
    <link rel="alternate" type="text/html" href="https://www.fishingproductfr.com/@@2V5J/16" />
    <id>https://brunch.co.kr/@@2V5J/16</id>
    <updated>2026-10-03T12:00:06Z</updated>
    <published>2026-10-03T12:00:06Z</published>
    <summary type="html">지난 화에서 동적 프로그래밍의 요령을 배웠다. 관계식을 세우고, 표에 적으며 푼다. 말은 쉽지만 실제 문제 앞에 서면 막막하다. &amp;quot;관계식을 어떻게 세우지?&amp;quot; 이번 화는 그 감각을 익히는 연습장이다. 네 문제를 차례로 풀면서, 매번 같은 질문을 던진다.  마지막 한 걸음은 어디서 왔는가? 이 질문 하나로 네 문제가 모두 풀린다. 문제 1 &amp;mdash; 행렬 경로: 가장</summary>
  </entry>
  <entry>
    <title>동적 프로그래밍, 기억하는 재귀 - 같은 계산을 두 번 하지 않는 법</title>
    <link rel="alternate" type="text/html" href="https://www.fishingproductfr.com/@@2V5J/15" />
    <id>https://brunch.co.kr/@@2V5J/15</id>
    <updated>2026-10-03T10:00:08Z</updated>
    <published>2026-10-03T10:00:08Z</published>
    <summary type="html">초등학생에게 묻는다. &amp;quot;1+1+1+1+1+1+1+1은?&amp;quot; 아이가 손가락으로 세어 8이라고 답한다. 이번에는 그 뒤에 &amp;quot;+1&amp;quot;을 하나 더 붙여 묻는다. 아이는 곧바로 9라고 답한다. 처음부터 다시 세지 않는다. 아까 답을 기억하기 때문이다. 당연해 보이는 이 요령을 알고리즘으로 정리한 것이 동적 프로그래밍이다. 그리고 이 당연한 요령을 빠뜨리면 컴퓨터는 수백</summary>
  </entry>
  <entry>
    <title>상호배타적 집합, 우리는 한 편인가 - 무리 짓기를 거의 상수 시간에 하는 법</title>
    <link rel="alternate" type="text/html" href="https://www.fishingproductfr.com/@@2V5J/14" />
    <id>https://brunch.co.kr/@@2V5J/14</id>
    <updated>2026-10-03T04:00:07Z</updated>
    <published>2026-10-03T04:00:07Z</published>
    <summary type="html">회사 체육대회 날이다. 처음에는 모두가 혼자다. 사회자가 외친다. &amp;quot;김 대리와 박 주임, 같은 팀!&amp;quot; &amp;quot;박 주임 팀과 이 과장 팀, 합칩니다!&amp;quot; 이렇게 팀이 계속 합쳐지는 와중에, 누군가 묻는다. &amp;quot;그래서 최 사원이랑 정 부장은 같은 팀이에요?&amp;quot; 대답하려면 두 사람이 같은 무리에 속하는지 빨리 알아야 한다. 참가자가 수백만 명이고, 합치기와 질문이 수백만</summary>
  </entry>
  <entry>
    <title>해시 테이블, 검색의 극단 - 비교하지 않고 한 번에 찾아가는 법</title>
    <link rel="alternate" type="text/html" href="https://www.fishingproductfr.com/@@2V5J/13" />
    <id>https://brunch.co.kr/@@2V5J/13</id>
    <updated>2026-10-02T22:13:43Z</updated>
    <published>2026-10-02T22:13:43Z</published>
    <summary type="html">아파트 택배 보관함 앞에 섰다. 내 택배를 찾으려고 보관함을 하나씩 열어 보는 사람은 없다. 문자로 받은 보관함 번호로 곧장 간다. 지금까지 우리가 본 검색은 모두 비교였다. 가운데와 비교해서 왼쪽 또는 오른쪽으로 갔다. 아무리 빨라도 log n번은 비교해야 했다. 그런데 택배 보관함처럼, 찾는 값에서 곧장 자리를 계산할 수 있다면? 비교 없이 한 번에 간</summary>
  </entry>
  <entry>
    <title>B-트리, 디스크를 위한 나무 - 데이터가 메모리에 다 들어가지 않을 때</title>
    <link rel="alternate" type="text/html" href="https://www.fishingproductfr.com/@@2V5J/12" />
    <id>https://brunch.co.kr/@@2V5J/12</id>
    <updated>2026-10-02T15:53:45Z</updated>
    <published>2026-10-02T15:53:45Z</published>
    <summary type="html">주방에서 요리를 한다고 해 보자. 조리대 위의 양념은 손만 뻗으면 된다. 창고에 있는 양념은 가서 문을 열고 찾아서 가져와야 한다. 컴퓨터도 같다. 메모리는 조리대, 디스크는 창고다. 그리고 그 차이가 어마어마하다. 전통적인 하드디스크에서 한 번 읽어 오는 시간이면 메모리에서는 수만~수십만 번의 일을 할 수 있다. 그래서 창고에 갈 때는 요령이 필요하다.</summary>
  </entry>
  <entry>
    <title>이진검색트리, 균형이 전부다 - 찾기 쉬운 나무를 기르는 법</title>
    <link rel="alternate" type="text/html" href="https://www.fishingproductfr.com/@@2V5J/11" />
    <id>https://brunch.co.kr/@@2V5J/11</id>
    <updated>2026-10-02T15:51:43Z</updated>
    <published>2026-10-02T15:51:43Z</published>
    <summary type="html">도서관에 새 책이 하루에도 수십 권씩 들어온다. 사서는 고민이다. 책을 번호순으로 빽빽하게 꽂아 두면 찾기는 쉽다. 가운데를 보고 절반을 버리면 된다(1화의 이진 탐색). 그런데 새 책이 들어올 때마다 뒤쪽 책을 전부 한 칸씩 밀어야 한다. 책장이 1만 칸이면 매번 수천 권을 옮겨야 한다. 반대로 들어온 순서대로 아무 데나 꽂으면 넣기는 쉽지만 찾기가 지옥</summary>
  </entry>
  <entry>
    <title>선택 알고리즘, 줄 세우지 않고 등수 찾기 - 전부 정렬하지 않고 중간값을 찾는 법</title>
    <link rel="alternate" type="text/html" href="https://www.fishingproductfr.com/@@2V5J/10" />
    <id>https://brunch.co.kr/@@2V5J/10</id>
    <updated>2026-10-02T07:35:58Z</updated>
    <published>2026-10-02T07:35:58Z</published>
    <summary type="html">마라톤 대회가 끝났다. 참가자 1만 명의 기록이 뒤죽박죽 쌓여 있다. 주최 측이 알고 싶은 것은 딱 하나, 정확히 가운데 기록이다. 다음 대회 코스 난이도를 정하려고 한다. 가장 쉬운 방법은 1만 명을 전부 기록순으로 정렬한 뒤 5,000번째를 보는 것이다. 틀린 방법은 아니지만 뭔가 아깝다. 1등과 2등의 순서, 9,998등과 9,999등의 순서까지 다</summary>
  </entry>
  <entry>
    <title>정렬의 벽, 비교로는 n log n - 넘을 수 없는 한계와 그 벽을 돌아가는 법</title>
    <link rel="alternate" type="text/html" href="https://www.fishingproductfr.com/@@2V5J/9" />
    <id>https://brunch.co.kr/@@2V5J/9</id>
    <updated>2026-10-01T12:54:03Z</updated>
    <published>2026-10-01T12:54:03Z</published>
    <summary type="html">스무고개를 해 본 적이 있을 것이다. &amp;quot;예, 아니오&amp;quot;로만 답하는 질문을 스무 번 해서 상대가 생각한 것을 맞히는 놀이다. 질문 하나에 가능성이 절반씩 줄어든다면, 스무 번이면 약 100만 가지 중 하나를 맞힐 수 있다. 반대로 말하면, 가능성이 100만 가지인데 스무 번보다 적게 물어서 맞힐 방법은 없다. 정렬에도 똑같은 스무고개가 숨어 있다. 그리고 이</summary>
  </entry>
  <entry>
    <title>병합과 퀵, 나누어 이기다 - n&amp;sup2;의 벽을 넘는 두 가지 발상</title>
    <link rel="alternate" type="text/html" href="https://www.fishingproductfr.com/@@2V5J/8" />
    <id>https://brunch.co.kr/@@2V5J/8</id>
    <updated>2026-10-11T00:41:48Z</updated>
    <published>2026-09-30T23:29:42Z</published>
    <summary type="html">학교에서 전교생 1,000명을 키 순서로 세워야 한다. 선생님 혼자 한 명씩 비교하면 해가 진다. 현명한 선생님은 이렇게 한다. &amp;quot;각 반끼리 먼저 키 순서로 서세요.&amp;quot; 그다음 두 반씩 합치며 줄을 맞춘다. 또는 이렇게 한다. &amp;quot;170cm보다 작은 사람은 왼쪽, 큰 사람은 오른쪽으로.&amp;quot; 그리고 각 무리 안에서 다시 같은 일을 한다. 첫 번째가 병합 정렬, 두</summary>
  </entry>
  <entry>
    <title>남들은 모두 바이브 코딩을 하는데, 나는 왜? - 나는 왜 알고리즘과 파이썬을 이야기하려 하는가</title>
    <link rel="alternate" type="text/html" href="https://www.fishingproductfr.com/@@2V5J/7" />
    <id>https://brunch.co.kr/@@2V5J/7</id>
    <updated>2026-10-11T00:37:30Z</updated>
    <published>2026-09-30T23:16:39Z</published>
    <summary type="html">요즘 개발 이야기를 하다 보면 조금 재미있는 장면을 자주 마주하게 된다. 예전에는 개발자가 되려면 프로그래밍 언어를 공부하고, 자료구조와 알고리즘을 배우고, 운영체제나 네트워크 같은 컴퓨터의 기본 원리를 이해해야 한다고 했다. 그런데 지금은 조금 달라졌다. &amp;quot;무엇을 만들고 싶은데요?&amp;quot; 라고 AI에게 설명하면 된다. 그러면 AI가 코드를 만들어준다. 에러가</summary>
  </entry>
  <entry>
    <title>재귀, 거울 속의 거울 - 자기 자신을 부르는 함수를 믿는 법</title>
    <link rel="alternate" type="text/html" href="https://www.fishingproductfr.com/@@2V5J/5" />
    <id>https://brunch.co.kr/@@2V5J/5</id>
    <updated>2026-10-11T00:36:59Z</updated>
    <published>2026-09-29T15:36:05Z</published>
    <summary type="html">이발소 양쪽 벽에 거울이 마주 보고 걸려 있다. 거울 속에 거울이 있고, 그 안에 또 거울이 있다. 끝없이 작아지는 복도가 생긴다. 처음 프로그래밍을 배우는 사람들이 가장 많이 막히는 지점이 바로 이 거울, 재귀다. 함수가 자기 자신을 부른다는 말을 들으면 머릿속에서 복도가 끝없이 이어지고, 결국 길을 잃는다. 그런데 재귀를 잘 쓰는 사람들은 그 복도를 끝</summary>
  </entry>
  <entry>
    <title>빅오, 느림을 재는 자 - 초시계 없이 알고리즘의 속도를 비교하는 법</title>
    <link rel="alternate" type="text/html" href="https://www.fishingproductfr.com/@@2V5J/3" />
    <id>https://brunch.co.kr/@@2V5J/3</id>
    <updated>2026-10-06T10:37:24Z</updated>
    <published>2026-09-29T15:35:53Z</published>
    <summary type="html">두 개발자가 같은 문제를 풀었다. A의 프로그램은 3초, B의 프로그램은 5초가 걸렸다. A가 더 잘 짠 걸까? 알 수 없다. A는 최신 노트북에서, B는 10년 된 컴퓨터에서 돌렸을 수 있다. 입력이 달랐을 수도 있다. 오늘 3초였던 프로그램이 내일 데이터가 열 배로 늘면 3초가 될지 300초가 될지도 모른다. 초시계로는 알고리즘을 공정하게 비교할 수 없</summary>
  </entry>
  <entry>
    <title>정렬의 첫걸음, 선택&amp;middot;버블&amp;middot;삽입 - 가장 단순한 세 방법이 가르쳐 주는 것</title>
    <link rel="alternate" type="text/html" href="https://www.fishingproductfr.com/@@2V5J/6" />
    <id>https://brunch.co.kr/@@2V5J/6</id>
    <updated>2026-10-06T10:34:48Z</updated>
    <published>2026-09-29T15:35:07Z</published>
    <summary type="html">카드 게임을 할 때 손에 든 카드를 정리하는 모습을 떠올려 보자. 어떤 사람은 가장 작은 카드를 찾아 맨 왼쪽에 꽂는다. 어떤 사람은 옆 카드와 비교해 순서가 틀리면 바꾼다. 어떤 사람은 새 카드를 한 장씩 받을 때마다 알맞은 자리에 끼워 넣는다. 셋 다 우리가 배우지 않고도 하는 정렬이다. 그리고 셋 다 컴퓨터 과학 교과서 첫 장에 실린 정렬 알고리즘이기</summary>
  </entry>
  <entry>
    <title>점화식, 자기를 닮은 식 - 문제를 쪼개는 알고리즘의 시간을 계산하는 법</title>
    <link rel="alternate" type="text/html" href="https://www.fishingproductfr.com/@@2V5J/4" />
    <id>https://brunch.co.kr/@@2V5J/4</id>
    <updated>2026-10-06T10:34:06Z</updated>
    <published>2026-09-29T06:57:51Z</published>
    <summary type="html">러시아 인형 마트료시카를 열면 조금 작은 인형이 나온다. 그 인형을 열면 또 조금 작은 인형이 나온다. 알고리즘 중에도 이런 것들이 많다. 큰 문제를 풀려고 열어 보면 작은 같은 문제가 들어 있다. 그 작은 문제를 열면 더 작은 같은 문제가 나온다. 이런 알고리즘의 수행 시간은 어떻게 계산할까? 답은 수행 시간 자체도 자기를 닮은 식으로 적는 것이다. 이것</summary>
  </entry>
  <entry>
    <title>알고리즘은 레시피가 아니다 - 입력과 출력 사이, 생각의 길을 설계하는 일</title>
    <link rel="alternate" type="text/html" href="https://www.fishingproductfr.com/@@2V5J/2" />
    <id>https://brunch.co.kr/@@2V5J/2</id>
    <updated>2026-10-06T10:33:32Z</updated>
    <published>2026-09-29T06:57:28Z</published>
    <summary type="html">새벽 두 시, 전산실 모니터에 진행률 표시가 멈춰 있다. 3천만 명의 고객 명단을 이름순으로 정렬하는 야간 작업. 아침 업무가 시작되기 전, 주어진 시간은 두 시간이다. 그런데 작업은 끝날 기미가 없다. 담당자가 가장 먼저 떠올린 해결책은 &amp;quot;더 좋은 서버를 사자&amp;quot;였다. 하지만 서버를 열 배 좋은 것으로 바꿔도 이 작업은 끝나지 않는다. 문제는 기계가 아니라</summary>
  </entry>
</feed>
