28-측정

측정 역기능: 지식 노동자의 효율을 측정하려 들면 모든 질서가 급격히 붕괴돼버린다. 직원을 완전히 통제할 수 없을 떄 측정 역기능이 필연적으로 발생핟나.

2024-09-15 · 1 min · 21 words

2798

편집 시간: 2022년 1월 31일 오후 5:52 코드 Algorithm/2798.py at main · Junroot/Algorithm 풀이 N이 100보다 작기 때문에 O(n^3)이어도 문제가 없다는 것을 알 수 있다. 모든 경우의 수를 다 구해본 뒤 M을 넘지 않는 최대값을 찾으면 된다.

2024-09-15 · 1 min · 37 words

2751

편집 시간: 2022년 1월 31일 오후 5:59 코드 Algorithm/2751.py at main · Junroot/Algorithm 풀이 N이 최대 1,000,000 이기 때문에 최대 O(nlogn) 까지만 허용된다. python에서 기본적으로 제공해주는 정렬 함수는 머지 소트이므로 사용할 수 있다.

2024-09-15 · 1 min · 33 words

27-프로그래밍 세계의 파머스톤 경

프로그래밍 작업을 더 쉽게 만들어 준다는 추상화 작업을 마쳤더라도 위대한 프로그래머가 되기 위해 알아야 하는 지식이 날로 늘어나고 있다. 허술한 추상화는 우리가 하키 스틱처럼 생긴 학습 곡선에 따라 살아가는 사실을 의미한다. 일주일만 배우면 활용하는데 필요한 90%를 배울 수 있다. 하지만 나머지 10%는 몇 년이 걸려야 겨우 따라잡을 수 있다. 한 세계에서만 살아본 사람이 다른 세상에 존재하는 복잡성에 대한 이야기를 들을 떄마다, 자신이 속한 세계는 복잡하지 않다는 생각이 든다. 소프트웨어 제작과정에서 의존할 언어 클래스, API, 플랫폼 등에 대해 몇년간 옹골진 경험이 있는 아키텍트를 한 명이라도 확보하지 못했다면 새로운 프로젝트를 시작하지 마십시오....

2024-09-15 · 1 min · 97 words

2630

편집 시간: 2022년 2월 12일 오후 9:54 코드 Algorithm/2630.py at main · Junroot/Algorithm 풀이 네 구역으로 나누어서 각 구역에 대한 흰색과 파란색 색종이의 개수를 반환하는 분할 정복을 하면된다. 만약 현재 전체구역이 같은 색이면 이게 한개의 색종이가 된다.

2024-09-15 · 1 min · 37 words

2623

편집 시간: 2022년 4월 2일 오후 5:07 코드 Algorithm/2623.py at main · Junroot/Algorithm 풀이 단순 위상 정렬문제다. 위상 정렬을 사용해서 순서를 결정하고, 모든 노드를 한번씩 방문하기 전에 끝난다면, 순환이 발생한 것이다.

2024-09-15 · 1 min · 31 words

2609

편집 시간: 2022년 1월 31일 오후 6:06 코드 Algorithm/2609.py at main · Junroot/Algorithm 풀이 유클리드 호제법을 사용하면 쉽게 해결할 수 있다.

2024-09-15 · 1 min · 21 words

2606

편집 시간: 2022년 2월 9일 오후 6:29 코드 Algorithm/2606.py at main · Junroot/Algorithm 풀이 bfs또는 dfs로 연결되어 있는 컴퓨터를 확인하면 된다.

2024-09-15 · 1 min · 21 words

26-허술한 추상화의 법칙

추상화: 아랫부분에서 일어나는 아주 복잡한 어떤 작요을 간소화하는 방법 수많은 컴퓨터 프로그래밍은 추상화 요소를 포함하고 있다. 허술한 추상화의 법칙: 모든 쓸 만한 추상화에는 어딘가 구멍이 존재한다. 허술한 추상화의 법칙은 추상화가 의미하는 바와는 달리 우리 삶을 정말로 단순화시키지 못한다는 사실을 의미하기 떄문에 문제가 된다. 무언가를 추상화하는 듯이 보이는 코드생성 도구는 구멍이 있으며, 이런 구멍을 제대로 메워주는 유일한 해결책은 추상화 동작원리와 추상화 대상을 배우는 방법뿐이다. 추상화는 그저 일하는 시간을 절약해주지만, 배우는 시간을 절약해주지는 못한다....

