전체 글

오늘의 끄적임. 회사 처음으로 늦잠으로 인한 지각을 했다. 일어나자마자 기술이사님에게 전화를 걸어 "지금 일어났습니다." 이실직고 한 뒤, 한 참 멍을 때렸다. 평소 같았으면 피곤함에 눈꺼풀이 무거웠을텐데, 오늘은 이상하게 눈이 맑고 가벼웠다. 다른 날도 아니고, 특히 회사가 바쁜 요즘에 지각을 하니 마음이 이상했다. 어제 12시 반이 넘어가는 시점에 퇴근해서 택시 타고 집에 왔을 때에도 이상하게 몸이 무겁지 않았다. 요즘 내가 진행하는 개발 파트에 재미가 붙었기 때문이었을까. 현실은 12시 반까지도 생각한대로 코드 구현이 되지 않아 실패감을 갖고 포기선언을 한 뒤 돌아온 시점이었는데 말이다. 대충 배민으로 도시락을 시켜먹고 씻고 회사를 출근하고 앉았는데, 다행히도 다들 오늘 나의 지각에 대해 유쾌하게 ..
· Programming
Debugging을 하는데 꼼꼼하게 하려면, breaking point를 잡고 코드의 첫 부분부터 차례대로 어떤 값들이 찍히고 있는지 확인하면서 코드 구현이 제대로 되었는지 확인을 하는 것이 매우 중요하다. Debugging을 하면서 매 번 꼼꼼하지 않고 항상 깜박하는 것은 어떤 문제인지 처음부터 확인하지 않고 지레짐작하여 중간부분부터 임의로 선정하여 코드를 살펴본다. 사실, 아무리 살펴봐도 코드에는 문제가 없어 보이는 게 대부분이다. 항상 Breaking point를 잡고 정확한 값을 잡아보는 것이 중요하다. 잊지말자.
그리디 알고리즘 문제로, 1개의 회의실에 최대 몇 개의 회의를 배정할 수 있는지 찾는 문제이다. 그리디 알고리즘으로 풀어야한다는 것만 생각할 수 있으면 쉽게 풀 수 있는 문제다. 우선, 회의가 끝나는 순서대로 회의를 지정한다. 첫 번째 회의부터 배정을 하고 첫 회의의 끝나는 시간을 기록한다. 그 다음 종료되는 회의의 시작 시간과 이전 회의의 끝나는 시간을 비교하여 이전 회의의 끝나는 시간보다 시작 시간이 큰 경우만 추가하고, 끝나는 시간을 갱신하고 배정 카운트를 끝낸다. 이렇게 모든 회의를 끝까지 조회해보고 최종 카운트된 숫자를 출력해주면 된다. #define _CRT_SECURE_NO_WARNINGS #include #include #include typedef struct room { int star..
우선순위 큐를 이용하여 이 문제를 풀면 된다. 우선순위 큐를 2 개를 운용하는데, 현재까지 말한 숫자들의 부류를 작은 순서대로 정렬한다고 가정할 때, 절반은 작은 부류, 절반은 큰 부류로 나눈다. 이렇게 나눌 때 작은 부류는 내림차순이, 큰 부류는 오름차순이 우선순위인 큐로 설정한다. 이렇게 되면 작은 부류의 top 원소는 전체 숫자가 홀수일 때는 가운데 숫자가 되고, 짝수일 때는 가운데 두 수 중에서 작은 숫자가 된다. 그러면 출력할 때 항상 작은 부류의 top 원소를 출력하면 정답이 된다. 목표한 바 대로 정렬하기 위해서, 첫 번째 원소는 무조건 작은 부류의 우선순위 큐에 넣어줌으로, 작은 부류의 큐가 큰 부류의 큐보다 항상 사이즈가 1이 크도록 설정한다. 첫 번째 원소를 넣어주고, 입력받는 숫자를 ..
오뚜깅
오뚜깅