
무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 50kg]이고 구명보트의 무게 제한이 100kg이라면 2번째 사람과 4번째 사람은 같이 탈 수 있지만 1번째 사람과 3번째 사람의 무게의 합은 150kg이므로 구명보트의 무게 제한을 초과하여 같이 탈 수 없습니다. 구명보트를 최대한 적게 사용하여 모든 사람을 구출하려고 합니다. 사람들의 몸무게를 담은 배열 people과 구명보트의 무게 제한 limit가 매개변수로 주어질 때, 모든 사람을 구출하기 위해 필요한 구명보트 개수의 최솟값을 return 하도록 solution 함수를 작성해주세요. 최대 2..

얼마 전에 우연한 계기로 어떤 알고리즘 문제를 풀게 됐는데, 딱 보자마자 학부 시절 자료구조 시간에 배웠던 AOE Network와 Critical Path라는 개념이 떠올랐다. 그걸 이용해서 문제를 풀 수 있겠다는 생각은 들었지만, 문제는 그 개념만 떠올랐지 어떻게 구현하는지는 하나도 기억이 안났다. (...) 결국 제대로 풀지 못했다. 그래서 이번 포스팅에서는 AOV Network, AOE Network (둘은 비슷한 개념이다) 의 개념과 구현 방법에 대해 정리해 본다. 포스팅을 쓰기 위해서 옛날 그 학부 시절에 짰던 코드를 예토전생시켰는데, 날짜를 보니까 거의 6년이 됐더라. 까먹을 만도 하다... 그 코드를 봐도 하나도 이해가 안돼서 인터넷에서 강의자료를 찾아보면서 아예 다시 공부를 했다. 1) A..

