전체 글 78

IBOutlet, IBAction이란?

쉽게 말해, IBOutlet은 코드에 정의된 변수와 화면의 객체를 연결하는 것이고 IBAction은 Event가 일어난 경우 호출되는 Action을 정의해둔 것이다. IBOutlet이나 IBAction 태그를 통해 StoryBoard와의 연결고리를 담당한다. 변수나 함수를 정의할 때 앞에 @IBOutlet 또는 @IBAction 키워드를 작성해 StoryBoard에서 버튼이나 레이블같은 컴포넌트와 연결이 가능하다.

👩🏻‍💻/iOS 2020.06.26

에셋 카탈로그란?

본 게시글은 edwith 부스트코스 iOS 프로그래밍 강의를 듣고 작성한 게시글 입니다. 에셋 카탈로그란? Xcode에서 프로젝트를 처음 생성하면 Asstes.xcassets 이라는 폴더가 자동으로 생성되는데, 이 폴더에서 애플리케이션에 사용될 다양한 에셋을 관리하며, 이를 에셋 카탈로그라고 한다. 에셋 카탈로그는 에셋과 다양한 디바이스의 속성에 대한 파일의 연결을(mapping) 통해서 애플리케이션 리소스에 쉽게 접근할 수 있도록 도와준다. (리소스는 애플리케이션이 실행 중일 때 사용하는 이미지와 음악 파일 등이다.) 여기서 말하는 속성은 디바이스의 특징, 사이즈 클래스, 주문형 리소스, 특정 타입의 정보를 포함하고 있다. Asset: 에셋은 한 가지 타입의 관련된 속성과 파일들의 집합 에셋 이름: 에..

👩🏻‍💻/iOS 2020.06.26

[프로그래머스] 최고의 집합 (python)

