[백준 6987] 월드컵 (Swift)
https://www.acmicpc.net/problem/6987Simulation + DFS6개국이 서로 한번씩 경기한다고 했을 때, 경기결과를 각 나라마다 승,무,패 횟수로 정리한 표를 보고가능한 결과인지 아닌지 판단하는 문제 접근방법처음에 브루트포스, 백트래킹이라고 써있어서 접근하기 너무 어렵다가나라별로 경기를 치르는 대진의 총 개수가 15개 라는 것을 보고한 경기의 대진을 ( A , B ) 라고 했을 때 15개의 모든 경우를 배열로 저장했다. [(1,2),(1,3),....,(5,6)] 이런식으로그리고 이제 한 경기를 하나의 노드라고 보고 dfs 탐색을 진행하면서각 노드 마다 뻗어나가는 가지는 A>B, A=B, A 세가지가 있을 수 있다고 생각하고 모든 경우를 완전탐색하는 것 그러면 모든 경기의 ..
2025. 3. 20.
[Swift] 순환참조와 strong, weak, unowned
순환참조 문제변수나 상수가 참조타입의 인스턴스를 참조할 경우 따로 키워드를 지정하지 않으면 strong 즉 강한 참조를 하게 되는데, 참조타입을 증가시키는 것도 모두 이 강한참조일 때만 발생한다.이때, 두 클래스가 서로를 참조하는 프로퍼티를 모두 갖는다면, 힙에서 두 인스턴스 모두 영원히 해제되지 않는 상황이 발생한다.A의 프로퍼티가 B 강한참조, B의 프로퍼티가 A 강한참조→ B RC: 2 (생성될때, A에의해 참조될때)→ A RC: 2 (생성될때, B에의해 참조될때)A = nil, B = nil→ B RC: 1 (nil로 인한 -1, A가 메모리 상에 있으므로 A에 의해 증가한 참조횟수 1이 그대로 남아있음)→ A RC: 1 (nil로 인한 -1, 그치만 B에의해 증가된 참조횟수 1이 남아있어서 메모..
2025. 3. 14.