백준 온라인 저지의 2839번 문제. 언제나처럼 침대에 누워서 폰 만지작거리면서 타임라인 쭉 넘겨보고 있었는데, 누가 간단해보이는데 은근 어렵다며 이 문제를 올렸다. 배달해야 할 설탕의 무게 N (kg) 이 주어졌을 때, 3kg짜리 봉지랑 5kg짜리 봉지를 가지고 최소한의 봉지만 사용해서 배달하는 방법을 찾는 문제다. '3x + 5y = N을 만족하는 (x+y) 의 최소값을 구하라' 로도 표현할 수 있다. 1) 내가 푼 방법 문제를 보고 일단 딱 든 생각은 최대한 5kg짜리 봉지를 많이 쓰고 싶다. 3kg짜리 봉지를 생각하지 말고 5kg짜리에 초점을 맞춰보면, N을 5로 나누면 5kg짜리 봉지 몇 개를 쓸 수 있을지 알 수 있겠다. 몇 개의 예시를 생각해보자. 50kg -> 5kg * 10개 51kg -..
1. DDL (Data Definition Language) - CREATE, ALTER, DROP 스키마, 도메인, 테이블, 뷰, 인덱스를 정의/생성, 변경, 제거할 때 사용하는 SQL 1-1. CREATE CREATE TABLE 직원 (직원번호 INT, 이름 CHAR (10) NOT NULL, 전화번호 CHAR (8), 성별 GENDER, 나이 INT, 봉급 DECIMAL (8,2), 부서번호 CHAR (4), PRIMARY KEY (직원번호), FOREIGN KEY (부서번호) REFERENCES 부서 (부서번호), CONSTRAINT CHECK (나이>=20 AND 나이= 300 ORDER BY 나이 ASC, 봉급 DESC; // 나이의 오름차순으로 정렬해서 출력 (나이가 같을 시 봉급 내림차순으..
- 3D Printing - ACN (Automatic Crash Notification / 자동 차량 충돌 알림) 표준화된 데이터 메시지를 통해 차량 충돌에 관련된 정보를 제공하는 자동화 시스템. - AllJoyN 오픈소스 IoT 플랫폼. P2P 통신을 지원. - Anycast IPv6에서 한 송신자와 인근에 있는 소수의 수신자들간의 통신을 의미. 멀티캐스트/브로드캐스트와 다르다. - AP (액세스 포인트) - AppStore - Attack Tool Kit 악성코드 프로그램, 해킹툴 따위를 모아놓은 것. - BEMS (Building Energy Management System) IT기술을 활용하여 건물의 건축설비를 관리하는 시스템. - Big Data - Bio Informatics (BIT) - ..
기출문제 좀 보고 간략하게 느낀 점을 써보면... 1. 알고리즘: 순서도 문제랑 코드 보고 빈칸 채우기 or 출력 결과 적는 문제가 있는데, 코드 나오는 문제는 내가 암만 머리가 굳었다지만 전공자라면 누구나 무리없이 풀 수 있는 수준인 듯하다. 순서도 문제가 자주 못보던 형식이라 난해한데 이건 연습문제 좀 풀어보면서 감을 익혀야겠다. 따로 개념파트 볼 필요는 없음. 2. 데이터베이스: 필기 때 봤던 것들 다시 리뷰하자. 거의 똑같은 내용이 나오는데 다만 객관식이 아니라 주관식이라서... 특히 SQL 복습을 좀 하자. 3. 비즈니스 용어: 그냥 책에 있는 것들 보면서 달달 외우기. 달리 방법 없는 것 같다... 4. 신기술동향 & 전산영어: 책에 있는 용어들 쭉 훑어보고, 최신 IT이슈 좀 찾아보자. 이 ..
- ERP (Enterprise Resource Planning / 전사적 자원 관리) 기업 내의 인적/물적 자원들을 효율적으로 관리하여 기업의 경쟁력을 강화시켜주는 통합정보 시스템. - BPR (Business Process Re-engineering / 업무 프로세스 재설계) 기업 경영 내용이나 과정 전반을 분석해서 경영 목표 달성에 가장 적합하도록 재설계하고 그에 맞추어 기업 형태, 사업 내용, 조직 등을 재구성하는 것. 특정 부분만이 아니라 기업 전체를 대상으로 한다는 점에서 기존의 '업무 개선' 과 다르다. - CPM (Corporate Performance Management / 기업 성과 관리) 예측 경영을 통한 최적의 의사결정을 내릴 수 있게 해주는 시스템. 변하는 경영 환경에 대응하여 효..

이전 포스팅에서 설명했던 이진 탐색 트리 (BST) 의 활용 예를 보자. 설명할 때는 보통 이해하기 쉽게 노드에 들어있는 데이터를 숫자로 가정하지만, 실제로 쓰일 때는 문자열이라던가 더 다양한 데이터가 들어갈 수 있다. 예를 들어 주소록에서 어떤 사람 이름을 검색하기 위해 BST를 만들었다고 치자. 보면 알겠지만 여기서는 크다, 작다의 기준은 알파벳 ABC순 정렬이다. B로 시작하는 단어가 C로 시작하는 단어보다 왼쪽에 위치하게 되는 것이다. 서로 다른 모양의 트리 2개를 그려놨는데 둘 다 BST다. 그러니까 같은 데이터셋을 가지고 만들 수 있는 BST의 모양은 유일하지 않다. 이 두 BST의 차이는 무엇일까? BST에서 검색을 할 때는 루트 노드부터 시작해서 재귀함수를 호출하면서 아래로 내려가기 때문에..

1. 이진 탐색 트리란? 누구나 한번쯤은 숫자 맞추기 게임을 해본 적이 있을 것이다. A가 숫자를 하나 생각하면 B는 그 숫자를 맞추는데, A는 B가 말한 숫자보다 자기가 생각한 숫자가 큰지 작은지 (Up/Down) 를 알려준다. 이런 게임을 한다고 했을 때 일반적으로 생각할 수 있는 가장 좋은 전략은 정답 숫자의 가능한 범위를 반으로 잘라서 정중앙의 숫자를 말하는 것이다. 예를 들어 1~100까지의 숫자 중에서 생각하라고 했다면 처음엔 50을 부르고, Up이 나오면 그 다음엔 75를 부르고... 이런 식으로 범위를 반씩 좁혀나가는 방법이다. 이러한 방법을 컴퓨터공학에서 이진 탐색 (Binary Search) 이라고 부른다. 그리고 트리 자료구조를 이용해서 이진 탐색을 할 수 있도록 만든 걸 이진 탐색 ..

리듬게임계에서 유명한 음악 중에 명 (冥) 이라는 곡이 있다. 비트매니아 IIDX에서 오랫동안 최종보스의 지위를 지켜왔던 곡으로 그 난이도도 악명높지만 빼어난 곡과 BGA, 그리고 한자 한 글자로 되어있는 강렬한 제목 (...) 으로 비트매니아 뿐 아니라 리듬게임 전체에서도 보스곡하면 가장 먼저 떠오르는 곡 중 하나라 할 수 있다. 이 곡은 한국에서 흔히 '뼸' 이라는 별명으로 불리곤 하는데, 그 이유는 저 한 글자짜리 강렬한 제목이 인코딩 오류로 인해 깨지면 '뼸' 이라는 글자로 변하기 때문이다. 이 곡 이외에도 작곡가 'Ryu☆' 은 별이 '걲' 으로 깨진다는 이유로 '류걲' 이라 부른다던가, 타 장르로 넘어가면 '동방 프로젝트' 의 '東方' 이 깨지면 '뱦뺴' 가 되기 때문에 동방을 뱦뺴라고 부르는..