분류 전체보기306 [프로그래머스] 보석 쇼핑 (Swift) https://school.programmers.co.kr/learn/courses/30/lessons/67258?language=swift 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr투포인터 완탐 문제 접근방법 투포인터 초기 위치는 0번째 보석이다.현재 구간에 포함된 보석 종류와 등장 빈도수를 저장하는 map이라는 딕셔너리를 갖고 간다.구간이 변경될때마다 map 딕셔너리도 갱신된다. 없는 보석은 값이 0이 아니라 딕셔너리에서 제거되어야 함. (nil을 대입하는거에 번번이 실패해서, removeValue(forKey:) 메서드를 썼다.gems 범위를 투 포인터가 벗어나지 않는 선에서현재 구간이 전체 .. 2025. 3. 21. [프로그래머스] 파괴되지 않은 건물 (Swift) https://school.programmers.co.kr/learn/courses/30/lessons/92344 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 첫번째 보드에서 0,0 부터 3,4 까지의 칸에 모두 4씩 뺀 결과 = 두번째 보드두번째 보드에서 2,0 부터 2,3 까지의 칸에 모두 2씩 뺀 경과 = 세번째 보드이렇게 공격인지 회복인지의 타입과, 구간(시작점, 끝점), 더하거나 뺄 크기 가 N개 주어졌을 때기존 보드에서 0보다 큰 칸의 개수를 구하는 문제 접근방법누적합 문제였는데 처음에는 그냥 브루트포스마냥 다 일일이 빼는 코드를 짰다가. 시간초과나고도저히 모르겠어서 이전에 풀었던 코드 .. 2025. 3. 21. [백준 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. [백준 2533] 사회망 서비스 (SNS) (Swift) https://www.acmicpc.net/problem/2533 DP & DFS 트리인 그래프의 노드간 연결 정보가 간선개수(= 노드개수-1) 만큼 주어지고,모든 노드는 얼리어답터이거나 아니거나 일 때, 내가 얼리어답터면 내 친구들에게 정보를 전파할 수 있음.그래프의 모든 노드가 정보를 전파 받을 수 있으려면 최소 몇명이 얼리어답터여야 하는지.구하는 문제 접근방법DP랑 DFS 같이 쓰는거 생각해내기까지가 어려운 것 같음..블로그 보고 이해하고 풀이함 key 고려사항1. 무방향 그래프 처럼 인접 그래프를 만든다.2. DP 배열은 노드수 * 2 이고,[N][0] : N 번째 노드가 얼리어답터인 경우 최소 얼리어답터수[N][1] : N 번째 노드가 얼리어답터가 아닌 경우 최소 얼리어답터수이다.3. visi.. 2025. 3. 20. [백준 11058] 크리보드 (Swift) https://www.acmicpc.net/problem/11058 DP 왜 디피는 여전히 어려운걸까부분 문제로 열심히 머리굴리다가 안돼서 다른 블로그 참고했다.결론은 점화식을 세우는 것이었음! - 간단해보이는 문제는 점화식으로 풀려고 했었던 것 같은데 오히려 이렇게 복잡해 보이는 문제는 더 점화식으로 풀 생각을 안하는 것 같음.. Key Idea는- 우선 Ctrl-A, C, V를 한묶음으로 생각하기- 비교대상을 A누르기 vs 복사하기 에서 A누르기 vs 1번 복사하기 vs 2번 복사하기 .. .. 로 확장해서 생각하기였다. 점화식 세운 과정dp[i] = max ( dp[i-3] * (1+1), dp[i-4] * (2+1), .. 2025. 3. 19. [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. [Swift] 메모리 관리 기법 (ARC) ARC (Automatic Reference Counting)힙에 할당되는 참조 타입을 해당 값이 더 이상 필요하지 않을 때, 자동으로 메모리에서 해제해주는 기법이를 통해 개발자가 직접 참조타입에 메모리 할당, 해제를 해주지 않아도 자동으로 메모리 할당과 해제가 이루어져 메모리 누수를 막을 수 있다. RC(Reference Count)를 이용한 메모리 관리 기법으로, 힙에 할당되는 인스턴스마다 RC를 갖고 있음.해당 인스턴스가 참조되고 있는 횟수를 나타내며, 0이 되면 자동으로 해제 된다.참조 횟수(RC)를 증가시키는 경우인스턴스를 새로 생성할 때 (ex. 클래스 인스턴스 생성 → 변수에 대입)기존 인스턴스를 다른 변수에 새로 대입할 때참조 횟수(RC)를 감소시키는 경우인스턴스를 가리키던(참조하던) 변수.. 2025. 3. 14. [백준 16113] 시그널 (Swift) https://www.acmicpc.net/problem/16113 문자열 구현 문제입력이 아래와 같이 문자열의 길이와 #과 . 로만 이루어진 문자열이 들어온다. 40###..#..#.#..#..###..#..#.#..#..###..#.. 이 문자열로 5줄을 만들었을 때, #은 검은칸, .은 흰색칸으로 그리면숫자가 나온다.숫자는 세로로 5칸을 차지하고, 1의 경우 한칸의 열을 차지하는 것을 제외하면 3칸의 열을 차지한다.이런 규칙을 갖고 있는 시그널을 숫자로 해독하는 문제 접근방법딕셔너리에 이차원배열: 숫자 String 을 0~9까지 저장했다. 그리고 공백 "" 에 해당하는 5행이 모두 비어있는 배열로 이루어진 이차원 배열도 "" 이렇게 저장해줌 (빈칸이 여러개 있을 때를 대비한..) 그리고 문자열을 전.. 2025. 3. 13. [백준 1005] ACM craft (Swift) https://www.acmicpc.net/problem/1005 위상정렬, DP, DFS (?)건물들의 건설시간과 건설 순서가 주어진다 (건설 순서 : a, b (a지은 후 b를 지을 수 있음))이때 W번 건물이 지어질 수 있는 가장 짧은 시간 구하는 문제위의 사진의 경우 4번 건물을 2와 3이 모두 지어진 후인 110초 후에 지어지기 시작해서 120초가 걸려야 지어짐 접근방법part 1. 재귀 DFS + DP로 풀어보려고 시도얼마전에 그 강 순서 구하는 것 처럼 구해야할 노드에서 시작해서 역으로 구해보려고 했는데 시간초과났음 part 2. 위상정렬선행하는 노드들이 먼저 수행되어야 내가 수행될 수 있다 -> 이전에 줄세우기 문제와 유사함위상 정렬 사용해서 풀이해야 하는 문제라서 어떻게 할지 고민하다가 .. 2025. 3. 12. 이전 1 2 3 4 5 6 ··· 34 다음 728x90