[Silver II] 연속합 - 1912 문제 링크 성능 요약 메모리: 76112 KB, 시간: 32 ms 분류 다이나믹 프로그래밍 제출 일자 2024년 1월 22일 00:35:22 문제 설명 n개의 정수로 이루어진 임의의 수열이 주어진다. 우리는 이 중 연속된 몇 개의 수를 선택해서 구할 수 있는 합 중 가장 큰 합을 구하려고 한다. 단, 수는 한 개 이상 선택해야 한다. 예를 들어서 10, -4, 3, 1, 5, 6, -35, 12, 21, -1 이라는 수열이 주어졌다고 하자. 여기서 정답은 12+21인 33이 정답이 된다. 입력 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 ..
ios
Dijkstra’s Algorithm 구글 맵이나 애플 지도에서 다른 지역으로의 최소 거리나 최단 시간을 알려주는 것을 사용해보셨나요? 다익스트라 알고리즘(Dijkstra’s algorithm)은 GPS 네트워크 기반의 두 장소 간의 최단 거리를 찾는 데에 매우 유용합니다. 다익스트라 알고리즘은 그리디 알고리즘입니다. 그리디 알고리즘은 문제를 단계별로 해결하면서 해당 단계에서 가장 최선의 경로를 선택합니다. 이는 어떠한 경로에서는 비용이 더 많이 들 수도 있지만, 전체적인 비용은 더 낮습니다. 그럼에도 불구하고, 꽤 좋은 솔루션을 매우 빠르게 제시해줍니다. 다익스트라 알고리즘은 유방향 그래프나 무방향 그래프의 정점 사이에서 가장 짧은 경로를 제시해줍니다. 그래프에 정점이 주어져있다면, 이 알고리즘은 시작..
BFS(Breadth-First Search) 지난 장에서는 객체들의 관계를 파악하기 위해 그래프를 사용하였습니다. 그래프는 정점(vertices)과 간선(edges)은 객체들 간의 관계를 표현합니다. 여러 알고리즘은 그래프의 정점을 탐색하거나 순회하기 위해 존재합니다. 이러한 알고리즘 중 하나는 너비 우선 탐색(BFS) 알고리즘입니다. BFS는 다양한 문제들을 해결할 수 있습니다. 최소 신장 트리를 만들 수 있습니다. 정점 간의 잠재적 경로를 찾을 수 있습니다. 두 정점 간 가장 짧은 경로를 찾을 수 있습니다. 신장 트리란 (Spanning Tree) 그래프 내의 모든 정점을 포함하는 트리입니다. 그래프의 최소 연결 부분 그래프입니다. 최소 연결이므로 간선의 수가 가장 적습니다. n개의 정점을 가지는 ..
,(콤마)와 &&(앰퍼샌드) 스위프트 문법을 공부를 하다보면 if문에서 ,(콤마)를 사용하는 경우도 있고 &&(앰퍼샌드)를 사용하는 경우도 있었습니다. 하지만 이 둘의 차이점에 대해 몰랐었기 때문에, 이번 기회에 이 둘의 차이점을 알아보고자 합니다. && 우선 &&에 대해 알아보겠습니다. &&는 논리 연산자로, 여러 개의 boolean expression을 하나의 boolean expression으로 연산해줍니다. 예를 들어 true인 boolean A와 false인 boolean B가 있을 때, A && B는 두 개가 모두 참이어야 true가 되고, 그렇지 않으면 false를 반환합니다. 즉, 두 개(A와 B)의 boolean expression을 하나(false)의 boolean expression으..
이번 글은 UIKit 프레임워크를 스토리보드를 사용하지 않는 코드 기반으로 세팅하는 방법에 대해 알아보겠습니다. 스토리보드와 코드 베이스에는 장단점이 존재합니다. 우선 스토리보드의 장점은 어노테이션이나 컴포넌트와 관련된 코드를 줄일 수 있어 로직에 더욱 집중할 수 있습니다. 뷰가 복잡해질 수록 관리할 코드가 줄어들기 때문에 관리하게 편해집니다. 또한 오토 레이아웃을 시각적으로 보여주어 오류를 쉽게 파악할 수 있습니다. 단점은 스토리보드는 xml 기반이기 때문에 다른 개발자가 확인하기에 어렵다는 문제점이 있습니다. 스토리보드를 수정하고 PR를 요청했을 때, 다른 개발자가 코드만을 보고 변화를 확인하기 어렵다는 단점이 있습니다. 또한 뷰에 컴포넌트가 추가되어 복잡해질수록 파일이 무거워진다는 단점도 있습니다...
이번 글은 SwiftLint를 적용하는 방법에 대해 알아보도록 하겠습니다. SwiftLint란 SwiftLint란 스위프트 스타일 및 컨벤션을 강제하기 위한 도구로, Kodeco 스위프트 스타일 가이드에 대략적인 기반을 두고 있습니다. 협업을 진행할 때, 컨벤션을 정하고 이를 준수하기 위해 코드 리뷰 등을 진행하지만, 컨벤션에 맞지 않는 경우가 생길 수 있습니다. 이러한 경우를 위해 SwiftLint를 사용하면, 컨벤션에 맞지 않는 부분을 알려주기 때문에 컨벤션을 지키는데 도움을 줍니다. SwiftLint 사용하기 1. SwiftLint 설치하기 우선 SwiftLint를 사용하기 위해선 SwiftLint를 설치해주어야 합니다. brew로 설치할 수도 있고, cocoapods로 프로젝트 자체에 추가해서 사..
12월 5일 파이널 쇼케이스를 끝으로 길다면 길고, 짧다면 짧은 Apple Developer Academy @ POSTECH에서의 생활이 종료되었습니다. 나름 바쁘게 살아와서 그런지 9개월이란 시간이 매우 빠르게 지나갔다고 느껴졌는데, 이곳에서 경험한 것들을 까먹지 전에 정리하고자 작성하게 되었습니다. 해당 글은 프로젝트에 대한 자세한 설명보단 각 프로젝트에 대한 전반적인 느낌 위주로 설명하고자 합니다. (프로젝트들에 대한 설명도 작성할 예정인데, 각 프로젝트마다 따로 작성할 예정입니다.) 참고로 밑에서 나타나는 MC는 mini challenge의 약자입니다. Prelude & MC1 해당 기간에는 사실 새로운 사람들과 친해지고, 아카데미에 적응하는 기간이었던 것 같습니다. 오전반만해도 100명의 사람들..
개요 앱 개발을 한다면 혼자서 개발을 하는 경우도 있지만, 협업을 통해 진행하는 경우가 대다수입니다. iOS를 협업으로 진행해보신 분들은 아실 수 있는데, 협업을 진행할 때 다른 사람이 수정한 파일을 pull 받아서 실행하려고 하면 Bundle Identifier와 관련된 문제로 인해 실기기를 빌드할 수가 없는 경우를 겪을 수 있습니다. 혼자 개발할 때는 다음과 같이 Automatically manage sigining이 선택되어 있는 상태에서 실기기를 실행시켜도 문제가 발생하지 않습니다. Automatically manage signing을 선택해두면, xcode가 자체적으로 Provisioning Profile을 생성하고, 해당 Provisioning Profile에는 App ID, Certifica..