1. 문제 설명 자연수 n 개로 이루어진 중복 집합(multi set, 편의상 이후에는 집합으로 통칭) 중에 다음 두 조건을 만족하는 집합을 최고의 집합이라고 합니다. 각 원소의 합이 S가 되는 수의 집합 위 조건을 만족하면서 각 원소의 곱 이 최대가 되는 집합 예를 들어서 자연수 2개로 이루어진 집합 중 합이 9가 되는 집합은 다음과 같이 4개가 있습니다. { 1, 8 }, { 2, 7 }, { 3, 6 }, { 4, 5 } 그중 각 원소의 곱이 최대인 { 4, 5 }가 최고의 집합입니다. 집합의 원소의 개수 n과 모든 원소들의 합 s가 매개변수로 주어질 때, 최고의 집합을 return 하는 solution 함수를 완성해주세요. 2. 제한사항 최고의 집합은 오름차순으로 정렬된 1차원 배열(list, v..

Problem Solving 2020.06.26

[프로그래머스] 입국심사 - 이분탐색 (python)

1. 문제 설명 n명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시간은 다릅니다. 처음에 모든 심사대는 비어있습니다. 한 심사대에서는 동시에 한 명만 심사를 할 수 있습니다. 가장 앞에 서 있는 사람은 비어 있는 심사대로 가서 심사를 받을 수 있습니다. 하지만 더 빨리 끝나는 심사대가 있으면 기다렸다가 그곳으로 가서 심사를 받을 수도 있습니다. 모든 사람이 심사를 받는데 걸리는 시간을 최소로 하고 싶습니다. 입국심사를 기다리는 사람 수 n, 각 심사관이 한 명을 심사하는데 걸리는 시간이 담긴 배열 times가 매개변수로 주어질 때, 모든 사람이 심사를 받는데 걸리는 시간의 최솟값을 return 하도록 solution 함수를 작성해주세요. 2. 제한사..

Problem Solving 2020.06.26

[프로그래머스] 프렌즈4블록 - 스택? (python) - 2018 KAKAO BLIND RECRUITMENT

1. 문제 설명 프렌즈4블록 블라인드 공채를 통과한 신입 사원 라이언은 신규 게임 개발 업무를 맡게 되었다. 이번에 출시할 게임 제목은 프렌즈4블록. 같은 모양의 카카오프렌즈 블록이 2×2 형태로 4개가 붙어있을 경우 사라지면서 점수를 얻는 게임이다. 만약 판이 위와 같이 주어질 경우, 라이언이 2×2로 배치된 7개 블록과 콘이 2×2로 배치된 4개 블록이 지워진다. 같은 블록은 여러 2×2에 포함될 수 있으며, 지워지는 조건에 만족하는 2×2 모양이 여러 개 있다면 한꺼번에 지워진다. 블록이 지워진 후에 위에 있는 블록이 아래로 떨어져 빈 공간을 채우게 된다. 만약 빈 공간을 채운 후에 다시 2×2 형태로 같은 모양의 블록이 모이면 다시 지워지고 떨어지고를 반복하게 된다. 위 초기 배치를 문자로 표시..

Problem Solving 2020.06.24

부스트코스 - iOS 프로그래밍을 위한 스위프트 기초 강의 수료 및 후기

iOS 공부를 하기로 마음 먹고 첫걸음으로 듣기 시작한 첫 강의를 수강완료했다. 이 강의에서 권장한 수강 기간은 약 2달 정도인데 일주일 조금 넘게동안 조금은 빠르게 수료 해버렸다. 생각보다 강의 양도 많지 않았고, 기초이기 때문에 다른 언어에서 공부했던 문법이나 내용과 비슷한 부분이 많아서 어렵지 않게 공부할 수 있었다. 물론 스위프트에는 강의에서 들은 내용 뿐 아니라 훨~~씬 더 많은 기능들이 있겠지만, 프로젝트를 하며 공부를 하면 괜찮을 거라는 생각을 했다. 워낙 이론 위주로 공부를 하면 잘 안들어오는 타입이기도 하고, 학부때부터 느꼈지만 직접 구현하면서 스스로 찾고 공부하는게 기억에 더 잘 남는다. 동영상 강의 하나하나가 길지 않다. 오히려 짧다고 하면 매우 짧다. 3분~10분 사이로 이루어져 있..

잡담 2020.06.24

[프로그래머스] 뉴스 클러스터링 (python) - 2018 KAKAO BLIND RECRUITMENT

1. 문제 설명 뉴스 클러스터링 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브는 사용자들이 편리하게 다양한 뉴스를 찾아볼 수 있도록 문제점을 개선하는 업무를 맡게 되었다. 개발의 방향을 잡기 위해 튜브는 우선 최근 화제가 되고 있는 카카오 신입 개발자 공채 관련 기사를 검색해보았다. 카카오 첫 공채..'블라인드' 방식 채용 카카오, 합병 후 첫 공채.. 블라인드 전형으로 개발자 채용 카카오, 블라인드 전형으로 신입 개발자 공채 카카오 공채, 신입 개발자 코딩 능력만 본다 카카오, 신입 공채.. 코딩 실력만 본다 카카오 코딩 능력만으로 2018 신입 개발자 뽑는다 기사의 제목을 ..

Problem Solving 2020.06.24

28. 고차 함수 - iOS 프로그래밍을 위한 스위프트 기초

- 고차 함수 고차 함수(Higher-order function)는 '다른 함수를 전달인자로 받거나 함수실행의 결과를 함수로 반환하는 함수'를 뜻한다. 스위프트의 함수(클로저)는 일급시민(일급객체)이기 때문에 함수의 전달인자로 전달할 수 있으며, 함수의 결과값으로 반환할 수 있다. 이번 파트에서는 스위프트 표준라이브러리에서 제공하는 유용한 고차함수[map, filter, reduce]에 대해 알아본다. map, filter, reduce 함수는 스위프트 표준 라이브러리의 컨테이너 타입(Array, Set, Dictionary 등)에 구현되어 있다. - map map함수는 컨테이너 내부의 기존 데이터를 변형(transform)하여 새로운 컨테이너를 생성한다. - filter filter함수는 컨테이너 내부..

27. 오류 처리 - iOS 프로그래밍을 위한 스위프트 기초

- 오류 처리 스위프트에서 오류(Error)는 Error라는 프로토콜을 준수하는 타입의 값을 통해 표현된다. Error 프로토콜은 사실상 요구사항이 없는 빈 프로토콜일 뿐이지만, 오류를 표현하기 위한 타입(주로 열거형)은 이 프로토콜을 채택한다. 스위프트의 열거형은 오류의 종류를 나타내기에 아주 적합한 기능이다. 연관 값을 통해 오류에 관한 부가 정보를 제공할 수도 있다. 이번 예제에는 프로그램 내에서 자판기를 작동시키려고 할 때 발생하는 오류상황을 구현해 보았다. - 오류 표현 Error 프로토콜과 (주로)열거형을 통해서 오류를 표현한다. 자판기 동작 오류의 종류를 표현한 VendingMachineError 열거형 - 함수에서 발생한 오류 던지기 자판기 동작 도중 발생한 오류를 던지는 메서드를 구현해본..

26. 익스텐션 - iOS 프로그래밍을 위한 스위프트 기초

- 익스텐션 익스텐션(Extension) 은 스위프트의 강력한 기능 중 하나이다. 익스텐션은 구조체, 클래스, 열거형, 프로토콜 타입에 새로운 기능을 추가 할 수 있는 기능이다. 기능을 추가하려는 타입의 구현된 소스 코드를 알지 못하거나 볼 수 없다 해도, 타입만 알고 있다면 그 타입의 기능을 확장할 수도 있다. 연산 타입 프로퍼티 / 연산 인스턴스 프로퍼티 타입 메서드 / 인스턴스 메서드 이니셜라이저 서브스크립트 중첩 타입 특정 프로토콜을 준수할 수 있도록 기능 추가 ** 익스텐션은 타입에 새로운 기능을 추가할 수는 있지만, 기존에 존재하는 기능을 재정의할 수는 없다. 이 둘은 비슷해보이지만 실제 성격은 많이 다르다. 클래스의 상속은 클래스 타입에서만 가능하지만 익스텐션은 구조체, 클래스, 프로토콜 등..