구현 2

[BOJ] 1043. 거짓말

유니온파인드를 이용하는 문제였다. 문제를 맨처음 접근함에 있어서 파티의 순서가 보장된다고 생각하여 단순하게 생각하였지만, 테스트 케이스를 보고 파티의 순서가 보장되지 않음을 알게 되었고 다시 생각하게 되었다. 다시 생각해보니 같은 파티마다 서로 연결되는 성질을 보았을 떄 유니온파인드가 생각이 나서 적용을 해보았다. 우선 파티의 인원을 전부 입력을 받고, 파티마다 참석자들을 union 해주었다. 그 후 이미 진실을 알고 있는 자 들과 파티의 참석자간의 루트값을 비교하여서 진실을 알고있는 사람들을 모두 선별해주고, 그것을 기준으로 거짓을 얘기할 수 있는 파티를 찾았다. 유니온파인드를 사용할때 주의할점이 있는데 서로의 루트 노드가 같은지를 확인할 때에는 단순히 p[i] , p[j] 값을 비교하는게 아니라 fi..

Algorithm 2021.05.04

[Programmers] 캐시

캐시를 직접 구현하는 문제였다. 여기선 캐시에 있어 LRU를 사용하는데 LRU는 queue자료구조와 상당히 유사한 구조를 취하고 있다. 그래서 queue를 이용하여 hit & miss 경우를 나누어 구현하였다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 package programmers; import java.util.LinkedList; import java.util.Queue; public class Solution_2018카카오_캐시 { public static void main(String[] args) { i..

Algorithm 2020.05.08