문제 정보 문제 출처: 백준 온라인 저지 문제 링크: 14719번 빗물 제출 언어: Swift 알고리즘 분류: 구현 시뮬레이션 문제 2차원 세계에 블록이 쌓여있다. 비가 오면 블록 사이에 빗물이 고인다. 비는 충분히 많이 온다. 고이는 빗물의 총량은 얼마일까? 입력 첫 번째 줄에는 2차원 세계의 세로 길이 H과 2차원 세계의 가로 길이 W가 주어진다. (1 ≤ H, W ≤ 500) 두 번째 줄에는 블록이 쌓인 높이를 의미하는 0이상 H이하의 정수가 2차원 세계의 맨 왼쪽 위치부터 차례대로 W개 주어진다. 따라서 블록 내부의 빈 공간이 생길 수 없다. 또 2차원 세계의 바닥은 항상 막혀있다고 가정하여도 좋다. 출력 2차원 세계에서는 한 칸의 용량은 1이다. 고이는 빗물의 총량을 출력하여라. 빗물이 전혀 고..
문제 정보 문제 출처: 백준 온라인 저지 문제 링크: 2504번 괄호의 값 제출 언어: Swift 알고리즘 분류: 구현 자료 구조 스택 문제 4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과 같이 정의된다. 한 쌍의 괄호로만 이루어진 ‘()’와 ‘[]’는 올바른 괄호열이다. 만일 X가 올바른 괄호열이면 ‘(X)’이나 ‘[X]’도 모두 올바른 괄호열이 된다. X와 Y 모두 올바른 괄호열이라면 이들을 결합한 XY도 올바른 괄호열이 된다. 예를 들어 ‘(()[[]])’나 ‘(())[][]’ 는 올바른 괄호열이지만 ‘([)]’ 나 ‘(()()[]’ 은 모두 올바른 괄호열이 아니다. 우리는 어떤 올바른 괄호열 X에 대하여 그 괄호열의 값(괄호값)을 아래와 ..
문제 정보 문제 출처: 백준 온라인 저지 문제 링크: 14888번 연산자 끼워넣기 제출 언어: Swift 알고리즘 분류: 브루스포스 백트래킹 DFS 문제 N개의 수로 이루어진 수열 A1, A2, ..., AN이 주어진다. 또, 수와 수 사이에 끼워넣을 수 있는 N-1개의 연산자가 주어진다. 연산자는 덧셈(+), 뺄셈(-), 곱셈(×), 나눗셈(÷)으로만 이루어져 있다. 우리는 수와 수 사이에 연산자를 하나씩 넣어서, 수식을 하나 만들 수 있다. 이때, 주어진 수의 순서를 바꾸면 안 된다. 예를 들어, 6개의 수로 이루어진 수열이 1, 2, 3, 4, 5, 6이고, 주어진 연산자가 덧셈(+) 2개, 뺄셈(-) 1개, 곱셈(×) 1개, 나눗셈(÷) 1개인 경우에는 총 60가지의 식을 만들 수 있다. 예를 들..
문제 [Codility] https://app.codility.com/programmers/lessons/3-time_complexity/tape_equilibrium/ A non-empty array A consisting of N integers is given. Array A represents numbers on a tape. Any integer P, such that 0 < P < N, splits this tape into two non-empty parts: A[0], A[1], ..., A[P − 1] and A[P], A[P + 1], ..., A[N − 1]. The difference between the two parts is the value of: |(A[0] + A[1] + ..
Delegate Pattern 💡 특정 다른 클래스에 있는 어떠한 행동을 하고 싶을 때, 상속을 사용하는 대신 delegate라는 위임자를 선언하여 다른 클래스의 행동을 재사용하도록 하는 것. 이때, 위임할 클래스에 위임한 내용을 수신받을 클래스의 객체를 참조하도록 해줘야된다 *"Delegate는 어떤 객체가 해야 하는 일을 부분적으로 확장해서 대신 처리를 한다."* delegate 는 위임자라고 해석할 수 있다. 위임자를 갖고 있는 객체가 다른 객체에게 자신이 해야하는 일을 위임하는 형태의 디자인 패턴 클래스 상속과 동일하게 코드를 재사용할 수 있도록 하는 객체 지향 디자인 패턴이다 swift 에서의 Delegate Pattern 구현 : 어떠한 클래스에서 특정 protocol의 type을 가지는 de..
함수 swift문법에서 평소에 쓰던 함수에 대해 메모리 구조 혹은 @discardableResult과 같은 새로운 개념도 알게 되었고, 헷갈렸던 부분도 더욱 구체적으로 알게되었다 배운 내용들을 정리하고 예제도 만들어보고 내 생각도 덧붙이면서 지식을 공유하고자 한다 함수는 특정한 기능을 하는 코드의 모음이고, 입력과 출력이 존재할 수 있다 함수는 코드의 반복되는 부분을 줄이고 기능에 따라 분류해놓기 위해 사용된다 예를 들어 a와 b에 다양한 수를 넣어 a를 b만큼 출력하는 알고리즘을 작성하려고 할 때, var a = 2 var b = 3 for i in 1...b { print(a) } a = 6 b = 4 for i in 1...b { print(a) } a = 13 b = 33 for i in 1.....
클래스와 구조체는 어떻게 다를까?? 1. 클래스와 구조체 같은 데이터들을 가지고 있는 데이터 묶음을 정의해두는 틀 동일한 종류의 값들 (이름, 나이, 성별 등)을 가지고 있는 객체들을 생성할 때, 공통으로 사용되는 부분을 미리 정의해놓는것 즉, 객체를 생성하기 위한 설계도라고 할 수 있다 사용자 정의 타입 : String, Int와 같은 타입을 사용자가 정의한다 → Optional 처리 가능 프로퍼티, 메서드로 구성 데이터 모델링 시 주로 사용 .(점문법)으로 내부의 멤버( 프로퍼티, 메소드)에 접근 //데이터 묶음을 정의 (사용자가 직접 type 생성) class Vehicle { //프로퍼티(변수) var wheelCount: Int = 4 var name: String = "car" //메서드(함수..
Introduce 간단한 앱을 구현하고 다양한 기능들을 추가하며 앱 생성 시 어려웠던 점들이나 알게된 점들을 기록해보고자 글을 쓰기로 하였다 Account Book 이번 프로젝트는 가계부 구현하기이다 사용자에게 다양한 정보를 입력받아서 가계부 list에 추가한다 각 가계부 정보들을, 금액, 메모, 카테고리등 다양한 종류의 데이터를 갖는다 메인화면 상단에는 정보들을 입력받는 버튼과 전체 삭제버튼 중앙에는 가계부 list 하단에는 Category별로 list를 필터링하여 나타낼 수 있는 picker와 총 지출, 수입, 총 자산 등 현재 상황을 나타내주는 Text칸이 있다 이 칸은 list에 정보가 업데이트될 때마다 변한다 View sheet sheet는 임시적인 작업 뷰를 띄우고 싶을 때 사용한다 상단의 버..