![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cxgpek/btrdwSaa7dG/OxBCKCHytj9LW6MG4OkihK/img.png)
일하면서 스위프트, 오브젝티브씨만 쓰고 알고리즘 풀면서도 거의 스위프트만 쓰니까 학교 다닐 때 배웠던 C, Java를 까먹고 있었다.. (이젠 그냥 코드만 읽을 수 있는 수준) (반성해라 내 자신) 그래서 이번에는 C로 알고리즘 문제를 풀어야겠다 싶어서 흠 비쥬얼 스튜디오 깔아야 하나? 싶었는데 다행스럽게 Xcode에서 Command Line Tool로도 충분히 빌드, 디버깅 가능하다고 합니다. 먼저 Welcome to Xcode를 열어주세요. Welcome to Xcode 안 뜬다면 단축어 쓰세유 (command + shift + 1) 그리고 Create a new Xcode project를 선택해줍니다. 플랫폼을 macOS로 바꾸고 Command Line Tool을 선택해주세요. 그럼 아래와 같이 뜨..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/xfPJb/btrcOellSod/xuM9CaWrlsrD566XEAjG81/img.png)
맥을 사용하는데 깃 레포에 무엇을 푸시하려하면 .DS_STORE파일이 눈치없게 들어오는 경험이 있을 것 이다. 나는 따로 git ignore을 안해둬서 여럿이서 같이 쓰는 레포에 .DS_STORE이 들어간 적도 있었다. (아찔) (그날따라 습관적으로 git add . > git commit -m " " > git push를 하고싶더만,,) (역시 git add .는 위험해) 과연 .DS_STORE이 뭐길래 이렇게 생기는걸까? DS_STORE파일은 Desktop Services Store의 약자로 Apple macOS 운영 체제에서 아이콘 위치 또는 배경 이미지 선택과 같은 폴더의 사용자 지정 속성을 저장하는 파일이다. (메타데이터 저장) 지우는 방법 : 터미널에 find . -name ".DS_Store..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/2J80e/btrczPNVQHL/5XX0o5fOB2y2tYVHdujNcK/img.png)
오늘은 59번 문제인 Spiral Matrix II를 풀어보겠습니다. 중간 난이도이고 59.5%의 성공률을 보이네요. 오늘의 주제는 matrix 행렬입니다. 먼저 문제를 살펴볼게요! 양의 정수 n이 주어지고, 1부터 n^2까지 나선형 순서로 숫자를 채워 n x n의 행렬을 만들어내라. 제약조건으로는 n이 1이상 20이하네요. 아래 예시를 보면 바로 이해되실거에요. 1번 예시는 n이 3으로 들어왔고 나선형 순서로 1부터 9까지 채워나가는거에요. 2번 예시는 n이 1으로 들어왔고 나선현 순서로 1부터 1까지 채워나가는거에요. 그리고 채워진 2차 행렬을 그대로 리턴해주면 됩니다. TMI 예전에.. 정처기(정보처리기사) 시험을 쳐본적이 있는데 언제지... 4년 전인가... 그 시험에서 요 문제가 나왔었어요. 이..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/Pj6OT/btrcc4RmDj9/JKFKDstziQF5TIWRZY1tNK/img.png)
오늘날 가장 많이 사용하고 있는 코덱인 H.264에 대해서 공부해보려 합니다. (AVC = Advaned Video Coding 이라고도 부릅니다.) H.264의 탄생 ISO/IEC의 동화상 전문가 그룹인 MPEG(Moving Pictures Experts Group)에서 영상 표준 압축 방식으로 MPEG라는 방식을 개발했습니다. 그리고 국제 표준화기구인 ITU-T의 비디오 코딩 전문가 그룹인 VCEG(Video Coding Experts Group)에서 H.263이라는 표준 압축 방식을 개발했습니다. 그러다가 이 두 팀이 모여서 JVT(Joint Video Team)라는 팀을 형성하고 그 결과로 H.264(MPEG4 PART 10)가 탄생하게 되었습니다. (2003년에 동영상 압축 표준으로 제정되었음)..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/dok8nJ/btrcgOmUqh1/KV2bC0oV3gcvIwhutjSKv1/img.png)
깃에서 며칠 전 토큰 발급을 권유했다. 아니 강요했다^^ 그리고 토큰 발급받고 까먹고 있었는데 알고리즘 문제 풀고 깃에 푸시하려니 안된다. 생각해보니 토큰을 발급받고 키체인 업데이트를 안 했었다. 깃 토큰 받는 방법 정리 토큰 받는 방법은 깃에서 Settings설정을 들어간다. 그리고 아래쪽을 보면 Developer settings에 들어간다. 그리고 Personal access tokens에 들어가서 토큰을 발급받는다. 발급받은 토큰을 들고 있자. 그리고 키체인에 깃허브 검색하고 클릭해준다. 클릭하면 아래 이미지와 같이 나오는데 암호 보기에 내가 발급받았던 토큰을 작성해주면 된다. 끝! 안 하면 403 에러 뜬다. PLEASE USE A PERSONAL ACCESS TOKEN INSTEAD 토큰 발급받..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/stsEm/btq9mmarJjg/BD5TzAuxvdEIxYt3ML2lNk/img.png)
오늘은 67번 문제인 Add Binary를 풀어보겠습니다. 쉬운 난이도며 48%의 성공률을 보입니다. 이 문제의 주제는 비트입니다. 먼저 문제를 살펴보겠습니다. 문자열 a와 b가 주어지고 그것들을 합을 이진 문자열로 반환해주면 됩니다. 주어진 예제를 살펴봅시다. 아래는 1번 예제와 2번 예제를 푼 것입니다. 이 문제를 풀기 위해서 문자열로 받는 a와 b를 인덱스 접근에 가능하도록 배열로 만들어주었습니다. 그리고 answer이라는 곳에 최종 정답이 담 길거고 carry는 캐리 값을 나타내고 i와 j는 각 문자열의 길이-1을 나타냅니다. func addBinary(_ a: String, _ b: String) -> String { let a = Array(a) let b = Array(b) var answe..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/YCUN5/btq9wfUEkIO/MPi2uD3QtMWEoDSSdIRZc0/img.png)
오늘은 프레임의 유형에 대해서 공부해보려 합니다. 프레임이면 그냥 프레임? 인 줄만 알았는데^^,, 3가지 종류가 있다고 합니다. 그전에 GOP(Group of Pictures)에 대해서 간단히 살펴보겠습니다. MPEG 비디오 압축 기술에서 사용되는 프레임(이미지)의 집합을 GOP라고 부릅니다. (즉 여러 장의 이미지를 하나로 그룹화해서 압축하는 방식) 일반적으로 GOP내에 3가지의 프레임이 존재합니다. 여기 적혀있는 I,B,P들이 오늘 살펴볼 프레임의 유형들입니다. I Frame (intra) I-frame은 렌더링을 하기 위해 어떤 프레임에 의존하지 않고 (self-contained frame) 완비된, 독립된 프레임입니다. I-frame은 정적인 사진과 같습니다. 원본에 가장 근접하기 때문에 가장 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/kGhrE/btq8xKQLUBp/jKkdepvzgfGn8gM7kSPdE0/img.png)
조합은 집합에서 서로 다른 n개의 원소 중에서 순서에 상관없이 r개를 선택하는 것입니다. 이전에도 정리를 한 번 한 적이 있지만(https://hyerios.tistory.com/172) 조합은 순서에 상관없이 뽑기만 하면 됩니다. combinations(ofCount: ) 메서드를 사용하면은 컬렉션 요소의 모든 조합의 시퀀스를 반환하며, 각 조합은 원래 컬렉션의 순서대로 표시됩니다. combinations가 만들어지기 전에는 대부분 아래와 같이 구현했습니다. //5개 중에 2개를 뽑는 모든 경우의 수 func combos(elements: ArraySlice, k: Int) -> [[T]] { if k == 0 { return [[]] } guard let first = elements.first el..
- Total
- Today
- Yesterday
- iOS SwiftUI
- SWIFT
- 책
- 책 후기
- rxswift
- string
- Algorithm
- Deep learning
- ios
- 머신러닝
- wwdc
- objective-c
- stanford SwiftUI
- 책 추천
- 애니메이션
- 독서
- 스위프트
- RX
- objc
- Animation
- ReactiveX
- Xcode
- swift5
- ARC
- leetcode
- swiftUI
- 스위프트UI
- 문자열
- 알고리즘
- 딥러닝
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |