java에서 hash나 tree 계열 (흔히 rb로 구현된) map은 key 값이 주어졌을 때, value를 빠르게 찾는 자료구조입니다. 예를 들어, hash 계열의 map은 key 값을 가지고 계산된 hash 값을 가지고, 특정한 버킷에서 값을 찾아버립니다. Treemap이나 set은 정렬이 되어 있습니다. key값의 대소에 따라 정렬이 되어 있다면, 적절한 연산을 통해 O(log(size))의 복잡도로 찾기 연산을 수행할 수 있습니다. 문제는, 이런 경우입니다. 값을 기준으로 키도 빠르게 찾아내려면 어떻게 해야 할까요? TreeMap이나 HashMap이 Key값을 토대로 Value를 빠르게 찾아낸다고 했습니다. 반대로 생각하면 어떨까요? Value 값을 토대로 대응되는 키 값을 빠르게 찾아내려면, 키..
전체 글 검색 결과
안녕하세요. 그래프 이론에서 functional graph는 생각보다 많이 다뤄지는 주제입니다. 이 사이트를 보셔도 좋을 듯 싶군요. 울프람 알파에도 정의가 되어 있습니다. 이 그래프에서 어떻게 사이클을 찾을까요? 예전에, scc (강한 연결 요소)를 모르던 시절에 풀었던 문제들이 몇 개 있었습니다. 그 문제들을 풀 때 써먹을 수 있는 흥미로운 것들은 2개 입니다. 여기서 노드 i와 노드 j가 같은 덩어리에 속해있다면 i에서 j로 갈 수 있는 방법이 있거나, j에서 i로 갈 수 있는 방법이 있다는 것을 의미합니다. 이 둘을 보이도록 하겠습니다. 상대적으로 보이기 쉬운 2번부터 보여봅시다. 그래프에서 cycle은 시작점 s가 있다고 해 봅시다. 여기서 출발해서 다른 노드들을 거쳐서, s로 도착하는 경로가 ..
파이선에서 list를 뒤집는 연산은 꽤 많이 쓰입니다. 어떻게 뒤집는지 알아봅시다. 먼저 [::-1]입니다. 이것은, 리스트를 역순으로 뒤집습니다. 실행 결과는 아래와 같습니다. yrotselpam 메이플 스토리가 뒤집어진 모양입니다. 이는 step이 -1이였기 때문입니다. -1은, 역순으로 1칸씩 이동한다는 의미입니다. -2를 하면 어떨까요? 역순으로 2칸씩 이동할까요? 직접 입력해 보겠습니다. li[::-2]를 입력해 보았습니다. 그러면 yosla가 출력됨을 알 수 있는데요. y로부터 역순으로 2칸 가면 o가 나오고, o에서 2칸 역순으로 가면 s가 나옵니다. s에서 2칸 왼쪽으로 가면 l이 나오고, 또 거기서 왼쪽으로 2칸 가면 a가 나옵니다. 즉, -2는 왼쪽으로 2칸씩 이동한다는 의미입니다. 저..
저번 시간에 설정 파일을 분리하는 것을 했었습니다. 이번에는 properties 파일의 설정값을 불러와 보겠습니다. 프로젝트 구조는 위와 같습니다. 다른 건 없습니다만, com.example.demo.init에 ConfigureSource 클래스가 추가되었습니다. application.properties에는 spring.profiles.active가 있습니다. 이것의 설정값은 B입니다. 이 값을 참조해서, 설정값을 불러온다고, 이 글에서 이야기를 했던 기억이 납니다. 만약에, 이 값이 B라면 application-B.properties를 참조하게 될 건데요. 이 안에 있는 셋팅 값을 보겠습니다. spring.server.port가 7776입니다. A의 셋팅값은 spring.server.port 값이 77..
예전에 게시판을 구현했을 때 페이징 처리를 해야 할 일이 있었습니다. 어떻게 처리할 지 고민하다가, limit와 offset 조합으로 처리하였던 기억이 납니다. 컬럼 수가 그리 많지 않다면, 시도해 보아도 괜찮은 방법 중 하나입니다. 실제로, 해커랭크나, 다른 사이트 sql 문제들을 풀고 나서, 다른 분들의 코드를 보면 limit는 정말 많이 볼 수 있음을 알 수 있습니다. 특히 rank 관련해서요. 예를 들어서, 모든 사람들의 score 값이 다 다를 때, k위를 한 사람을 구하는 쿼리를 쓸 때, 정렬하고 offset, limit 조합을 쓰면 너무 쉽게 처리할 수 있습니다. 예제 상황을 가지고 오겠습니다. dbeaver의 예제 데이터 베이스에는, Album 테이블이 있습니다. 그리고, Track이 있습..
최근댓글