
1. 상호배타집합 (Disjoint Set) 이란? 서로 중복으로 포함된 원소가 없는 집합들을 상호배타집합, 또는 서로소 집합이라 부른다. 즉 집합들간에 교집합이 없다는 의미이다. ex) 집합 A = {1, 2}, B = {3, 4} 는 Disjoint Set이다. 집합 A = {1, 2}, B = {2, 4} 는 Disjoint Set이 아니다. 2가 중복으로 들어가있기 때문이다. 그래프 문제를 비롯해서 알고리즘 문제를 풀다보면, 문제에서 주어지는 여러 개체를 집합으로 묶고, 그 집합들을 합친다던지 어떤 개체가 어떤 집합에 들어가있는지 찾는다던지 하는 일을 해야하는 경우가 종종 있다. 이 때 주어지는 개체들이 중복된 값을 가지지 않는 별개의 개체들이라면, 만들어지는 집합은 Disjoint Set이라 할..

저번에 서버리스 컴퓨팅에 대한 포스팅을 썼었다. 저 땐 사실 서버리스로 딱히 뭘 만들어보겠다는 생각은 없었고 그냥 "대학원 시절에 서버리스란 개념을 배웠었는데 직접 개발을 해보진 못했었지, 리뷰하면서 한번 람다 써보기나 해볼까" 같은 느낌으로 쓴 거였다. 그런데 람다를 써보면서 생각을 해보니까 전에 만들었던 (정확히는 얼추 만들긴 했는데 '완성' 하진 않고 있었던) EZ2AC 성과사진 분석기를 람다 기반으로 바꿔서 다시 만들면 더 낫지 않을까, 라는 생각이 들더라. 왜냐면 람다 같은 서버리스 컴퓨팅 서비스들의 특징이 종량제 과금, 그러니까 '요청을 보낸 횟수만큼만' 과금을 한다는 것인데, 이 성과 분석기라는게 많은 사람들이 쓰는 것도 아니고 딱 1명을 위해서 만들어진 서비스이기 때문에() EC2 서버를 ..
대부분의 프로그래밍 언어에서 기본적으로 제공하는 sort 함수를 사용하면 일반적인 숫자나 문자열이 들어있는 배열을 정렬하는 것은 쉽다. 하지만 여러 속성이 들어있는 '객체' 들이 들어있는 배열이 있다면 어떻게 정렬할까? 예를 들어서 '학생' 클래스에는 학번, 이름, 전화번호, 성적이라는 속성들이 들어있는데 이 학생들을 성적순으로 정렬해야 한다면? 파이썬에서는 lambda 표현식이라는 걸 사용하면 dict를 값 기준으로 정렬한다던지 하는 것이 가능했었다. res = sorted(genres_plays.items(), key=(lambda x: x[1]), reverse = True) 자바에서도 비슷한 일을 해야 할 일이 생겼다. '기록' 이라는 클래스가 있다. '기록' 클래스의 속성으로는 제목, 레벨, 난..