전체 글

전체 글

    부스트코스 iOS 프로그래밍을 위한 스위프트 기초 후기

    부스트코스 iOS 프로그래밍을 위한 스위프트 기초 후기

    개인 프로젝트를 하면서, Swift에 대한 개념이 확실히 부족하다는 것을 나 스스로 느끼게 되었다. 그래서 찾아 보다가 부스트 코스에 좋은 강의가 있길래 천천히 들으면서 공부하려고 했는데, 집중해서 듣다 보니까 생각보다 빨리 수료증을 받게 되었다. 강의를 들으면서 static의 용도와 struct와 class의 차이, 여러 가지 고차 함수 등 많은 것을 얻어갈 수 있었다. 개념 정도는 알고 있어도, 써먹기에는 뭔가 좀 부족한 감이 있었는데 이번 기회로 좀 더 명확하게 정립 할 수 있었다. 다음은 ARC와 Generic과 같은 추가적인 문법들을 더 공부해나갈 생각이다. 공부하면서 느낀 건데 정말 배움의 길은 끝이 없는 거 같다... 아무튼 나는 오늘도 한 단계 성장

    [iOS] Swfit로 해시태그 기능 구현하기

    [iOS] Swfit로 해시태그 기능 구현하기

    진행 중이던 프로젝트에서 해시태그 기능을 작업했다. 일단 내가 원하는 기능은 해시태그끼리 붙여놔도 잘 작동되기, 한글 인식하기 정도였는데 마침 어떤 개발자 분의 블로그에 좋은 코드가 있어서 참고를 했다. import UIKit // 한글, 영문, 숫자만 가능 class HashtagTextView: UITextView { var hashtagArr: [String]? func resolveHashTags() { self.isEditable = false self.isSelectable = true let nsText: NSString = self.text as NSString let attrString = NSMutableAttributedString(string: nsText as String) let..

    [BOJ] 백준 5567 결혼식

    https://www.acmicpc.net/problem/55675567번: 결혼식2와 3은 상근이의 친구이다. 또, 3과 4는 친구이기 때문에, 4는 상근이의 친구의 친구이다. 5와 6은 친구도 아니고, 친구의 친구도 아니다. 따라서 2,3,4 3명의 친구를 결혼식에 초대한다.www.acmicpc.net 풀이 과정상근이의 친구와 친구의 친구까지만 초대가 가능하므로 깊이가 2가 되면 리턴하는 방식의 dfs를 사용했다.양방향 리스트를 만들고, 방문한 정점을 체크할 boolean형 배열을 만든다.dfs를 돌리는데 반복문을 사용해서 리스트의 해당되는 정점을 찾아 연결된 정점에 방문했다는 표시를 하고 재귀 함수를 사용한다.깊이가 2가 됐을 때, 리턴을 하고 방문된 인덱스를 찾아서 값을 센다.시작점인 정점 1을 ..

    [BOJ] 백준 1697 숨바꼭질

    [BOJ] 백준 1697 숨바꼭질

    https://www.acmicpc.net/problem/1697 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 풀이 과정 총 3가지의 경우를 탐색해야 한다. 위치가 X일 때, X-1과 X+1, X*2 이렇게 세 가지. int형 checked라는 배열을 만들어서 거쳐온 거리(도착하기까지 걸린 시간)를 기록한다. bfs를 사용해서 시작점인 n부터 큐에 넣고, 만들어둔 배열 인덱스 n에 대한 값으로 방문했다는 의미로 1이라는 값을 넣는다. 반복문을 돌려서 세 가지 경우를 모두 탐색하고..

    [iOS] UITextView에 링크 거는 법

    [iOS] UITextView에 링크 거는 법

    진행 중이던 프로젝트에서 TextView에 링크를 거는 작업을 해 보았다. 먼저 링크를 걸고 싶은 TextView에 다음과 같은 몇 가지 설정을 해주어야 한다._ = contentTextView.then { $0.isUserInteractionEnabled = true $0.isSelectable = true //Default $0.isEditable = false $0.dataDetectorTypes = .link $0.delegate = self }어떤 설정인지 차근차근 살펴보자. isUserInteractionEnabled먼저 isUserInteractionEnabled는 유저의 이벤트가 event queue로부터 무시되고 삭제됐는지 판단하는 Boolean 값이다.false로 설정하면 touch나 ..

    [BOJ] 백준 11725 트리의 부모 찾기

    [BOJ] 백준 11725 트리의 부모 찾기

    https://www.acmicpc.net/problem/11725 11725번: 트리의 부모 찾기 루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오. www.acmicpc.net 풀이 방법 방향에 대한 조건은 없으므로, 양방향 인접 리스트를 만든다. bfs를 돌리는데 루트인 1번 정점부터 큐에 넣고, 부모를 표시할 배열(parents)을 하나 만든다. 1번 정점은 루트 노드이기 때문에 방문했다는 의미로 만들어둔 배열 1번 인덱스 값을 1로 설정한다. 큐에 들어있는 요소를 꺼내서 그 요소와 연결되어 있는 노드를 찾고 그 정점에 방문하지 않았다면 큐에 넣는다. parents 배열의 인덱스와 찾은 노드의 번호가 같을 경우 큐에서 꺼낸 요소 ..

    [iOS] UITextView와 UITextField의 차이 정리

    [iOS] UITextView와 UITextField의 차이 정리

    UITextView와 UITextField가 자꾸 헷갈려서 기억해 두기 위해 정리하는 글이다. UITextView 애플 공식 문서를 보면, UITextView는 A scrollable, multiline text region. (스크롤이 가능한 여러 줄 텍스트 영역)이라고 나와 있다. 실제로 UITextView는 UIScrollView 클래스를 상속받고 있다. 간단하게 말해서, 텍스트 문서의 본문을 쓸 때와 같이 여러 줄의 텍스트를 입력할 때 사용하는 게 UITextView이다. UITextField 반면에 UITextField는 여러 줄의 텍스트를 입력하는 것은 불가능하다. 텍스트를 한 줄만 입력할 때 사용하는 게 UITextField

    [BOJ] 백준 2343 기타 레슨

    [BOJ] 백준 2343 기타 레슨

    https://www.acmicpc.net/problem/2343 2343번: 기타 레슨 강토는 자신의 기타 레슨 동영상을 블루레이로 만들어 판매하려고 한다. 블루레이에는 총 N개의 레슨이 들어가는데, 블루레이를 녹화할 때, 레슨의 순서가 바뀌면 안 된다. 순서가 뒤바뀌는 경 www.acmicpc.net 풀이 방법 우선 블루레이의 크기를 임의의 값인 10으로 두고 계산을 하면, 레슨의 순서가 바뀌면 안 되는 조건이 있기 때문에 1+2+3+4를 더해서 한 개, 5+6을 한다면 10보다 커지므로, 뒷부분은 더할 수 있는 값이 없다. 결과적으로 블루레이의 수는 6개가 나온다. m이 3이고 블루레이의 수는 6이기 때문에 블루레이의 크기를 늘려야 된다는 것을 알 수 있다. 그러면 low와 high는 어떻게 정해야..