https://www.acmicpc.net/problem/16234 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net dfs를 사용해서 그룹으로 묶은 후 그룹의 평균값 구해서 다시 배열에 삽입. 만약 리턴된 그룹의 count 값이 1개보다 커야지만 그룹 배열에 그룹을 추가. for문을 다 돈후 그룹 배열의 count가 0이면은 더이상 인구를 나눌 수 없으므로 break하게 했다. 날짜수 카운트는 인구가 다 이동하고 난 후 카운트가 되도록 하는 것이 문제 조건이므로 이를 유의해야 함. import F..
https://www.acmicpc.net/problem/20055 20055번: 컨베이어 벨트 위의 로봇 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부 www.acmicpc.net 고민한 부분 컨베이어 벨트를 회전시키는 부분에서 고민이 좀 있었다. 처음에는 2차원 배열로 요소들을 한칸씩 이동 시키는 방식을 생각했지만, 컨베이어 벨트를 잘라서 펼치면 결국엔 한줄이 되고 양 끝이 서로 이어져 있으므로 기존 컨베이어 벨트 배열이 1 2 3 4 5 6 이면 removelast와 insert로 마지막 요소를 배열의 첫번째에 넣어주면 2 3 4 5 6 1 이렇게 ..
이번 새싹 LSLP에서 많은 API를 사용하게 되면서 API마다 response값을 별도로 관리함이 필요하다고 느꼈다. http프로토콜을 이용해 response를 받을 때, statuscode를 이용해 response의 유효성을 검증하고, 응답 에러(사용자가 유효하다고 정의한 response를 제외한 response)를 받을 경우 이를 대응해야 한다. 이를 위해 다음과 같이 필요한 기능을 및 문제를 정의했다. API가 많아 질수록 응답 에러 정의에 어려움과 처리가 어려워짐 응답 에러마다 수행할 작업 정의 (alert로 이벤트 전달, 재시도 등..) alert에 들어갈 description과 title 핸들링 API 응답 에러 정의 및 처리의 어려움 API 양이 많아질수록 이를 한 군데 에서 정의 및 처리..
URLSession으로 http프로토콜을 이용해 POST, PUT 통신을 할 때 기본적으로 Reqeust의 헤더에 Content-Type에 application/json을 붙여서 사용했는데, 이번에는 http프로토콜을 이용해 multipart/form으로 이미지를 전송해 보았다. multipart/form 방식은 기존 application/json과 다르게 body를 json으로 보내는 것이 아닌 보내는 데이터를 여러 개로 쪼개서 보내는 방식이다. Multipart/form Header func settingHeader(identifier: String, request: URLRequest) -> URLRequest { var copyReq = request let contentType = "multi..
문제 swiftUI로 프로젝트를 진행하다가 PHPickerViewController를 이용해서 이미지를 선택하는 기능을 구현하려고 UIViewControllerRepresentable로 감싸서 이를 sheet로 띄우니 끌어서 닫는 기능이 작동하지 않았다. 일단 뷰 계층을 살펴보니 PresentationHostingController위에 PHPickerViewController가 덮여있는 것을 볼 수 있다. PUPickerRemoteViewController는 뭔지 모름. (검색해도 안 나옴) 원인 구글링 좀 해보니 UIKit의 pan gesture 같은 제스처 이벤트가 UIKit의 ViewController에서 일어날 시, swiftUI의 뷰에 전달하지 않고 ViewController가 그대로 받아 버..
https://www.acmicpc.net/problem/1713 1713번: 후보 추천하기 첫째 줄에는 사진틀의 개수 N이 주어진다. (1 ≤ N ≤ 20) 둘째 줄에는 전체 학생의 총 추천 횟수가 주어지고, 셋째 줄에는 추천받은 학생을 나타내는 번호가 빈 칸을 사이에 두고 추천받은 순서대 www.acmicpc.net Dictionary, Tuple를 이용하여 구현. 제거할 후보를 구하는 로직은 처음에는 우선순위 큐를 이용할까 싶었지만, 정렬을 이용. 처음 풀었을때는 정렬을 사용하지 않고 각 Case 별로 구현했지만 이런식으로 하는게 좀 더 쉬운듯하다. import Foundation let n = Int(readLine()!)! let recommendNum = Int(readLine()!)! let..