본문 바로가기

전체 글

(426)
[iOS] Unit Test UnitTest 오늘은 익히 들었지만 iOS에서는 한번도 도전해보지 못했던 UnitTest 라는 것을 실습해보며 정리해본다. UnitTest란? UnitTest 직역하면 단위 테스트다. 즉, 컴퓨터 프로그래밍에서 작성된 소스 코드의 모듈 단위를 의도대로 정확히 작동하는지 검증하는 루틴을 의미한다. 이를 통해서 핵심 기능인 모델 클래스 및 메소드와 컨트롤러와의 상호작용, UI의 워크 플로우 등을 확인하고 문제가 발생할 경우, 단시간 내에 이를 파악하고 바로 잡을 수 있도록 도와준다. 이상적으로, 각 테스트 케이스는 모두 서로 분리되어야 하며 이를 위하여 가짜 객체 (Mock Object)를 생성하는 것 또한 좋은 방법이다. 이러한 테스트를 주도적으로 하는 TDD (Test-Driven-Development..
[Algorithm] [Python] Programmers - 소수 찾기 Programmers - 소수 찾기 문제 설명 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하도록 solution 함수를 완성해주세요. 제한사항 numbers는 길이 1 이상 7 이하인 문자열입니다. numbers는 0~9까지 숫자만으로 이루어져 있습니다. "013"은 0, 1, 3 숫자가 적힌 종이 조각이 흩어져있다는 의미입니다. 입출력 예 input : "17" -> output : 3 [1,7]으로는 소수 [7, 17, 71]을 만들 수 있습니다. input : "011" -> output : ..
[Algorithm] [Python&Swift] Programmers - 위장 Programmers - 위장 문제 설명 스파이들은 매일 다른 옷을 조합하여 입어 자신을 위장합니다. 예를 들어 스파이가 가진 옷이 아래와 같고 오늘 스파이가 동그란 안경, 긴 코트, 파란색 티셔츠를 입었다면 다음날은 청바지를 추가로 입거나 동그란 안경 대신 검정 선글라스를 착용하거나 해야 합니다. 스파이가 가진 의상들이 담긴 2차원 배열 clothes가 주어질 때 서로 다른 옷의 조합의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 clothes의 각 행은 [의상의 이름, 의상의 종류]로 이루어져 있습니다. 스파이가 가진 의상의 수는 1개 이상 30개 이하입니다. 같은 이름을 가진 의상은 존재하지 않습니다. clothes의 모든 원소는 문자열로 이루어져 있습니다. 모든 문자열의..
[iOS] UIResponder UIResponder 본 문서에는 애플 개발자 홈페이지의 UIResponder 공식 문서를 번역한 내용을 작성한다. UIResponder란? UIResponder 클래스는 이벤트에 대한 응답 등과 같은 처리를 위한 추상 인터페이스를 의미한다. class UIResponder: NSObject UIResponder 클래스는 NSObject 클래스를 상속한다. Overview Responder 객체는 UIResponse의 인스턴스이며 UIKit app의 이벤트 핸들링의 백본(Backbone)을 구성한다. 많은 핵심 객체들 (ex: UIApplication 객체, UIViewController 객체 ...etc)는 모두 Responder다. 이벤트가 발생하면 UIKit은 이를 처리하기 위해 Responder ..
[iOS] NavigationController RootView 변경 오늘 프로젝트를 진행하다가 삽질을 엄청 하고 배운 내용을 남긴다. (부디 저와 동일한 문제를 겪게된 분들은 삽질을 하지 않으시길 바랍니다.) 현재 프로젝트는 최대한 StoryBoard 사용을 지양하고 Programmatically 한 UI 개발을 지향 하고있다. 따라서, 코드로 모든 UI를 개발하는 도중 Navigation Controller 의 RootViewController를 변경해야 할 일이 생겼다. (어쩌면 이를 건들지 않고 해결할 수 있는 방법이 있을지도 모른다.) modal 뷰를 이용하여 임시방편으로 사용할지 많은 고민을 했으나 아무리 생각해도 Navigation Controller로 이어지는 것이 더욱 UX 측면에서 옳다고 생각했다.. 생각을 행동으로 옮긴 결과 약 한시간 동안 열심히 삽질..
[Algorithm] [Python] 백준/BOJ - 10451 _ 순열 사이클 10451 - 순열 사이클 문제 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스의 첫째 줄에는 순열의 크기 N (2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 순열이 주어지며, 각 정수는 공백으로 구분되어 있다. 출력 각 테스트 케이스마다, 입력으로 주어진 순열에 존재하는 순열 사이클의 개수를 출력한다. 제출코드 import sys sys.setrecursionlimit(10000) def dfs(start): visited[start] = True next_path = path[start] if not visited[next_path]: dfs(next_path) for _ in range(int(sys.stdin.readline())): n = int(sys.stdin.r..
[Algorithm] [Python] 백준/BOJ - 9095 _ 1, 2, 3 더하기 9095 - 1, 2, 3 더하기 문제설명 정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 7가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 1+1+1+1 1+1+2 1+2+1 2+1+1 2+2 1+3 3+1 정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. n은 양수이며 11보다 작다. 출력 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. 제출 코드 from sys import stdin def solution(n): if n == 1: return 1 if n == 2: ..
[iOS] Completion Handler Completion Handler 본 문서에는 평소에 공부를 진행하며 한번 정리가 필요하다고 생각했던 Completion Handler에 대한 내용을 기재한다. Prerequisite Completion Handler 개념은 알면 알수록 어려운 개념이다.. Closure (특히 Trailing Closure) 에 대한 이해가 부족하다면 Closure Summary 를 비롯한 다양한 레퍼런스들을 앞서 살펴보는 것이 좋지만 Trailing Closure 개념에 대해 간단히 정리하고 본 내용으로 들어가도록 한다. Trailing Closure Trailing Closure, 후행 클로저는 함수의 마지막 인자로 클로저 표현식을 함수에 전달하거나 클로저 표현식이 긴 경우에 사용한다. (매우 꿀 기능이다!) 아래 ..