전체 글306 [백준 1141] 접두사 (Swift) https://www.acmicpc.net/problem/1141 문자열 & 정렬 문자열들의 배열이 주어지고, 서로가 서로의 접두사가 아닌 부분집합의 최대 크기를 출력하는 문제 접근방법 처음에는 DFS로 가능한 부분집합을 모두 구하는 식으로 했다가 시간초과났다;ㅎ알고리즘 분류를 보니까 정렬이라길래,,문자열을 정렬해두고, 맨 위부터 본인보다 문자열이 큰(길이&알파벳순) 문자열에 대해서 본인이 그 문자열의 접두사면본인을 부분집합에 포함시키지 않도록해서 result를 n에서 1씩 줄여나갔다. 따지고 보면, 알파벳순 & 길이순 으로 나열되어있는 문자열에서 내가 바로 다음 문자열의 접두사라면내가 그 다음 문자열의 접두사일 확률도 높아진다.그리고 그렇지 않더라도 내가 들어가면 그 다음 문자열과 나 중 하나는 빠져야.. 2025. 4. 10. [백준 2933] 미네랄 (Swift) https://www.acmicpc.net/problem/2933 Simulation & BFSR*C 칸의 격자판이 있고, 양쪽에서 번갈아가면서 h 높이의 미네랄들을 한개씩 없앤다.미네랄들은 바닥부터 연결되어 있어야 유지될 수 있는데, 지지층 없이 떠있는 미네랄들은 그대로 떨어진다.떨어지는 미네랄들은 모양이 일정하게 유지된다. 다 치고난 후에 동굴의 미네랄 모양을 출력하는 문제 접근방법오늘도 테트리스같은 문제다..BFS를 써서 떠있는 미네랄들을 배열에 담고 그 미네랄들을 모양을 유지하면서 그대로 얼만큼 내려야 하는지 알아봐야한다.으~ 오답노트맨처음엔 왼쪽오른쪽 반대로 해서 틀렸었고,마지막에는 이 아래 코드 부분 범위 때문에 골치아팠다.while m.0 + tmp 떠있는 클러스터에서 아래로 얼만큼의 빈.. 2025. 4. 9. [백준 5557] 1학년 (Swift) https://www.acmicpc.net/problem/5557 DP (+DFS?) 숫자들의 배열을 보고, 그 숫자들 사이를 덧셈뺄셈으로 채워서 맨 마지막 숫자를 만드는 등식의 개수를 출력하는 문제 접근방법처음에 봤을 때는 DFS로 풀면 되겠다 했는데, 경우의 수를 세는 문제라 DP를 사용해야하는 문제였다.DP 규칙으로는 i번째까지 계산했을 때 나올 수 있는 숫자 : 경우의 수 를 갖는 딕셔너리를 원소로 갖는 배열을 만들었다.DFS로 풀 생각을 했는데 이렇게 배열로 가능한 경우를 저장해두는 식이라 for문으로만 가도 풀 수 있었다.for문으로 가지만, 딕셔너리 key가 dfs에서의 다음 노드를 의미하기 때문에 DFS 방식인건 변함없다. 이렇게 해서 마지막에서 두번째 원소의 딕셔너리 중에서 마지막 숫자랑.. 2025. 4. 8. [백준 13549] 숨바꼭질 3 (Swift) https://www.acmicpc.net/problem/13549 BFS점 N에서 K까지 이동하는데, -1,+1, *2 로 이동할 수 있다고 할 때 K까지 가장 빠르게 도착할 수 있는 시간 출력하기 접근방법이 문제는 숨바꼭질 2랑 아주 비슷한 문제다.차이점은 -1,+1만큼 이동할 때는 1초가 걸리지만 *2 만큼 이동할 때는 순간이동이라 0초가 걸린다는 것그리고 가장 빨리 도착한 시간과 경우의 수를 출력하는 게아니라 가장 빨리 도착한 시간만 출력해주면 된다는 거그래서 숨바꼭질 2 코드에서 *2 하는 경우에서 nowdist+1을 대입하는게 아니라 nowdist를 그대로 대입해주었고,경우의 수를 계산하는 코드를 지워서 제출했다. 뭔가 숨바꼭질4는 경우의 수 세라는 문제일 것 같긴한데 소스코드 import F.. 2025. 4. 7. [iOS] Under the hood: SwiftUI (번역 및 정리) 얼마전에 WWDC 관련 영상 보다가스유 관련 블로그 글도 추천받았는데요.그 중 하나가 Medium에 있는 Under the hood: SwiftUI 였습니다.https://medium.com/ios-gems/under-the-hood-swiftui-93ae7f0ae830 Under the hood는 그 이면의, 겉으로는 드러나지 않은 내부 동작을 말하는데요,이 블로그에서는 SwiftUI가 내부적으로 어떻게 동작하는지,9가지 주제로 이야기 하고 있습니다. (인터뷰 형식) 스유에 대해서 조금만 알고 있어도 어느정도 이해할 수 있는 수준의 내용이었구요.제가 이해한 언어로 풀어서 정리를 해보겠습니다. 인트로에서는 우선 SwiftUI는 "UI를 만드는 간단한, 선언적 프레임워크"라고 소개합니다.하지만 그 내부.. 2025. 4. 4. [백준 11559] puyo puyo (Swift) https://www.acmicpc.net/problem/11559DFS & 시뮬레이션뿌요뿌요 게임 = 테트리스 (근데 이제 같은 색깔 칸이 4칸이상 모이면 터지는)터지면 빈 공간에 그 위에 있던 뿌요들이 내려와서 그 공간을 메운다.다행히 위에서 계속 뿌요가 새로 추가되진 않음.한판의 상황을 보고, 그때 터질 수 있는 모든 뿌요들이 터지는 데 이걸 1연쇄라고 한다.연속적으로 몇번의 연쇄가 일어나는지 출력하는 문제 접근방법1. 모든 칸을 보면서, 판에서 뿌요를 찾는다.1-2. 그 뿌요와 인접한 같은 색 뿌요들을 찾아서 좌표를 모은다. (DFS)1-3. 그 뿌요들이 4개 이상일 경우 터뜨린다 (그 자표들을 모두 "." 으로 바꿈)2. 뿌요를 한번이라도 터뜨렸을 경우 연쇄 1번 추가로 카운팅, 한번도 못터뜨린.. 2025. 4. 3. [iOS] 프로토콜 지향 프로그래밍 (POP) 프로토콜특정 역할을 하기 위한 메서드, 프로퍼티, 기타 요구사항 등의 청사진을 정의한 것구조체, 클래스, 열거형은 프로토콜을 채택해서 프로토콜의 요구사항을 구현함으로써 프로토콜을 준수하며, 트로토콜이 정의한 특정 기능을 수행할 수 있음. 프로토콜 요구사항프로토콜을 채택한 타입이 특정 기능을 수행하기 위해 필요한 프로퍼티나 메서드와 같은 기능.프로퍼티 요구프로토콜을 채택한 타입이 어떤 프로퍼티를 구현해야하는지 요구하는 것프로퍼티의 이름과 타입만 준수하면 됨. (연산 프로퍼티 or 저장 프로퍼티 무관)프로토콜이 해당 프로퍼티를 읽기 전용으로 할지, 읽고 쓰기가 모두 가능하게 할지 정함.타입 프로퍼티 (static 변수)를 요구하려면 static 키워드 사용 (class, static 구분없이)메서드 요구인스.. 2025. 4. 2. [백준 1949] 우수 마을 (Swift) https://www.acmicpc.net/problem/1949 DP & DFShttps://sio2whocode.tistory.com/296 SNS 얼리어답터 문제랑 완전 똑같은 문제임차이점은 그때는 최소 얼리어답터 수를 구하는 거였다면(이 문제로 치면 최소 우수마을의 수)지금은 우수마을의 주민 수의 최대 합을 구하는 문제 접근방법트리모양에서 DP를 적용해서 푼다고 생각하면, 나와 내 자식노드까지가 sub tree라고 보고내가 우수마을일 때, 내 자식노드들은 우수마을이면 안됨내가 우수마을이 아닐 때, 내가 자식 노드들은 우수마을이어도 되고, 아니어도 된다.이게 주된 로직이다. 다만 여기서는 내 인접 마을 중 하나는 우수마을이어야 되는데,내가 우수마을이 아닐 때, 내 자식 노드들이 우수마을이 아니어도 .. 2025. 4. 2. [백준 12851] 숨바꼭질 2 (Swift) https://www.acmicpc.net/problem/12851 BFS & DP N에서 K까지 가는데 -1, +1, *2 경우로 이동할 수 있다. 이때 가장 빠르게 도달하는 시간과 그에 대한 경우의 수를 구하는 문제 접근방법- BFS로 방문하고, 이미 방문했던 노드를 다시 큐에 넣지 않음- 세가지 경우로 이동할 때, 다음 노드가 처음 방문하는 노드라면 다음 노드까지의 최단거리(dist[next])를 지금 노드까지의 최단거리+1을 입력해준다. 그리고 그 거리로 도달하는 경우의 수 (cnt[next])에는 지금 노드의 최단경로 경우의수 (cnt[now])를 넣어준다. {지금 노드로의 제일빨리 도달하는 경우들이 모두 다음 노드로까지 갈 수 있다는 것이기 때문에}- 다음 노드가 처음 방문하는 노드가 아니고,.. 2025. 3. 31. [iOS] Network Calls (네트워크 호출) 오늘은 iOS에서 네트워크 호출 (Network Calls) 하기에 대해서 간단한 예제 코드와 함께 공부했다. 네트워크 호출을 해야하는 이유는iOS 앱에서 사용자에게 데이터를 보여주기 위해서는 서버에 있는 데이터를 가져와서보기 좋게 유저에게 보여주어야 하기 때문이다. ☁️ (서버) --- 💾 (데이터) --> 📱(아이폰) 바로 여기서 서버에서 데이터를 가져오기에서 필요한 것이네트워크 호출이다. 우선, 그럼 그 데이터가 어떤 것인지 잠시 설명하자면,주로 요즘 우리가 서버에서 받아오는 데이터의 형태는JSON (Java Script Object Notation?) 이다. JSON은 이렇게 key와 value로 이루어진 데이터의 형식이다.대부분 문자열 형태이기 때문에 ""로 감싸져있다.데이터가 예를 들어 .. 2025. 3. 28. [iOS] View Life Cycle (UIKit) viewDidLoad()뷰가 메모리에 생성됐을 때 호출됨 (최초 1번)뷰에 속한 내용들이 모두 메모리에 로드된 후에 호출되기 때문에, viewdidload를 실행할 때는 outlet 과 같은 변수들에 모두 값이 채워져있음이 보장됨viewWillAppear()뷰가 App의 뷰 계층에 추가될 때 호출됨 (스크린에 뷰가 뜨기 바로 직전 → 뷰가 뜰 때 마다 호출)*주의점: 뷰가 처음 생성될 때만 viewDidLoad()가 실행되기 때문에, 만약 A뷰를 띄우고 B뷰로 넘어갔다가 다시 A뷰로 돌아오는 경우 viewDidLoad()는 실행되지 않지만 viewWillAppear()는 실행됨. 따라서 화면이 뜰 때 마다 실행되어야 하는 코드는 viewWillAppear()에 속해야한다.viewDidAppear()뷰가 .. 2025. 3. 28. [백준 8911] 거북이 (Swift) https://www.acmicpc.net/problem/8911 시뮬레이션격자판에서 0,0 점에서 거북이를 앞,뒤로 이동하거나 오른쪽,왼쪽으로 회전하는 명령들이 주어지면그 명령대로 거북이가 이동했을 때 지나는 모든 점을 포함하는 최소 사각형의 넓이를 구하는 문제 접근방법휴 격자판 나오면 늘 긴장하게 됨. 칸을 이동하는건 자신있는데 선을 따라 이동하는건 좀 어려운 것 같다.근데 마음을 다잡고 문제를 풀어보니깐 이번 문제는 꽤 잘 풀렸다!우선 어떻게 지나는 모든 점들을 포함하는 최소 직사각형의 넓이를 구하는 걸 먼저 생각했는데생각해보니 넘 간단했다. 그냥 모든 점들의 최소x, 최대x, 최소y, 최대y를 구해서 가로 길이(최대x-최소x)와 세로길이(최대y-최소y)를 구해서 곱해주면 되는 거였음 그리고 방향전.. 2025. 3. 27. 이전 1 2 3 4 ··· 26 다음 728x90