전체 글

· → Problems
문제 소개https://www.acmicpc.net/problem/11724연결 요소의 갯수를 출력하는 문제이다. 문제 풀이아래와 같이 그래프를 만들어서 dfs로 순회하는 식으로 문제를 풀었다.import Foundation let nm = readLine()!.split(separator: " ").map{ Int(String($0))! } let (n, m) = (nm[0], nm[1]) var graph = Array(repeating: Array(repeating: 0, count: n+1), count: n+1) var visited = Array(repeating: false, count: n+1) visited[0] = true for _ in 0..
· → Problems
문제 소개https://www.acmicpc.net/problem/1260문제에서 아예 솔직하게 DFS, BFS로 탐색해봐라 라는 문제이다. 문제 풀이BFS가 익숙하지 않아서 조금 어려움을 겪었다. 큐를 사용하여 BFS를 구현하였다.import Foundation let nmv = readLine()!.split(separator: " ").map{Int(String($0))!} let (n, m, v) = (nmv[0], nmv[1], nmv[2]) var graph = Array(repeating: Array(repeating: 0, count: n+1), count: n+1) for _ in 0..
· → Problems
문제 소개https://www.acmicpc.net/problem/13023 문제풀이문제를 보고 가장 먼저 연결리스트가 떠올랐다. 연결리스트로 쭉 따라가서 depth가 5가 되면 1을 출력하면 된다는 것을 생각했다.import Foundation let nm = readLine()!.split(separator: " ").map{Int(String($0))!} let (n, m) = (nm[0], nm[1]) var people = [Int: [Int]]() for i in 0..
· → Problems
문제 소개나무를 어떻게 잘라야 하는지 결정해야하는 이진탐색 문제이다.  문제풀이이 문제를 보고 이진탐색을 바로 생각할 수 있는 이유는 어떠한 값을 넣게 되면 true, false로 나오게 되고, 어떠한 값들의 집합이 오름차순으로 되어있는 것을 볼 수 있다. 예를 들면 [1, 2, 3, 4, 5] 의 경우가 있을 때, 어떠한 로직에 의해서 [True, True, False, False, False] 로 바꿔줄 수 있다면 이진탐색으로 풀수있는 문제이다.import Foundationlet nm = readLine()!.split(separator: " ").map { Int($0)! }let (n, m) = (nm[0], nm[1])let trees = readLine()!.split(separator: "..
· → Solver
드디어 프로젝트 1차 배포를 완료하였다. 물론 앱 심사를 진행 중이지만 Thread Sanitizer으로부터 아무런 경고도 받지 못했고, 실기기에서도 테스트하여 MVP기능에는 큰 문제가 없다고 판단하여 앱을 빌드하고 심사를 요청했다. 그리고 심사 승인까지 하루정도 걸린 것 같다.  링크는 아래와 같다 😌 ‎Solver‎백준 Solved.ac 프로필 앱    apps.apple.com 앱 기능1. 백준 아이디 등록 (Solved.ac에 등록이 되어야 함)아래와 같이 백준 아이디를 입력하게 되면, 따로 비밀번호 입력없이 아이디의 정보를 조회할 수 있다. 약간 OP.GG 사이트와 비슷하다고 보면 된다.2. 백준 프로필 확인아래와 같이 아이디를 입력하게 되면 백준 프로필을 확인할 수 있다. 아래는 내가 푼 상..
· → Solver
프로젝트를 진행하던 도중 문제가 발생했다!!! :) 문제는 SwiftData에서 발생했다. 😂 진행 상황아래와 같이 Clean Architecture의 형태로 만들고 있었는데 Entity, Data, UseCase, Store까지 쭈욱 코드를 작성해나가고 있었다. API 호출 관련 부분까지는 문제가 없었는데... 위와 같이 구현하게 된다면, SwiftData를 Entity로 써야 하는데, SwiftData의 ModelContext가 View로부터 분리가 힘들다는 문제점에서 발생했다. SwiftData는 ModelContext를 @Environment(\.modelContext) private var context 처럼 View에서 가져오는 방법밖에 없었다. 그렇게 된다면 Use case는 반드시 Vie..
· → Solver
사용할 API 정리 아래의 공식문서를 참고하여 앱에 필요한 API를 정리했다. @solvedac/unofficial-documentation 이 프로젝트는 solved.ac API를 문서화하는 커뮤니티 프로젝트입니다. 이 저장소는 원작자의 요청에 따라 언제든 지워질 수 있으며, 현재 API와 일치하지 않을 수도 있는 점 양해 부탁드립니다. solvedac.github.io 앱의 MVP 설정 및 기본 플로우 아이디를 입력하면 내 Solved.ac아이디를 기준으로 내 정보를 보여주는 것이 이 앱의 MVP이다. 알고리즘 공부 시간, 친구 추가, 경쟁 등 다양한 기능을 넣어보고 싶었지만 우선 아래와 같은 최소한의 기능만 우선 구현해 보기로 했다. Widget, Watch앱도 간단하게 만들어볼 예정이다. (이 부..
· → Problems
문제 소개 6064번: 카잉 달력입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터는 한 줄로 구성된다.www.acmicpc.net진법과 아주 비슷한 개념인데 진법은 위로 쌓아가지만 위의 카잉 달력은 해당 숫자가 넘으면 다시 1로 시작한다는 차이점이 있다. 풀이 방법m, n, x, y가 주어지는데 아래와 같이 볼 수 있다. 결국 a와 b를 구하라는 뜻인데, 단순하게 a를 0부터 차례로 대입해나가면 된다. 그리고 최대 연도(종말 연도)는 m과 n의 최소공배수로 볼 수 있다.year % m = xyear % n = yyear = ma + xyear = nb + y 내가 작성한 코드는 아래와 ..
Swift librarian
Swift Library