2024-09-15 · 1 min · 72 words

25-드러난 빙산의 비밀

고객은 자신이 원하는 내용이 뭔지 모른다. 고객이 자신이 원하는 내용이 뭔지를 알아내길 기대하지 마라. 멋진 사용자 인터페이스는 실제 프로그래밍 작업의 10%를 차지할 뿐이고, 나머지 90%의 작업은 보이지 않는 물밑에 가라앉아 있다. 프로그래머가 아닌 사람에게 사용자 인터페이스의 90% 분량이 잘 못 만들어진 화면을 보여주면, 사람들의 전체 프로그램의 90%가 잘못됐다고 생각한다. 프로그래머가 아닌 사람에게 아름다운 사용자 인터페이스로 100% 무장한 화면을 보여주면, 프로그램이 거의 다 끝났다고 생각할 것이다. 멋지고 산뜻하게 다듬었으나 분량이 네 페이지인 웹 사이트를 운영하는 닷컴은, 3700여년에 이르는 자료로 무미건조하게 꾸며놓았지만 실용적인 사이트보다 훨씬 더 높은 평가를 받을 것이다....

2024-09-15 · 1 min · 137 words

2473

편집 시간: 2022년 4월 7일 오후 6:48 코드 Algorithm/2473.py at main · Junroot/Algorithm 풀이 용액의 수가 최대 5000개이므로 O(N^2)으로 해결될거라고 생각했다. 기존 용액 문제에서 투 포인터로 O(n)만에 해결했으니 투 포인터를 사용하면서 한 번 더 n개를 루프돌아도 되겠다는 생각이 들었다. 그래서 용액 하나를 고정시키고 용액의 산성도가 0개 가까운 정도를 투 포인터를 이용해서 구했다.

2024-09-15 · 1 min · 52 words

2407

편집 시간: 2022년 2월 24일 오후 3:25 코드 Algorithm/2407.py at main · Junroot/Algorithm 풀이 n에 대한 팩토리얼을 계산하면서, n보다 작은 값의 팩토리얼 값들을 배열에 저장해두면 O(n)으로 해결이 가능하다.

2024-09-15 · 1 min · 28 words

24-결코 하지 말아야 하는 일, 제1부

프로그래머가 항상 코드를 버리고 새로 시작하기를 원하는 미묘한 이유가 있다. 예전 코드가 엉망진창이라는 생각 떄문이다. 예전 코드가 엉망진창이라는 생각은 다음과 같이 기본적이며 근원적인 프로그래밍 법칙때문에 생긴다. “코드 쓰는 작업보다 읽는 작업이 더 어렵다” 함수가 점점 길어지고 비대해지는 이유는 버그 수정 때문이다. 코드를 버리고 새로 시작하면, 여기에 속한 노하우도 모두 버려야 한다. 이미 존재하는 코드를 다시 작성하느라 쓸데없이 많은 돈을 낭비하는 셈이다. 프로그래머가 작성한 코드를 완전히 엉망진창이라고 말할 때, 이와 관련해서 잘못된 이유가 세가지 있다....

2024-09-15 · 1 min · 180 words

23-개발자는 멀티태스킹 기계까 아닙니다

직렬처리 방식은 평균적으로 결과값이 더 빨리 나온다. 과업 전환이 오래 걸릴수록, 멀티태스킹을 위해 지불해야 하는 대가도 커진다. 프로그래머의 과업 전환 시간이 오래 걸린다. 프로그램은 머리 속에 엄청나게 복잡한 내용을 한꺼번에 유지해야만 하는 일이기 때문에 이런 일이 벌어질 수 밖에 없다. 개발자 한명에게 한 가지 일을 던져주면 훌륭하게 처리하지만, 한 사람에게 두 가지 일을 한꺼번에 주면 그다지 매끄럽게 처리하지 못한다.

2024-09-15 · 1 min · 59 words

2263

