[Silver II] N번째 큰 수 - 2075 문제 링크 성능 요약 메모리: 149928 KB, 시간: 680 ms 분류 자료 구조, 우선순위 큐, 정렬 문제 설명 N×N의 표에 수 N2개 채워져 있다. 채워진 수에는 한 가지 특징이 있는데, 모든 수는 자신의 한 칸 위에 있는 수보다 크다는 것이다. N=5일 때의 예를 보자. 12 7 9 15 5 13 8 11 19 6 21 10 26 31 16 48 14 28 35 25 52 20 32 41 49 이러한 표가 주어졌을 때, N번째 큰 수를 찾는 프로그램을 작성하시오. 표에 채워진 수는 모두 다르다. 입력 첫째 줄에 N(1 ≤ N ≤ 1,500)이 주어진다. 다음 N개의 줄에는 각 줄마다 N개의 수가 주어진다. 표에 적힌 수는 -10억보다 크거나 같고..
[Silver II] 최대 힙 - 11279 문제 링크 성능 요약 메모리: 70668 KB, 시간: 736 ms 분류 자료 구조, 우선순위 큐 문제 설명 널리 잘 알려진 자료구조 중 최대 힙이 있다. 최대 힙을 이용하여 다음과 같은 연산을 지원하는 프로그램을 작성하시오. 배열에 자연수 x를 넣는다. 배열에서 가장 큰 값을 출력하고, 그 값을 배열에서 제거한다. 프로그램은 처음에 비어있는 배열에서 시작하게 된다. 입력 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0이라면 배열에서 가장 큰 값을 출력하고 그 값을 배열에서 제거하는 경우이다. ..
[Silver IV] 괄호 - 9012 문제 링크 성능 요약 메모리: 69100 KB, 시간: 8 ms 분류 자료 구조, 스택, 문자열 문제 설명 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 부른다. 한 쌍의 괄호 기호로 된 “( )” 문자열은 기본 VPS 이라고 부른다. 만일 x 가 VPS 라면 이것을 하나의 괄호에 넣은 새로운 문자열 “(x)”도 VPS 가 된다. 그리고 두 VPS x 와 y를 접합(concatenation)시킨 새로운 문자열 xy도 VPS 가 된다. 예를 들어 “(())()”와 “((()))” 는 V..
Swift API Design Guidelines 이번 내용은 Swift API Design Guidelines에 대한 내용입니다. Convention을 맞추어 코딩을 하는 것도 협업의 일부라고 생각하기 때문에 이번 기회에 정리해보고자 합니다. 티스토리가 리스트로 작성하는 데 생각대로 되지 않아서(그렇다고 HTML로 작성하기엔 귀,,찮),, 리스트의 계층을 ● → ○ → ■ 순서로 봐주시면 좋을 것 같습니다. 기본 ● 사용에 대한 명확성(Clarity at the point of use)이 가장 중요한 목표입니다. 메소드와 속성과 같은 엔티티들은 한 번만 선언되지만 반복적으로 사용됩니다. 정확하고 명확하게 API를 디자인하십시오. ● 명확성이 간결성보다 더욱 중요합니다(Clarity is more imp..
NavigationStack A view that displays a root view and enables you to present additional views over the root view. iOS 16버전부터 업데이트된 NavigationStack에 대해 알아보고, 그와 관련된 예시를 보여드리겠습니다. NavigationStack은 기존의 NavigationView를 대체할 것으로, 루트 뷰를 보여주고, 루트 뷰에 대한 추가적인 뷰를 보여주는 것입니다. 사실 이름에서 알 수 있듯 화면을 네비게이션 형태로 넘겨주는 것인데, 스택의 방식을 사용하여 넘겨주는 것입니다. 스택의 특징과 같이 Push, Pop, Pop to root view 등의 개념을 인지하고 있다면 매우 유용합니다. @MainAc..
ViewModifier A modifier that you apply to a view or another view modifier, producing a different version of the original value. protocol ViewModifier Overview ViewModifier 프로토콜은 어떠한 뷰에서도 적용할 수 있는 재사용 가능한 modifier를 생성하는 것입니다. 예를 들어 SwiftUI를 통해 View를 만들 때, 글자 크기나 폰트 등이 공통적인 특성을 가지는 경우가 있습니다. 이러한 경우에 코드를 작성할 때 각각의 특성을 모두 작성하게 된다면, 코드의 가독성이 떨어지고 비효율적이게 됩니다. 따라서 이러한 공통적인 특성을 묶어서 관리하고 원할 때마다 해당하는 공통적인..