분류 전체보기
-
클로저(Closure) 란? 간단하게 말하면 클로저는 일정 기능을 하는 코드를 { } 로 모아놓은것을 말한다. 그리고 일반적인 func 로 선언되는 함수의 상위개념이 클로저이다. 왜 클로저라고 하지? 클로저는 변수, 상수가 선언된 스코프에서 참조를 캡쳐(저장) 할 수 있는데 이걸 클로징이라고 하며 그래서 클로저라고 이름붙여졌다. 클로저를 왜 쓰나? 스위프트는 함수형 프로그래밍 패러다임이라고 하는데, 이러한 스타일에 클로저가 중요한 역할을 한다. 클로저를 제네릭, 프로토콜, 모나드와 함께 사용하면서 스위프트는 더 강력한 언어가 될 수있다. 클로저의 형태(종류) 이름이 있고, 값을 캡쳐하지 않고, 전역함수의 형태 이름이 있고, 다른 함수의 값을 캡쳐하는 중첩된(nested) 함수 형태 이름 없고, 주변 co..
(Swift) - 클로저 (Closure)클로저(Closure) 란? 간단하게 말하면 클로저는 일정 기능을 하는 코드를 { } 로 모아놓은것을 말한다. 그리고 일반적인 func 로 선언되는 함수의 상위개념이 클로저이다. 왜 클로저라고 하지? 클로저는 변수, 상수가 선언된 스코프에서 참조를 캡쳐(저장) 할 수 있는데 이걸 클로징이라고 하며 그래서 클로저라고 이름붙여졌다. 클로저를 왜 쓰나? 스위프트는 함수형 프로그래밍 패러다임이라고 하는데, 이러한 스타일에 클로저가 중요한 역할을 한다. 클로저를 제네릭, 프로토콜, 모나드와 함께 사용하면서 스위프트는 더 강력한 언어가 될 수있다. 클로저의 형태(종류) 이름이 있고, 값을 캡쳐하지 않고, 전역함수의 형태 이름이 있고, 다른 함수의 값을 캡쳐하는 중첩된(nested) 함수 형태 이름 없고, 주변 co..
2021.08.14 -
일급 객체 (First class citizen) 일급 객체의 종류 정수 및 실수와 같이 간단한 스칼라 자료형들은 대부분 일급 객체이다. 일부 객체지향 언어에서는 클래스를 일급 객체로 취급한다. 정의 일급 시민을 변수 및 상수에 저장 및 할당할 수 있어야한다. 일급 객체를 전달인자(Argument)로 사용 가능해야한다. 변수에 할당 가능 비교 연산이 가능 위 정의에서 일급시민을 함수로 치환해보면 무슨말인지 이해하기가 쉽다. 코드로 예를 들어보면 1. 일급 시민을 변수 및 상수에 저장 및 할당할 수 있어야한다. func firstCitizen(param: Int){ print(param) } let constant = firstCitizen 2. 일급 객체를 전달인자(Argument)로 전달 가능해야한다...
(Swift) - 일급 객체 (First class citizen)일급 객체 (First class citizen) 일급 객체의 종류 정수 및 실수와 같이 간단한 스칼라 자료형들은 대부분 일급 객체이다. 일부 객체지향 언어에서는 클래스를 일급 객체로 취급한다. 정의 일급 시민을 변수 및 상수에 저장 및 할당할 수 있어야한다. 일급 객체를 전달인자(Argument)로 사용 가능해야한다. 변수에 할당 가능 비교 연산이 가능 위 정의에서 일급시민을 함수로 치환해보면 무슨말인지 이해하기가 쉽다. 코드로 예를 들어보면 1. 일급 시민을 변수 및 상수에 저장 및 할당할 수 있어야한다. func firstCitizen(param: Int){ print(param) } let constant = firstCitizen 2. 일급 객체를 전달인자(Argument)로 전달 가능해야한다...
2021.08.13 -
문제 링크 : https://www.acmicpc.net/problem/4796 4796번: 캠핑 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, L, P, V를 순서대로 포함하고 있다. 모든 입력 정수는 int범위이다. 마지막 줄에는 0이 3개 주어진다. www.acmicpc.net 난이도 : silver 5 스위프트 코드(swift) import Foundation func getDays(_ arr: Array)->Int{ let l = arr[0], p = arr[1], v = arr[2] var days = v/p*l if l >= v%p { days += v%p }else{ days += l } return days } var cnt = 1 whil..
(swift) [백준/Boj] 4796번: 캠핑문제 링크 : https://www.acmicpc.net/problem/4796 4796번: 캠핑 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, L, P, V를 순서대로 포함하고 있다. 모든 입력 정수는 int범위이다. 마지막 줄에는 0이 3개 주어진다. www.acmicpc.net 난이도 : silver 5 스위프트 코드(swift) import Foundation func getDays(_ arr: Array)->Int{ let l = arr[0], p = arr[1], v = arr[2] var days = v/p*l if l >= v%p { days += v%p }else{ days += l } return days } var cnt = 1 whil..
2021.08.10 -
문제 링크 : https://www.acmicpc.net/problem/1789 1789번: 수들의 합 첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다. www.acmicpc.net 난이도 : silver 5 스위프트 코드(swift) 최대한 여러개의 자연수를 사용해야 하기 때문에, 1부터 더해주는 while문을 만든다. 그리고 더해가다가 문제에서 들어온 입력값 S와 딱 떨어지게 된다면, 그때까지 카운팅 한 값을 반환해준다. 문제 입력값 S보다 오버된다면 >> 예를들어 S= 120인데, 1씩 더하다보니 나중에 17이 오버되었다. -> 그냥 17을 빼주면 되니까 answer -= 1을 해주고 반환하면 된다. import Foundation let S = Int(readLine()!..
(swift) [백준/Boj] 1789번: 수들의 합문제 링크 : https://www.acmicpc.net/problem/1789 1789번: 수들의 합 첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다. www.acmicpc.net 난이도 : silver 5 스위프트 코드(swift) 최대한 여러개의 자연수를 사용해야 하기 때문에, 1부터 더해주는 while문을 만든다. 그리고 더해가다가 문제에서 들어온 입력값 S와 딱 떨어지게 된다면, 그때까지 카운팅 한 값을 반환해준다. 문제 입력값 S보다 오버된다면 >> 예를들어 S= 120인데, 1씩 더하다보니 나중에 17이 오버되었다. -> 그냥 17을 빼주면 되니까 answer -= 1을 해주고 반환하면 된다. import Foundation let S = Int(readLine()!..
2021.08.10 -
문제 링크 https://www.acmicpc.net/problem/1439 1439번: 뒤집기 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모 www.acmicpc.net 난이도 : Silver 5 스위프트 코드(swift) flag를 통해 연속된 수열인지 파악한다. flag는 바로 이전의 수가 0이었는지, 1이었는지를 임시적으로 기억하는 용도이다. import Foundation func parse(_ arr: Array)->Int{ var zeroPart = 0 var onePart = 0 var flag = 0 if arr[0] == "0" { fl..
(swift) [백준/Boj] 1439번 : 뒤집기문제 링크 https://www.acmicpc.net/problem/1439 1439번: 뒤집기 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모 www.acmicpc.net 난이도 : Silver 5 스위프트 코드(swift) flag를 통해 연속된 수열인지 파악한다. flag는 바로 이전의 수가 0이었는지, 1이었는지를 임시적으로 기억하는 용도이다. import Foundation func parse(_ arr: Array)->Int{ var zeroPart = 0 var onePart = 0 var flag = 0 if arr[0] == "0" { fl..
2021.08.10 -
문제 링크: https://www.acmicpc.net/problem/1316 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때 www.acmicpc.net 난이도: Silver 5 스위프트 코드: import Foundation let T = Int(readLine()!) var answer = 0 var alpha = Array("abcdefghijklmnopqrstuvwxyz") func check(_ c: Character)->Int{ if let idx = alpha.firstIndex(of: c)..
(swift) [백준/Boj] 1316번 : 그룹 단어 체커문제 링크: https://www.acmicpc.net/problem/1316 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때 www.acmicpc.net 난이도: Silver 5 스위프트 코드: import Foundation let T = Int(readLine()!) var answer = 0 var alpha = Array("abcdefghijklmnopqrstuvwxyz") func check(_ c: Character)->Int{ if let idx = alpha.firstIndex(of: c)..
2021.08.09