오답 여부: o 편집 시간: 2022년 2월 24일 오후 4:04 코드 Algorithm/2263.py at main · Junroot/Algorithm 풀이 포스트오더로부터 부모 노드를 찾고 인오더로부터 왼쪽 자식 노드와 오른쪽 자식 노드를 찾는 것은 쉽게 찾아냈다. 하지만 인오더와 포스트오더의 인덱스를 계산하는데 어려움을 겪었다. 굳이 문자열을 변형하지 않고 인오더의 인덱스와 포스트오더의 인덱스를 함수의 파라미터로 넘기면 헷갈리지 않는다는 것을 다른 사람 풀이를 참고해서 알게되었다.

2024-09-15 · 1 min · 58 words

2252

편집 시간: 2022년 3월 1일 오후 7:13 코드 Algorithm/2252.py at main · Junroot/Algorithm 풀이 위상 정렬을 구현하면 쉽게 해결할 수 있는 문제다.

2024-09-15 · 1 min · 22 words

2239

편집 시간: 2022년 4월 6일 오후 10:23 코드 Algorithm/2239.py at main · Junroot/Algorithm 풀이 단순 브루트로 문제를 풀 수 있다. (스도쿠의 칸수) * (한 칸에 들어갈 수 있는 숫자의 수) * (사용할 수 있는 수 찾는 과정) = 81 * 9 * 9 = 6516 밖에 되지 않기 때문이다.

2024-09-15 · 1 min · 49 words

2206

오답 여부: o 편집 시간: 2022년 2월 24일 오후 2:29 코드 Algorithm/2206.py at main · Junroot/Algorithm 풀이 기본적으로 BFS로 풀면된다. 하지만 방문한 위치를 체크하는 방법에서 어려움을 겪었다. 잘못된 풀이1 처음에는 벽을 부수든 부수지않든 한 번 방문한 위치는 재방문하지 않도록 구현했다. 하지만 어떤 위치에 대해서 기존에는 벽을 부수고 갔지만, 같은 횟수로 이동해서 벽을 부수지 않고 갈 수 있는 방법이 있다면 큐에 담을 필요가 있었다. 잘못된 풀이2 잘못된 풀이1때문에 나는 큐에 담겨있는 것중 거리가 가장 짧고, 거리가 같다면 아직 벽을 부수지 않은 것을 먼저 꺼내서 처리하면 해결될 거라고 생각했다....

2024-09-15 · 1 min · 165 words

22-테스터를 두지 않는 (잘못된) 이유 다섯가지

소프트웨어는 버그가 있기 마련이다. 절대적으로, 반드시 QA 부서가 필요하다. QA부서는 독립적이며 권한이 있어야한다. QA 팀장은 품질 테스트를 통과하지 못한 소프트웨어는 출시하지 못하게 막을 권한이 있어야 한다. 테스터를 고용하지 않는 가장 흔한 이유 버그는 프로그래머가 게을러서 생기니까요 버그는 프로그래머가 자신의 코드에서 버그를 발견해내지 못하는 바람에 새어나오는 것이다. 대개 버그는 다른 사람이 더 쉽게 찾을 수 있다. 우리 소프트웨어는 웹에 올려놓아서, 버그는 금방 고칠 수 있으니까요 웹에 올려놓았다고 해도, 일단 출시한 뒤에 버그를 수정하는 데 드는 비용을 얕잡아 보면 안된다....

2024-09-15 · 1 min · 167 words

2166

오답 여부: o 편집 시간: 2022년 4월 4일 오후 6:27 코드 Algorithm/2166.py at main · Junroot/Algorithm 풀이 여러개의 삼각형으로 나누어서 면적을 합하면 되겠다고는 빠르게 생각해냈다. 하지만 아래와 같은 문제가 있었다. 좌표 3개가 주어졌을 때, 삼각형 면적 구하기 벡터의 외적을 사용할 생각을 전혀못했다. 두 벡터 a, b가 있을 때 두 벡터를 외적한 벡터의 크기는 |a||b|sinθ 라는 것을 완전히 잊고 있었다. 오목 다각형의 경우 삼각형의 면적을 단순히 모두 더해서 반환하면 될거라고 생각했다. 하지만 이는 볼록 다각형의 경우에만 해당한다....

2024-09-15 · 1 min · 104 words