tksrl0379의 등록된 링크

 tksrl0379로 등록된 네이버 블로그 포스트 수는 124건입니다.

8주 간의 인턴을 마치고. [내부링크]

시간이 참 빠른 것 같다.7월부터 시작한 부스트캠프가 어느새 12월이 되서 끝났고,1월에 시작한 인턴이 어...

1년간의 취준 마무리 [내부링크]

아래부터 작성할 내용은 상당수 내 TMI와 함께, 내가 취업할 때까지 어떤 것들로부터 많은 도움을 ...

2020 부스트캠프 기념품 [내부링크]

부스트캠프에서 무언가를 보내주어서 받았습니다.개발자 감성...이 묻어 있는 스티커와 달력, 그리고 무선충전기를 받았는데 나름 유용한 것들로 온 것 같아서만족스럽네요. 잘 쓰겠습니다 __

[Swift] Swift 의 as 업캐스팅에 대해 [내부링크]

부스트 캠프 챌린지 슬랙에 업캐스팅에 대한 흥미로운 질문이 올라와서 나름대로 정리해봤다.간단히 요약하자면 왜 as로 업캐스팅을 해도 type(:of) 혹은 .self 의 결과가 부모의 인스턴스 타입으로 바뀌지 않는 것인가? 에 관한 질문이었다.여러 사이트를 돌아보고 나서 내린 결론은 아래와 같다. 3줄 요약하자면, 1. 애플 공식 문서에 따르면 type(:of) ( == .self) 는 dynamic type 을 반환한다. 2. 그런데 as 로 인한 upcasting은 static type 을 변환한다. 3. 따라서 upcasting 한 후 type(:of) 를 출력해도 부모 클래스의 인스턴스 타입이 아닌 원래 그대로의 인스턴스 타입을 출력하게 된다.위 예시는 여러 사이트의 설명과 예.......

네이버 웹툰 하반기 인턴 서류 합격 [내부링크]

언제나 꿈꿔오던 기업.면접 기회를 주셔서 감사합니다.부스트캠프와 병행해야해서 면접 준비가 충분치 못할 것 같아 걱정되긴 하지만 그래도 최선을 다하겠습니다.

[iOS] Timer, Run Loop 에 대해 [내부링크]

Timer에 대해 알아보려면 일단 Runloop 라는 개념을 알아야 한다.Runloop 란 ? A run loop is an event processing loop that you use to schedule work and coordinate the receipt of incoming events. The purpose of a run loop is to keep your thread busy when there is work to do and put your thread to sleep when there is none.애플 공식 문서의 설명에 따르면 Run Loop 란 작업을 스케줄링하고 들어오는 이벤트를 조정하기 위해 사용되는 '이벤트 처리 루프' 이다. The main dispatch queue is a globally available serial queue that executes tasks on the application’s main thread. This queue works with .......

Swift 에서 String 을 다루는 2가지 방법 [내부링크]

우선 본격적인 소개에 앞서, 왜 Swift 에서는 다른 언어와 같이 Int 통한 String 의 index 접근이 불가능한지 알아볼 필요가 있다. 이 부분에 대한 설명은 하단의 링크에 너무 잘 나와있다. 핵심 문장만 인용하자면,각각의 Character가 여러 개의 scala 값을 지닐 수 있기 때문에 동일한 메모리로 한정된 저장공간을 가지기 어렵습니다. 그렇기 때문에 String을 만들 때 Character별로 동일한 크기의 메모리를 할당할 수 없고, 이는 인덱스를 통한 접근을 불가능하게 만드는 것입니다.1. 따라서 일반적으로는 String.index 를 통해 접근하곤 한다. collection 같이 여러 데이터를 담고 있는 자료구조 중 한 곳에 접근하는 것을 subscript 라고.......

2020 부스트 캠프 챌린지 후기 [내부링크]

2020 부스트 캠프 챌린지 후기간단 요약우연히 Swift 부스트 코스를 공부하다가 알게 돼고,운 좋게 코딩테스트까지 합격한 후에,열심히 끝까지 미션을 수행해서 어느새 30 일만에 수료까지 할 수 있었다. (시간순삭)부스트캠프만의 특이한 점멤버십은 어떻게 진행되는지 모르겠지만 부스트캠프 챌린지는 기본적으로 미션 수행 - 동료 평가/피드백를 반복하는 구조를 띄고 있다. 그 과정에서 모든 학습은 오로지 본인의 몫이다. 짧은 강의는 있지만 어디까지나 참고용이다. 나의 경우 지도 교수님께서 예전부터 스스로 공부하는 공부 습관의 중요성을 3학년 때부터 귀에 못이 박히도록 주입(?)하셔서 그리 어색한 방식은 아니었지만, 단순.......

앞으로의 계획 [내부링크]

부스트캠프 챌린지도 끝났고 현대오토에버 공모전도 최종 선발됐고 졸작 최종발표도 끝났고.. 한 2일 정도 푹 놀았으니 이젠 다시 개인공부를 시작해봐야겠다. ㅎㅎ - iOS1. TableView, CollectionView 톺아보기2. Autolayout 톺아보기3. 디자인패턴(Controller, View, Model 등..) 공부4. 부스트코스 iOS 강좌 수료 도전해보기일단 이번 해는 부스트캠프 멤버십에 충실하기로 ㅎㅎ;- 코테1. 카카오, 네이버 위주로 풀어보기코테는 부스트캠프 중에도 틈틈이.

[iOS] TableView 의 Delegate, DataSource [내부링크]

TableView 에서는 두 가지의 Protocol 을 제공한다.첫 번째는 UITableViewDelegate, 두 번째는 UITableViewDataSoruce. (이하 Delegate, Datasource)애플 공식 문서에 따르면 각 Protocol 이 담당하는 역할은 아래와 같다.- DelegateCreate and manage custom header and footer views.Specify custom heights for rows, headers, and footers.Provide height estimates for better scrolling support.Indent row content.Respond to row selections.Respond to swipes and other actions in table rows.Support editing the table's content.즉, Table 의 (주로 Custom) Layout 을 관리하고 (row에 대한) 사용자의 Action 을 받아 처.......

2020 부스트 캠프 iOS 멤버십 선발 [내부링크]

2020 부스트 캠프 멤버십 선발https://blog.naver.com/tksrl0379/222067138959챌린지가 끝난지 5일 정도가 됐다. 끝나는 당일 금요일에는 공모전 최종면접, 월요일에는 학교 졸업작품 최종발표.. 그 동안 준비하던 것들이 어쩌다가 한꺼번에 끝나서 후련하게 이번 주는 계속 쉬어볼려고 했는데 성격상 그게 잘 안됐던 것 같다. ㅎㅎ;공모전 최종 선발 발표, 부스트캠프 멤버십 선발 발표, 금요일에는 네이버 웹툰 인턴 발표, 졸업작품 최종 상 발표 등 너무 기다리는게 많아서 사실 속 시원하게 쉬기 힘들었다. 혹시 이거 다 떨어지면 학기 중에 뭐할지 계속 쓸데 없는 고민만 하면서 지낸거 같다. 그래서 오늘은 맘 잡고 다시 공부 시작이.......

네이버 테크 콘서트(Naver Tech Concert) 몇 가지 정리 [내부링크]

네이버 테크 콘서트 몇 가지 후기- 테크 콘서트 SlideSharehttps://www.slideshare.net/NaverEngineering- 테크 콘서트 영상https://tv.naver.com/naverd2/clips테크 콘서트는 지난주 즈음에 진행됐는데 부스트 캠프 챌린지 기간에 진행된 터라 이제 확인하게 됐다.여러 유익한 영상들이 있는데 그 중 몇가지 인상 깊었던 것들을 위주로 적어보았다.1. 코드리뷰의 중요성2. 질문의 중요성3. 테스트 코드의 중요성1. 코드리뷰- 코드리뷰는 PR 로 ?실제 현업에서는 PR 을 아주 많이 사용한다고 한다. 하지만 현업의 경험이 없는 상태에서 나 같이 Git을 무턱대고 써본 사람들 중에 아마 왜 굳이 저장소 Fork - Commit/Push - PR - Merge .......

[Swift] 크레인 인형 뽑기 게임 - 2019 카카오 개발자 겨울 인턴십 [내부링크]

크레인 인형 뽑기 게임거의 한 달 반만에 다시 시작한 코딩테스트 연습.오늘은 간단하게 레벨 1 문제부터 시작해봤다. 온전히 프로그래머스 에디터로만 풀어보려고 했는데 역시나 Swift는 런타임 오류를 제대로 잡아주지 않는 바람에 그냥 Xcode 에서 다시 풀었다. ㅎㅎ; 여지껏 파이썬으로 코테를 연습했지만 이제부터는 그냥 Swift로 하기로 했다. 매개변수가 immutable 이라 함수 내에서 다시 var 로 받아줘야 한다는 귀찮음부터 문자열 파싱 귀찮음까지.. 좀 단점이 있긴 하지만 앞으로 계속 쓸 언어니깐..더 개선할 여지가 있을 것 같지만 너무 간단한 문제라 패스하고 다음 문제 풀러..

[Swift] 튜플 - 2019 카카오 개발자 인턴십 [내부링크]

오늘의 2 번째 문제. 이번에도 2019 카카오 개발자 인턴십이지만 레벨2 로 풀어봤다. 오랜만에 다시 시작하는거니깐 차근차근 ㅎㅎ;나름 좋은 해결법을 얻어서 재밌는 문제였다.문제의 주요 포인트는 2가지이다.1. 아래와 같은 꼴로 주어지는 문자열을 어떻게 배열로 파싱할 것인가?: 부캠에서 정규표현식을 하도 한 덕분에 바로 정규표현식이 떠오르긴했는데 이건 코테니깐 ㅎㅎ;나 같은 경우는 components, map, sorted 를 떡칠(?)해서 파싱했다. 어차피 아무리 돌려도 O(n) 이다.2. 파싱하여 얻은 배열을 어떻게 처리할 것인가?: 아래 코드가 첫 제출 코드이고 제출 하기 전부터 예상한거지만 answer 이 Array 이기 때문에 contains.......

[iOS] ViewController 전환 시 생명주기 작동 순서 [내부링크]

ViewController의 생명주기는 iOS APP 개발을 하면서 당연히 숙지하고 있어야 하는 개념이다.하지만 NavigationController 에서 다음 ViewController 갈 때 두 ViewController의 생명주기가각각 어떤 순서로 작동하는지 정확히 알지 못하여 문제 해결에 어려움을 겪은 경험이 있어 글을 작성하게 됐다.기본적인 ViewController의 생명주기는 아래와 같다.viewDidLoad()viewWillAppear()viewDidAppear()viewWillDisAppear()viewDidDisAppear()1. ViewControllerA_1 (초기화면)초기화면인 ViewControllerA_1 이며 viewDidLoad, viewWillAppear, viewDidAppear가 순서대로 호출된다. 그리고 Button 을 누르면 ViewControllerA_2 로 넘어간.......

현대오토에버 배리어프리 앱 개발 공모전 서류 / 면접 통과 - 최종 합격까지 [내부링크]

현대오토에버에서 개최한 배리어프리 앱 개발 콘테스트 서류 심사에 통과했다.약 140개 팀 중 20팀을 선정하는거라 확신이 없었는데 감사하게도 선정됐다.개인적으로 가장 중요하다고 생각되는 항목은 2차 항목이다.시각 장애인 관련 APP을 제작하면서 실제 사용자인 장애인들의 평가가 중요하다는걸 깨달았기에,서류 절차를 통과한 것 만으로도 아이디어가 어느 정도 인정 받은 것 같아서 뿌듯하다.아직 최종 통과를 하려면 면접심사, 캠프/발표까지 엄청 많이 남았지만 끝까지 열심히 해봐야겠다.------면접 심사 통과.이젠 최종 통과만 남았다.--최종 합격 !

네이버 비즈니스 플랫폼 코딩테스트 합격 [내부링크]

iOS 공부, 프로그래머스 코테 강의, 코테로 선발자 뽑길래 지원해봤는데 어쩌다보니 선발된 학교 코테 강의, 정보처리기사 실기, 공모전 면접.. 너무 벌려놓은 일이 많아서 다 할 수 있을지 모르겠지만 최대한 쪼개고 쪼개서.. 아직 부족하다는걸 너무나 잘 알기에 더 열심히 준비해야겠다.-----아쉽게도 면접에서 불합격을 받았다.다음에 더 열심히 준비하는걸로 ㅎㅎ..

[iOS] NavigationController 의 title을 바꾸는 가장 좋은 방법 (상세 원리) [내부링크]

(본격적인 글에 앞서, NavigationController의 기본 동작 원리에 대해선 아래 참고 바랍니다)https://daheenallwhite.github.io/ios/2019/07/25/Navigation-Controller/요즘 코드 리팩토링에 맛들렸는데 Navigation bar 의 title을 지정하는 코드가 너무 중구난방이어서 정리하다가 정확한 원리를 알고 싶어 글을 작성하게 됐다. Navigation bar 의 title 과 관련된 property 에 접근할 수 있는 방법이 무려 3가지나 있다.1번의 경우는 ViewController 의 navigationItem의 title을 바꾸는 것이고2번은 NavigationController 의 navigationItem의 title을 바꾸는 것이고3번은 NavigationController 의 navigationBar.topItem (<- 이것도 nav.......

[iOS] Custom UIView & initializer 에 대해 [내부링크]

코드 리팩토링 중 Navigation Bar 의 Back Button 을 설정하는데 지나치게 같은 코드가 반복되는 것이 보여 Custom UIView 를 만들어 이를 모듈화했다. 만들다가 잠시 헷갈리는 부분들이 있어 정리하게 됐다.UIView 직접 만들기(UIButton 을 상속했지만 UIView 와 동일합니다)Custom UIView 를 적용하는 방법은 두 가지가 있다.첫 번째 init(frame:) 은 코드로 CustomizedButton 을 호출하는 경우 호출되며,두 번째 init(coder:) 은 스토리보드로 CustomizedButton 을 적용하는 경우 호출된다. 따라서 보통 두 개 다 정의해주는 것이 좋으며 이후 해당 UIView 에 대한 상세 설정은메서드(initializeBtn) 를 통해 설정해주는 것이 개.......

[iOS] UI 경고 메시지 (Make a symblolic breakpoint ~) [내부링크]

코드 리팩토링 중 간간이 보이는 UI 경고메시지가 너무 거슬려서 해결하는 방법을 찾아보다가 나름대로 해결법을 찾은 것 같아 정리하게 됐다.UI Constraints 관련 이슈에는 보통 2가지가 있다.1. Storyboard 에서 나타나는 메시지 이 경우에는 빨간색 or 노란색 버튼을 누르면 가이드를 주기도 하고 직접 다시 Constraints 를 설정하든 어떻게든 해결이 가능했다.2. 콘솔 창에 나타나는 메시지Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.문제는 2번의 경우였다. 여지껏 2번의 경우 코드로 오토 레이아웃을 설정한 경우에만 나타나는 줄 알았는데, 스토리보드 상에서 중복되.......

프로그래머스 - Flood Fill (python) [내부링크]

많이 보이는 패턴의 BFS 문제.완전 처음 접해본다면 어려울 수도 있겠지만미로탐색이나 이런 류의 문제는 엄청 꼬아놓은 문제가 아닌 이상푸는 패턴이 비슷해서 한 번만 풀어보면 레벨 2 문제보다도 쉽게 풀 수 있다.

프로그래머스 - 쇠막대기 [내부링크]

위에서 아래로 화살표의 개수를 내려서 병합해주는 식으로 구현해서 코드가 많이 복잡해졌는데,그렇게 풀 필요 없이 왼쪽에서 오른쪽으로 풀면 되는 문제였다.((( 일때 () 가 나오면 (의 개수만큼, 즉 이 경우엔 (((이니 3개를 더해주고 )가 단독으로 나오면 1을 더해주면 되는정말 간단한 방법으로 풀 수 있다. 1시간 걸린건 둘째 치고 애초에 설계 방향을 잘 못 잡아서 깔끔하게 풀지 못한게 아쉽다.역시 문제는 많이 풀어봐야 되는 것 같다. 나중에 개선한 코드로 다시 작성하기 위해 코드는 미첨부.

프로그래머스 - 문자열 압축 (2020 카카오 인턴) [내부링크]

문자열의 앞과 뒤를 비교하는 문제이다. 문제 자체는 굉장히 단순하지만 이렇게 반복해서 비교하는 패턴의 문제는 자신만의 풀이 규칙을 만들어 놓지 않으면 코드가 생각보다 엄청 더러워진다는 걸 느꼈다.위 문제 같은 경우는 보통 마지막 문자열을 비교할 때를 대비해서 보통 if 문을 하나 더 넣어주고는 하는데,위에서 사용했던 코드를 한 번 더 반복해야 해서 코드에 중복이 발생한다.따라서 이런 경우 위와 같이 반복문이 한 번 더 돌아가게 해서 한 번 더 비교하도록 하면 코드를 깔끔하게 만들어줄 수 있다. (예를 들어 aabbccdd 의 경우 size 가 1일 때 두 번째 반복문이 총 8번 돌게하지 않고 9번 돌게 하는 식으로)비단 이 문제.......

프로그래머스 - 자물쇠와 열쇠 사본 (2020 카카오 인턴) [내부링크]

(key의 길이 -1) + lock의 길이 + (key의 길이 -1) 를 한 변으로 가지는 정사각 행렬을 만든 후 푸는 문제이다.사실 이 것만 알면 문제를 구현하는 것 자체는 어려운게 아니긴 한데 역시나 아직 구현력이 부족해서 그런건지구현까지 1시간이 넘게 걸렸다. 이 코드의 최대 단점은 행렬을 매 비교할 때마다 복사한다는 점이다. 비트 연산을 사용하면 복사할 필요가 없을 것 같은데 마땅한 구현 방법이 당장 생각이 안나서 일단 이렇게 두고 다음에 개선된 코드로 다시 올려야겠다.

프로그래머스 - 방문길이(프로그래머스 섬머/윈터코딩 ~2018) [내부링크]

일반적으로 단일 좌표의 방문 여부만 체크하는 행렬문제들과 다르게특정 좌표 간의 이동 여부를 체크해야 풀 수 있는 문제이다.처음에는 아무 생각 없이 2차원 리스트로 풀려고 하다가 문제를 잘 읽어보니 dictionary를 써야 하는 문제임을 깨달았다. 꼭 dictionary 를 써야하는건진 모르겠지만 시간복잡도 측면에서 봐도 dictionary가 가장 효율적일 것 같다.처음부터 dictionary로 풀었으면 30분 내로 풀었을텐데 문제를 풀다보면 항상 아직도 부족함을 느낀다.

2020 네이버 부스트캠프 챌린지 합격 (iOS) [내부링크]

서류 - 1차 코테 - 2차 코테를 거쳐 운 좋게도 합격됐다.코테는.. 1,2차 모두 난이도가 어렵다기보다는 주어진 문제를 어떻게 구현하는지를 보기 위한 문제였던 것 같다. 다만 2차 코테 때 실수로 자만해서 문제를 제대로 확인하지 않고 그래프 노드 순서를 하나 뒤바꿔서 제출하는 바람에 '안되겠구나' 하고 포기했었다. (코테를 풀면 항상 하는 실수인데 잘 고쳐지지가 않는 것 같다. 계속해서 재검토하는 습관을 들여야겠다) 정말 운이 좋게도.. 감사하게도 최종 선발이 될 수 있었다. 물론 아직 챌린지이므로 여기서 또 엄청 열심히 해야 멤버쉽까지 갈 수 있지만,방학 동안 챌린지에만 모든 열정을 쏟아부어서 꼭 멤버쉽까지 가.......

[Swift] Optional 구현원리 파헤치기 [내부링크]

Optional 은?Optionals say either “there is a value, and it equals x” or “there isn’t a value at all”.애플 공식 문서에 있는 표현으로, 간단하게 값이 있을 수도 있고 없을 수도 있는 상태(nil) 를 뜻한다고 보면 된다.Xcode 에서 변수의 타입으로 Optional 을 지정한 다음 jump to definition 으로 넘어가면애플의 공식문서에 있는 Optional 에 관한 모든 설명 뿐 아니라 어떻게 구현됐는지까지 나온다.오늘은 이 어떻게 구현됐는지에 대해 알아보기 위해 글을 작성하게 됐다.사실 이 문구에 오늘 알아보고자 하는 모든 내용이 담겨있다.Swift's type system usually shows the wrapped type's name with a trailing q.......

iOS 개발자 학습 로드맵 [내부링크]

iOS 프로그래밍을 공부하다보면 유독 막막한 경우가 많은 것 같다.우연치 않게 학습 로드맵에 대해 정리해둔 좋은 영상을 봐서 기록용으로 업로드 ㅎㅎ당장 한 달 동안은 부스트 캠프에 매진해야 하기 때문에 볼 시간이 없겠지만 언제든 여유날 때 참고해서 정리하면 좋을 영상인 것 같다.https://www.youtube.com/watch?v=9XjpfW8U3P4

부스트 코스 iOS 프로그래밍 - 1. 음원재생기(2) [내부링크]

https://www.edwith.org/boostcourse-ios/joinLectures/12899프로젝트 코드 뜯어보기(본 코드는 강의에 이미 공개된 코드입니다): 부스트코스의 iOS 프로그래밍 첫 번째 프로젝트는 '음악 재생기'이다.audio, image와 관련된 작업들을 할 수 있는 AVFoundation 프레임워크 중 AVAudioPlayer를 사용한다.(AVFoundation 에 관한 설명은 아래 참조)https://developer.apple.com/library/archive/documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/00_Introduction.html#//apple_ref/doc/uid/TP40010188-CH1-SW3- viewDidLoad()설명: AVAudioPlayer 를 초기화하는 메소드를 호출합니다. addViewsWithCode 는 View를 스토리.......

캐치 혜화 IT 포트폴리오 후기 [내부링크]

https://www.catch.co.kr/CatchCafe/ProgramView/507포트폴리오를 써보고는 있지만 항상 제대로 쓰고 있는건지 알 수가 없어서 도움을 얻고자..캐치에서 진행하는 포트폴리오 세미나에 참여해 2시간동안 유익한 정보들을 얻고 왔다.세미나를 들으면서 내가 맞게 썼구나 싶은 부분도 있었지만 아! 이걸 안 넣어구나 싶은 것도 꽤 있었던 것 같다.첫 번째, About me : 내가 무엇을 중시하는지 어떤 사람인지 초반에 짧게 피력하기두 번째, 기술스택: 그냥 나열하는 것보다 어느 정도 레벨인지 간단하게라도 기재하기.그리고 postman 같은 툴을 기재하는 것도 좋다고 한다.세 번째, 어필해야 할 것들: 내가 얼마나 열정적인지 개발.......

프로그래머스 - 점프와 순간 이동 (python, swift) [내부링크]

시험 공부가 너무 재미없어서 잠깐 간단하게 풀어볼만한 문제를 찾아서 풀어봤다.처음엔 DP로 풀었다가 효율성 테스트에서 통과를 못해서,손으로 풀어봤더니 간단하게 2로 나누면 풀 수 있는 문제라 그대로 풀었다.PythonSwiftPython 으로 코딩테스트 하면 참 편하긴 한데,변수의 타입이나 함수의 반환에 대해 무감각해져서 갑자기 Swift 를 하면 적응이 안 될때가 있다.조만간 아예 Swift 로 갈아타는게 맞을지.. 고민중이다.

Git push 삭제하는 방법 [내부링크]

1. 워킹 디렉토리에서 가장 최근의 Commit 되돌림(reset 은 특정 시점으로 되돌림, HEAD는 지금 작업하는 로컬 브랜치를 가리키는 포인터)2. git log -g 를 통해 commit id 를 알아낸 다음, 3. 원하는 커밋 시점으로 워킹 디렉토리를 되돌림4. 강제 push-- 참고할 만한 글https://parksb.github.io/article/28.htmlMaster 브랜치를 다른 브랜치로 새로 쓰기https://snowdeer.github.io/git/2018/08/02/how-to-change-current-branch-to-master/

Git commit history 합치기 / commit 이름 변경 [내부링크]

동일한 작업을 한 중복 history가 너무 많은 경우 Commit history를 합칠 필요가 있다.Rebase를 사용한다.1. rebase 할 브랜치로 이동2. Commit history 합치기편집기로 들어가지고 합치고 싶은 Commit의 맨 앞에 있는 pick을 squash로 변경한다.나 같은 경우는 update README.md 를 하나로 합치고 싶어 Update README.md 를모두 squash로 바꾸었다.이후 :wq (vi 기준)를 하면 아래와 같은 메시지가 나오고 :q! 로 나오면 로컬에서의 작업은 끝난다.3. 원격 저장소에 강제 푸시하면 끝이렇게 해도 커밋 히스토리가 더러워지는 건 어쩔 수 없다.처음 커밋 푸시 할 때부터 제대로 관리하거나 중복된 커밋은 당일 바로 변경하는 것이 가.......

2020 네이버 비즈니스 플랫폼 인턴 서류 발표 [내부링크]

최근 NBP에서 인턴 채용을 진행해서 신청했고 오늘 결과가 발표됐다. 입사 시 네이버 클라우드 관련 업무를 하게 되는데, 네이버 클라우드는 내가 예~전부터 애용해오던서비스라 자소서 쓸 때도 관련 경험담을 꽤 넣었다. 그것 때문인지는 모르겠지만 감사하게도 서류 전형을 통과했다.최근 졸작, 시험을 병행하느라 코테 연습을 몇 주 동안 못해서 걱정되긴 하지만,테스트 날까지라도 최선을 다해야겠다. IOS 직무에다가 내가 자주 사용하던 서비스라 놓치기엔 너무 아쉬운 기회다. 시험 2시간 전에 끝났는데 다시 공부 시작.

프로그래머스 - 더 맵게 (python) [내부링크]

Heap 카테고리 문제는 한 번도 안 풀어봐서 일단 풀어봤는데,아니나 다를까 O(n^2)으로 푸니 효율성 통과가 불가능했다.그래서 찾아봤더니 우선순위큐 기능을 제공하는 heapq가 있다고 하여 이를 이용하여 풀었다.최소값이 루트 노드에 위치하는 특성을 이용하여 푸는 문제이다. 최소값 혹은 최대값이 항상 맨 앞에 유지되어 어느 상황에서든 바로 뽑아낼 필요가 있을 때는그 때마다 sort를 하는 것보단 heapq가 확실히 시간복잡도 측면에서 훨씬 좋다고 볼 수 있는 것 같다.

프로그래머스 - 라면공장 (python) [내부링크]

전체적인 아이디어 구상은 성공했는데 while 문 안에 heap = [] 를 넣어서 매번 heap 를 초기화하는 바람에계속 오답이 나서 좀 오래걸렸다. heap 을 반복문마다 매번 초기화하게 되면 이전 dates의 supplies 값을 잃기 때문에 오답이 날 수 밖에 없다.즉 위와 같은 경우 알고리즘 상 4일->15일을 선택하는 것까진 동일하지만,10일 한 번 이면 끝나는 작업(총3일)을 26일, 34일을 선택하게 된다.(총4일)사실 풀면서 이 부분 때문에 완전정복으로 풀어야 하는건가 고민을 많이 했는데 풀다보니 가장 큰 것 순서대로 선택하면 된다는 사실을 깨달았다. 다만 힙이라는 힌트를 안 줬어도 풀 수 있었을지는 모르겠다.

프로그래머스 - 이중우선순위큐 (python) [내부링크]

최소값이야 그냥 pop으로 구하면 되는데 최대값을 도대체 어떻게 O(N^2)안에 구해야하는지 감이 안와서그냥 max를 찾은 다음에 삭제하는 단순한 방법으로 구현했는데 통과가 됐다.remove와 max 둘 다 O(N)이므로 O(N^2)을 예상해서 당연히 시간초과가 날거라고 생각했는데테스트케이스가 부족해서 그런건지 뭔지는 모르겠지만 아무튼 통과는 됐다.아무튼 왜 레벨 3인지 이해가 안가는 문제..

프로그래머스 - 주식가격 (python) [내부링크]

처음에는 이중 for문으로 풀었는데 알고보니 스택/큐 분류에 있어서 큐로 풀었다.로직 자체는 for문으로 푸나 큐로 푸나 똑같고 반복문이 도는 횟수도 동일한데, 자료구조 때문인지 속도가 거의 2배차이가 난다.+ 파이썬의 list는 pop() 은 O(1), pop(0)은 O(N)이다. 즉 리스트 전체를 거쳐야 한다.따라서 스택을 구현할 때는 list를 써도 되지만, 큐를 쓸 때는 deque의 popleft를 사용하는게 좋다.이중연결리스트로 구현되기 때문에 왼쪽, 오른쪽 pop 둘 다 O(1)이다.이 문제도 list로 구현하면 효율성 테스트에서 시간초과가 나온다.

프로그래머스 - 다리를 지나는 트럭 (Swift, Python) [내부링크]

SwiftSwift 같은 경우는 Array로 Queue를 구현하다보니 O(N)이 나와서 deque로 구현한 Python보다 시간 효율이 안 좋다. Swift 같은 경우는 Queue를 위한 자료구조를 따로 제공하지 않고 있기 때문에.. 직접 Generic으로 구현해야 한다. 나중에 한 번 구현해봐야겠다.Python

백준 14503번 - 로봇 청소기 (Swift) [내부링크]

https://www.acmicpc.net/problem/14503알고리즘 문제라기 보다는..1. 지문 잘 읽기2. 구현 잘 하기문제.마지막 조건을 대충 읽고 넘겨서 그거 하나 때문에 계속 틀렸다.

백준 11724번 - 연결 요소의 개수 (Swift) [내부링크]

https://www.acmicpc.net/problem/11724DFSBFSDFS, BFS 문제는 어렵지만 항상 재미있다. 이 문제는 너무 정직한.. 전형적인 DFS, BFS 문제라 난이도 치고 쉬웠다.

순열, 조합 만들기 (DFS) [내부링크]

5개 중 3개 뽑아내서 순열 만들기 (순서가 유의미)5개 중 3개 뽑아내서 조합 만들기 (순서가 무의미)순서가 무의미하기 때문에 선정한 숫자 이전의 숫자는 포함할 필요가 없다.따라서 start 로 시작지점을 잡아주어 이전 숫자를 포함하지 않게 한다.

백준 1051번 - 숫자 정사각형 (python) [내부링크]

https://www.acmicpc.net/problem/10511. NxM 숫자를 행렬처럼 만들어서 min(N, M) 으로 구한 _size 를 구한다.2. 그리고 _size ~ 1 (_size가 3인 경우 3,2,1) 크기 만큼 행렬을 순회하며꼭지점의 모든 수가 같은 정사각형꼴 행렬을 찾으면 끝나는 문제다.꼭지점의 모든 수가 같다는 말을 바보같이 잘 못 알아들어서 이상한걸로 틀리긴했는데 그건 내가 잘 안 읽어서 그런 거고..Silver 3 난이도 문제로 돼있지만, 개인적으로 Silver5 난이도였던 숫자야구보다 전체적으로 쉬운 문제였던 것 같다.오늘의 브루트 포스 2문제 풀기 끝.

Swift 상속 부스트코스 21 (+심화 Static) [내부링크]

https://www.edwith.org/boostcamp_ios/lecture/11309/키워드타입 메서드 관련- static: 재정의 불가 타입 메서드- class : 재정의 가능 타입 메서드 => 따라서 상속이 안되는 열거형, 구조체에서 사용 불가 => 대신 클래스에서는 위 키워드를 이용한 타입 메서드만 상속 가능재정의 방지 키워드- final: 를 사용하면 재정의 방지 (class 앞에 붙여서 final class가 되면 재정의 불가하게 만듦)정리정리하면,열거형, 구조체는 상속이 불가능하므로static, final 키워드는 사용이 가능하지만class 키워드는 사용 불가능부모 클래스를 상속 받은 자식 클래스는class 키워드는 사용 가능하지만static, final 은 불가능.......

Swift 인스턴스의 생성과 소멸 부스트코스 22 (+심화 ARC) [내부링크]

https://www.edwith.org/boostcamp_ios/lecture/11310/initstruct는 class 와 달리 선언 시에는 프로퍼티를 초기화하지 않아도 컴파일 오류가 안 뜨지만..결국 인스턴스 생성 시 모든 프로퍼티에 초기화를 필요로 한다.그래서 class 든 struct 든 이니셜라이저(initializer)를 써주는게 명시성이 있다.(저장) 프로퍼티에 옵셔널 (?)을 사용하는 경우는 ?=> Convenience 사용처음 본 키워드인데..꼭 초기화 시키지 않아도 되는 프로퍼티가 존재하는 경우 사용한다고 한다.주의할 점으로는 convenience 키워드를 붙인 init에서는 무조건 다른 init을 호출해야 하고꼭 초기화 시키지 않아도 되는 프로퍼티는 옵셔널로 선언해야한.......

백준 1074번 - Z (python) [내부링크]

https://www.acmicpc.net/problem/1074행렬의 크기와 관계없이 4등분 한 뒤 어떤 사분면에 있는지 알아내고 N이 0이 될 때까지 계속해서재귀적으로 푸는 문제다.구현 원리만 알면 간단한 분할정복 문제지만 접근 방법을 잘 못 잡아서 힌트를 보고 풀은게 아쉽다.당분간은 계속 이런 수학 파트에 있는 문제들만 풀어볼 생각이다.

백준 1789번 - 수들의 합 (python) [내부링크]

https://www.acmicpc.net/problem/1789엄청 간단한 문제이고.. 시간 제한도 널널한 문제라 보고 바로 위와 같이 구현했어야 했는데여지껏 수학 카테고리에 있는 문제들이 대부분 while문을 쓰지 않고 식 하나로 해를 도출하는 문제들이 많아서 이 것도 혹시 숨겨진 규칙이 없을까 고민하다가 답이 안나와서 그냥 위와 같이 풀었더니 맞았다.아직 경험이 많이 필요한 것 같다.

Swift 타입 캐스팅, assert 부스트코스 24,25 [내부링크]

https://www.edwith.org/boostcamp_ios/lecture/11312/타입 캐스팅Java 같은 경우 Int형을 Double 형 변수에 대입하고 싶은 경우 (double)변수 이런 식으로 타입캐스팅을 하지만,Swift 에서는 as Double 식으로 타입캐스팅을 한다.그리고 강의에도 나와있다시피 let someDouble = Double(2) 식의 사용은 타입 캐스팅이 아니라,그냥 새로운 Double 인스턴스를 생성해주는 것 뿐이다. 강의에서 계속 강조하지만 Double, Int 등의 대부분의 타입은 구조체(struct)로 만들어졌으며 Double(2)는 타입 캐스팅이 아니라 Double 인스턴스를 생성하면서 Double 구조체의 이니셜라이저 중 int 형을 받는 init을 호출하는 것 뿐이다.나머지 업캐.......

부스트코스 iOS 프로그래밍 기초 학습 후기 [내부링크]

Swift 개발에 입문한지도 조금 됐고프로젝트도 2개 정도 진행한 상태에서 갑자기 웬 뜬금 없는 스위프트 기초 강의라고 할 수도 있겠지만,모든 걸 스스로 학습하려다보니 어떤 기능을 구현할 때 A 방법이 맞는지, B 방법이 맞는지, 혹은 더 좋은 방법은 없는지가 항상 고민됐었다. 그렇다고 기초 강좌만 들을 수는 없고..그래서 강좌 내용 30, 각 강좌 내용와 연관된 다른 핵심, 심화 개념 공부 70 으로후자에 더 많은 시간을 투자하며 공부했다.덕분에 Generic, Hashable 같이 알고는 있었지만 정확히 설명하지 못했던 개념들,클로저, 함수형 패러다임에 대한 좀 더 깊은 이해,아예 쓰지 않아 이해도가 0에 가까웠던 열거형에 대한 이해,J.......

백준 2790번 - F7 (Python) [내부링크]

https://www.acmicpc.net/problem/2790답에 거의 근접했는데 중복 숫자가 여러개 존재하는 경우의 문제를 해결하지 못해서 결국 힌트를 보고 풀었다.중복 문제를 해결하느냐 못하느냐가 포인트인 문제인 것 같다.

백준 1629번 - 곱셈 (Python) [내부링크]

https://www.acmicpc.net/problem/1629밑이 A, 지수가 B인 수를 C로 mod 연산하는 문제이다. input 조건이 굉장히 크기 때문에 그냥 (A**B)%C 이런 식으로 풀면 당연히 틀리고..O(N)으로 풀면 시간 초과가 난다.따라서1. 분할 정복을 사용하여 O(logN)으로 풀어야 하고2. mod 연산의 특성을 알고 있어야 한다.우선 A = 3, B = 13, C = 5 라고 했을 때.. 일반적으로 풀면 3*3*3*...*3*3*3 이런 식으로 3을 13번 곱해야 하지만,1. 분할 정복의 특성을 사용하면 위와 같이 지수를 반으로 나눠준다는 느낌으로,3^13 = 9^6 = 81^3 * 3 = 6561 * 243 으로 지수가 1이 될 때까지 줄여서계산을 하면 무려 3번의 연산.......

부스트 코스 iOS 프로그래밍 - 1. 음원재생기(1) [내부링크]

https://www.edwith.org/boostcourse-ios/joinLectures/128990. 들어가기에 앞서부스트 코스 iOS 프로그래밍에서는 이전 Swift 강좌와 동일하게 강의 내용을 그대로 따라가기 보다는관련된 응용 내용, 실제 개발을 하면서 도움이 될 만한 추가 정보, 복기할만한 정보들을 위주로 정리하려고 한다.1. 단축키(많이 사용할 것 같은 단축키는 굵은 글씨 표시)Cmd + 0 : Navigator 단축키Cmd + Option + 0 : Inspector 단축키Cmd + shift + O : 빠른 열기 도구Ctrl + Cmd + 왼쪽 or 오른쪽 방향키 : 앞 or 뒤 작업으로 가기- Storyboard Cmd + shift + L : 오브젝트 라이브러리 열기Option + 열고 싶은 .swift 파일 클릭: 왼쪽에 Storyboard.......

NBP 코딩 테스트 후기 [내부링크]

- 코딩테스트가 최종 종료된 시간 이후에 올라가도록 예약한 포스팅입니다 - 여지껏 치뤄본 타 코딩테스트들과 다르게 정해진 시간대 중 본인이 편한 시간에 테스트를 치룰 수 있는 테스트였다.오늘 졸업작품 기말발표가 있어서 오후에 학교를 갔다왔어야 했는데 정말 운이 좋게도 이런 식으로 코딩테스트를 치루게 해주셔서 그저 감사할 따름..시간은 2시간 3문제였고 난이도는 알고리즘 문제보다는 구현 위주의 문제라 타 코딩테스트보다는 쉬운 편이었다.iOS 직무라서 그런지 언어는 Swift만 가능했고 얼마나 알고리즘을 잘 알고 있는지 보다는,Swift로 배열, 문자열, 반복문을 얼마나 잘 다루는지를 보여주기 위한 구현 문제 위주로 나.......

Swift 옵셔널 (부스트 코스 1-11, 12) [내부링크]

https://www.edwith.org/boostcamp_ios/lecture/11240/Swift App 개발을 하면서 수도 없이 사용한 개념이라 넘어가려다가그만큼 핵심 내용이기도 하고 지금도 가끔 귀찮을 때 nil 체크를 안하고강제 unwrapping으로 프로그래밍하는 나쁜 습관을 가지고 있어서 이를 고치고자 포스팅 해본다.옵셔널'옵셔널'은 nil이 존재할 가능성이 있음을 의미한다.다른 말로 하면 옵셔널이 아니면 nil 할당이 불가능함을 의미한다.(이 개념 때문에 잠재적 오류로부터 비교적 안전한 편이고Kotlin에서도 비슷하게 Nullable이라는 개념을 사용합니다)쓰는 이유는1. nil의 가능성을 코드만으로 표현하여 문서/주석으로 이를 알려줄 필요가 없.......

Swift 구조체 vs 클래스 부스트코스 13,14 [내부링크]

https://www.edwith.org/boostcamp_ios/lecture/11271/구조체https://blog.naver.com/tksrl0379/221984676872에서도 언급한 적 있지만,1. 스위프트의 대부분의 타입은 구조체로 이루어져 있다.2. 또한 타입을 정의하기 때문에 대문자 카멜케이스(Upper Camel Case: 각 단어의 앞이 대문자)를사용하는 것이 권장된다. (강제사항X)3. 그리고 값 타입이다. (struct, enum은 값 타입)타입 안에 들어 있는 변수 == 프로퍼티타입 안에 들어있는 static 변수 == 타입 프로퍼티타입 안에 들어있는 함수 == 메서드타입 안에 들어있는 static 함수 == 타입 메서드타입 프로퍼티, 메서드인스턴스인 stu.......

백준 3085번 - 사탕 게임 (Swift) [내부링크]

https://www.acmicpc.net/problem/3085간간히 iOS 개발자 직군을 지원하면 Swift로만 코딩테스트를 보는 기업들이 보여서앞으로는 Swift로 해보기로 했다. 다만 코딩테스트에서는 정말 쓸데 없는 Optional이나 Swift만의 이상한 String 처리, 불편한 입력처리 등 코딩 테스트에 한해서는 불편한 점이 많은 언어이긴 한데 그래도 결국 알고리즘은 로직싸움이니깐.. 익숙해지면 되겠거니.. 계속 해봐야겠다.그래서 준비한 막코딩.코딩테스트에 익숙해지는데는 사실 이런 그리디문제가 최고인 것 같다.와중에 import Foundation을 안넣어서 컴파일 에러가 떴다 ㅎㅎ;혹시 더 좋은 코드가 있나 싶어 다른 사람 풀이를 봤는데..샘플이 너무 부족.......

Swift 열거형 / 부스트코스 15 + 심화(Codable) [내부링크]

https://www.edwith.org/boostcamp_ios/lecture/11273/열거형- 유사한 종류의 여러 값을 한 곳에 모은 것- enum 자체가 하나의 데이터 타입 => Upper 카멜 케이스 사용- 각 case는 Lower 카멜 케이스 사용- 각 case는 그 자체가 고유의 값 (C같이 각 case에 자동으로 정수값 할당 X)프로그래밍하면서 열거형을 잘 안 사용하는 편이라 익숙치 않다.switch 문의 비교값에 열거형 타입을 위치시킬 수 있는데 이 경우모든 열거형 케이스를 포함시킬 수 있다. 만약 하나라도 포함하지 않는 경우 default를 구현해야한다.원시값(RawValue)이건 처음 배운건데 열거체을 만들 때 열거체 이름 뒤에 : Int 를 넣으면rawValue(원시값)을.......

Swift 클로저(축약 위주)부스트코스 17, 18 (+심화) [내부링크]

https://www.edwith.org/boostcamp_ios/lecture/11296/마찬가지로 기본적인 내용들이라 알고 있지만..패스하기엔 너무너무 중요한 개념이라서 다시 복기 차원에서 정리.클로저- 참조 타입- 실행가능한 코드 블럭- 함수와 다르게 이름정의 필요X. 대신 매개변수, 반환 값 존재- 함수는 이름이 있는 클로저- 일급객체로 전달인자, 변수, 상수 등에 저장 및 전달 가능(일급 객체에 대해선 아래 링크에서 정리함)https://blog.naver.com/tksrl0379/221986948447- 괄호를 이용해 파라미터 정의- ' -> ' 로 반환 타입 명시 (반환값이 없으면 Void라도 입력)- in 키워드를 이용해 실행코드와 분리처음 보면 헷갈릴 수도 있지만, Android .......

Swift 프로퍼티 부스트코스 19, 20 [내부링크]

https://www.edwith.org/boostcamp_ios/lecture/11298/프로퍼티1. 프로퍼티 종류- 인스턴스 저장 프로퍼티- 타입 저장 프로퍼티- 인스턴스 연산 프로퍼티- 타입 연산 프로퍼티- 지연 저장 프로퍼티이렇게 두니 뭔가 굉장히 복잡해보이는데- 인스턴스 프로퍼티 - 저장, 연산- 타입 프로퍼티 - 저장, 연산 // static 키워드 사용- 지연 저장 프로퍼티 // lazy 키워드 사용로 이해하면 될 것같다.2. 정의 및 사용- 프로퍼티는 구조체, 클래스, 열거형 내부에 구현 가능 - 열거형 내부에는 연산 프로퍼티만 구현 가능- 연산 프로퍼티는 var로만 선언 가능- 연산 프로퍼티는 읽기 전용으로 구현할 수 있지만, 쓰기 전용으로는 구현 불가능- 읽기.......

백준 2503번 - 숫자 야구 (Python) [내부링크]

https://www.acmicpc.net/problem/2503Silver 5 문제로 표시된 문제 치고 굉장히 귀찮은 문제였다.1. 중복되는 숫자가 있으면 안된다. ( 123 -> O, 121 -> X)2. 0이 들어가면 안된다. 3. 1,2 의 조건을 만족하는 123~987의 숫자를 주어진 N개의 줄에 있는 숫자들과 하나하나씩 모두 비교해야한다.막상 정리하고 보니 굉장히 간단해보이기는 하는데 아무튼 .. ㅎㅎ;문제를 제대로 안 읽고 풀어서 1,2번 조건을 빼먹어서 한 번 틀렸다.

프로그래머스 - 소수 만들기(python, DFS) (썸머/윈터코딩 ~2018) [내부링크]

파이썬에선 Combination 으로 구해도 되고.. 개수가 3개로 적기 때문에 for문을 3개 넣어도 되지만,난 DFS가 항상 맘에 든다.그냥 무난한.. 비교적 간단한 조합문제였던 것 같다.

MySql 코딩 테스트 대비 문법 정리 [내부링크]

프로그래머스 코딩테스트에 Sql이 꾸준히 있는거 같아서.. 이번엔 공부하고 해보고자 다시 복기하는 차원에서 프로그래머스 문제를 풀며 문법 정리. 1. 다중 정렬(order by): name 순으로 정렬 후 같은 name을 가지는 행들을 datetime으로 재정렬select animal_id, name, datetime from animal_ins order by name asc, datetime desc2. 행 개수 제한 걸기(limit): datetime이 가장 빠른 동물의 이름 단 1개만 가져오기SELECT name from animal_ins order by datetime limit 1 SELECT datetime as '시간' from animal_ins order by datetime desc limit 1(둘 다 max, min을 쓰는게 짧고 효율적이긴 하다)3. 중복 제거(distinct)후.......

백준 1110번 - 더하기 사이클 [내부링크]

https://www.acmicpc.net/problem/1110그냥 의식의 흐름대로 풀었더니 코드가 더럽긴 한데 규칙 자체가 단순해서 그냥 그대로 구현만 하면 되는 문제

백준 2839번 - 설탕 (python) [내부링크]

수학으로 분류되있는 문제들만 풀고 있는데 확실히 감도 부족하고 문제 읽는 습관도 부족한 것 같다.간단한 문제인데 문제만 읽고 구현했다가 나머지 예제들을 뒤늦게 보고 방법을 다시 생각해내고..이러다가 문제 푸는데 20분이 넘어갔다. 진작 파악했으면 금방 푸는 문젠데.. 예제를 완전히 파악하고 푸는 습관을계속 들여야겠다.다른 사람들 아이디어를 보고 더 깔끔하게 풀은 코드1. 5의 배수인지 확인한다.2. 아닌 경우 3을 빼준다. 5의 배수일 때 최소 개수를 구하기 용이하므로 5의 배수인지 아닌지 계속 체크해주는 것이라고 생각하면 될 것 같다.

백준 1978번 - 소수 찾기 (python, 에라토스테네스의 체) [내부링크]

예전에 많이 풀어봤었던 문제. 근데 1을 소수로 해버려서 3번이나 오답이 남 ㅎㅎ;

백준 1912번 - 연속합(python) [내부링크]

https://www.acmicpc.net/problem/1912잘못 짠 코드처음에는 모든 경우의 수를 다 따지는 방법으로 풀었는데시간 초과가 나오길래 문제를 다시 읽어보니 시간제한이 1초인 문제였다.그래서 잘 살펴보니 DP로 풀 수 있는 문제라 DP로 해결했다. 그냥 처음 봤을 때부터 DP로 풀었으면 더 좋았을텐데 아직도 문제 보는 능력이 부족한것 같다. ㅎㅎ;통과한 코드아마 이런 유형이 코테로 나오면 DP로 안할 시 효율성 점수를 거의 못 받을듯 싶다.

백준 1712번 - 손익분기점 (python) [내부링크]

https://www.acmicpc.net/problem/1712간단한 문제지만 내가 얼마나 수학적인 사고를 안하는지 알 수 있었던 문제.꼴로 고정비용+가변비용 < 판매이익 이 될 때까지 while을 돌리는 식으로 구현했다가 시간초과가 나서 문제를 다시 봤더니 간단한 수식으로 풀 수 있는 문제였다.

프로그래머스 SQL - 없어진 기록 찾기 [내부링크]

아직 JOIN이 익숙치 않아서 연습중..푸는 과정은 일단1. 유실된 animal_ins 와 유실되지 않은 animal_outs가 있을 때 두 테이블을 비교하여 유실된 데이터만을 조회해야 하므로 animal_outs 방향으로 JOIN한다.select * from animal_outs as O left join animal_ins as I on O.animal_id = I.animal_id테이블이 JOIN 됐다.2. 이 테이블을 보면 오른쪽의 공백부분들이 바로 animal_ins 의 분실된 데이터들.따라서 animal_ins의 데이터가 공백인 행만 뽑아내면 문제 끝select O.animal_id, O.name from animal_outs as O left join animal_ins as I on O.animal_id = I.animal_id where I.animal_id is null

iOS HIG 정리 모음 [내부링크]

https://blog.shako.net/ios-human-interface-guidelines-summary/https://developer.apple.com/design/human-interface-guidelines/ios/overview/themes/계속 추가할 예정.

Swift 의 Collection Type (컬렉션 타입) 심화 정리 [내부링크]

알고 있다고 생각했지만 구체적으로 알고 있지 못했던 개념들에 대해 스스로 공부하고자 짚어보는 글입니다 :)각 Collection Type의 기초적인 특성들은 부스트코스에서 잘 정리해두었으니 참고해주세요.https://www.edwith.org/boostcamp_ios/lecture/11202/(Collection: 데이터들의 집합)Swift에는 3가지의 Collection Type이 존재1. Array2. Set3. Dictionary1. 3가지 모두 제네릭(Generic) 컬렉션으로 구현됐다Generic은 Swift에만 있는 것이 아니라 Java, Kotlin 등 다른 언어에서도 사용하는 중요한 개념으로, Collection Type에 여러가지 Data Type 들을 담을 수 있음을 의미한다. Array라고 해서 한 Data Type만 담을 수 있는 것.......

Swift 함수 고급 (부스트 코스 1-8) + 심화(함수형프로그래밍, 클로저) [내부링크]

출처) 부스트코스 1-8. 함수 고급https://www.edwith.org/boostcamp_ios/lecture/11225/이번 단원에서 배운 내용은 모두 처음 들어본 내용들이라 정리.빨리 정보처리기사 끝내고 Swift에 매진하고 싶다.1. 매개변수 기본 값매개변수에 기본 값을 정할 수 있다는 건 처음 알았다.그리고 함수를 사용해보려고 하면 아래와 같이 2 가지 경우로 사용할 수 있게 나온다.2. 전달인자 레이블매개변수 이름 앞에 붙일 수 있는 것을 전달인자 레이블이라고 하는데, 이 전달인자 레이블을 변경하면,위와 같이 동일한 이름의 함수를 중복으로 오버로딩처럼 생성이 가능하다는 것 또한 처음 배운 사실.어떤 경우 사용하는게 좋을지는 모르겠지만 꿀.......

Swift 조건문 (부스트 코스 1-9) + 심화(패턴) [내부링크]

출처) 부스트코스 1-9https://www.edwith.org/boostcamp_ios/lecture/11235/이번 파트에서 다루는 2가지1. if-else2. switchif else 는 특별한 점은 없고switch가 살짝 특이하다.1. 명시적으로 break를 하지 않아도 자동으로 break가 된다.따라서 break를 무시하고 싶은 경우 fallthrough 를 사용하면 된다.(fallthrough 를 없애면 100만 출력)2. case 에 정수 혹은 문자열만 위치하는게 아니라 다양한 패턴을 사용할 수 있다.Swift에는 다양한 패턴이 있다.wildcard 패턴 ( _ ) 을 case 옆에 위치시킬 수도 있고 어떤 값이 오든 상관하지 않고 무조건 해당되므로이 경우 default와 비슷한 효과를 내는게 아닐까 싶다.그 외의.......

2020 정보처리기사 1,2회 통합 필기 후기 [내부링크]

2020년 6월 6일 토요일 오후 1시 30분 경부터 첫 NCS 개정 정보처리기사 필기 시험을 봤다.가답안이긴 하지만 점수는 75/85/95/90/90 ? 정도 나온거 같다. 3단원(DB), 4단원(프로그래밍)은 전공자분들이라면 별도의 공부 없이도 아마 합격권이었을 것 같다.몇 개 시나공 책에서 나오지 않은 전위순회, 시간복잡도 문제가 간단하게 나오긴 했는데 비전공자분들은 당황했을 수도 있을 것 같다. (제 기억으론 아마 안나왔던거같은데 3,4단원은 워낙 대충 봐서 잘 모르겠네요 ㅎㅎ; ) 그래도 당락을 결정지을만큼은 아니었다고 생각한다. 2단원(소프트웨어개발)은 적당히 책 내용대로 나온 것 같고, 5단원(정보시스템구축관리)은 신기술, 테일러.......

Notion 으로 포트폴리오 작성 [내부링크]

https://www.notion.so/YoungMin-Sim-56820e043c644cb58565f9723689c501최근 입사지원 양식을 볼 때마다 포트폴리오를 필요로 하는 곳들이 드물지 않게 있어서한 번즈음 써야 할 필요를 느끼고 있었다.Sw 개발자 포트폴리오는 웹 형태로도 많이 작성한다는 말을 듣고 위 사이트를 추천 받아Notion 으로 작성을 해보게 됐다.일단 장점은1. 작성하기 쉽다. GitHub Readme 같은 경우는 Markdown 문법 못 쓸정도는 아니지만 솔직히 불편하다.2. PDF 변환 기능 제공. SubPage까지 한 꺼번에 PDF화 하려면 Enterprise 버전으로 업그레이드 해야하긴 약간의 노가다 작업으로 해결 가능하기에 상관은 없는 것 같다.3. 웹 공유 가능단점은 아직 없는.......

프로그래머스 - 예산 (python) (썸머/윈터코딩 ~2018) [내부링크]

문제 자체는 굉장히 쉬운 문제인데글 몇군데에 일부러 헷갈리게 하려는 의도가 보인다.물품을 구매해 줄 때는 각 부서가 신청한 금액만큼을 모두 지원해 줘야 합니다. 예를 들어 1,000원을 신청한 부서에는 정확히 1,000원을 지원해야 하며, 1,000원보다 적은 금액을 지원해 줄 수는 없습니다.나1원, 2원, 3원을 신청한 부서의 물품을 구매해주려면 6원이 필요합니다.1원, 2원, 5원을 신청한 부서의 물품을 구매해주려면 8원이 필요합니다.1원, 3원, 4원을 신청한 부서의 물품을 구매해주려면 8원이 필요합니다.1원, 3원, 5원을 신청한 부서의 물품을 구매해주려면 9원이 필요합니다.같은 경우도 그렇고 자꾸 딱 budget에 맞춰야 하는 조합문제.......

프로그래머스 - 영어 끝말 잇기 (파이썬) (썸머/윈터코딩 ~2018) [내부링크]

풀긴 풀었지만, 다른 사람의 코드를 보고 문제의 핵심을 제대로 이해하지 못했음을 깨달았다.크게 2개의 규칙만 생각하면 되는 문제다.1. 앞 사람이 말한 단어의 마지막 문자로 시작하는 단어인지 체크 -> 1차원 배열에서 이전 단어로만 체크해도 됨2. 이전에 등장했던 단어 여부 체크 -> 마찬가지로 1차원 배열을 대상으로 in을 써주면 끝남문제를 제대로 읽자고 다짐한지 얼마나 됐다고.. 이번 문제도 문제를 100% 이해하지 못했던 것 같다.

백준 7576번 - 토마토 (파이썬) [내부링크]

https://www.acmicpc.net/problem/7576처음엔 queue를 list로 구현해서 시간초과가 나왔었는데 예전에 list...

프로그래머스 - 체육복 (파이썬) [내부링크]

중요한 규칙은 이렇다.1. 바로 맞닿아있는 사람한테만 체육복을 빌려줄 수 있다-> 굉장히 간단한 규칙이...

백준 1541번 잃어버린 괄호 (파이썬) [내부링크]

백준 1541번 잃어버린 괄호https://www.acmicpc.net/problem/1541- 를 만날 때마다 괄호를 열고 닫아주면...

백준 1003번 피보나치 함수 (파이썬) - DP 반복문, 재귀 둘 다 [내부링크]

백준 1003번 피보나치 함수https://www.acmicpc.net/problem/1003DP 문제의 기본 피보나치 함수. 살짝 ...

가우스 조던 소거법 / LU분해 - 파이썬 코드로 구현 [내부링크]

가우스 조던 소거법수치해석 과제라서 옛날 옛적에 배운 선형대수학 관련 문제들 몇 개를 코드로 구현했다....

백준 2667번 - 단지 번호 붙이기 BFS, DFS (파이썬) [내부링크]

https://www.acmicpc.net/problem/2667BFS로 풀이DFS로 풀이

백준 1697번 - 숨바꼭질 (파이썬) [내부링크]

풀고보니 간단한 문제인데 처음에 어떻게 풀어야 하는지 구상이 안되서 30분동안 멍 때리다가 직접 그려보...

백준 2156번 - 포도주 시식 (파이썬) [내부링크]

https://www.acmicpc.net/problem/2156다른 DP 중에 이거랑 비슷한 문제가 있었는데 그거랑 다르게 몇 ...

백준 7568번 - 덩치 [내부링크]

https://www.acmicpc.net/problem/7568간단한 문제인데,머리도 아프고 집중력이 많이 떨어져서 억지로 하나...

백준 11047번 동전 0 (시간초과 안 뜨기) (파이썬) [내부링크]

백준 11047번 동전 0https://www.acmicpc.net/problem/11047백준 그리디 카테고리에 있는 첫 번째 문제....

백준 1260번 - DFS와 BFS (파이썬) [내부링크]

https://www.acmicpc.net/problem/1260그리디, DP도 맛보기했으니 이번엔 DFS, BFS.학교에서 기본...

백준 10250번 - ACM 호텔 (파이썬) [내부링크]

https://www.acmicpc.net/problem/10250단순한 사칙연산 문제.근데 예외처리 하나를 안 해줘서 두 번 틀렸...

백준 1748번 - 수 이어 쓰기 1 (python) [내부링크]

https://www.acmicpc.net/problem/1748처음엔 귀차니즘에 문자열을 그대로 이어붙여서 제출했다가 시간초과...

백준 14502번 - 연구소 (python) [내부링크]

https://www.acmicpc.net/problem/14502그 동안 Silver 등급의 DFS, 완전정복 문제도 제대로 못 풀어서...

한국 스마트 미디어학회 춘계학술대회 후기 [내부링크]

교수님이 소개해주신 덕분에 졸업작품을 주제로 논문도 써보고, 심사 승인을 받아서2020년 5월 24일 광주광...

백준 1931번 회의실 배정 (파이썬) [내부링크]

백준 1931번 회의실 배정https://www.acmicpc.net/problem/1931가장 많은 회의 개수를 알아내기 위해선 뭐...

백준 1149번 - RGB 거리 (파이썬) [내부링크]

https://www.acmicpc.net/problem/1149다이나믹 프로그래밍 문제.큰 문제를 작은문제로 나누어서 풀어야 ...

백준 1012번 - 유기농 배추 (파이썬) [내부링크]

https://www.acmicpc.net/problem/1012효율 안 좋은 코드일부러 두 경우로 코드를 짜봤다.list의 인덱스를 ...

프로그래머스 - 전화번호 목록 (파이썬) [내부링크]

프로그래머스는 아직 테스트케이스가 부족한 것들이 많은거 같다.접두사 부분을 잘라주는 [:len(phone_book...

[Naver Map] Xcode에 NaverMap API for iOS 설치하기 [내부링크]

Xcode에 NaverMap API for iOS 설치하기Naver Map API 신청https://www.ncloud.com/product...

백준 2231번 - 분해합 (Python) [내부링크]

https://www.acmicpc.net/problem/2231로 풀었다가 시간이 너무 많이 나와서https://itadventure.tistory...

프로그래머스 - 괄호 변환 (python) [내부링크]

구현보다 문제 이해에 더 많은 시간이 걸린 문제..직접 작성해야 하는 알고리즘은 균형잡힌 괄호 문자열...

백준 1120번 - 문자열(python) [내부링크]

https://www.acmicpc.net/problem/1120완전정복문제 순회중..DFS에 지친 나에게 오랜만에 쉬어가는 문제...

프로그래머스 - 네트워크 (Swift) [내부링크]

프로그래머스 - 네트워크visited까지 있는 진짜 전형적인 자료구조책에 나올 법한 DFS문제...였지만 ...

백준 10951번 - A+B -4 [내부링크]

기존 input()의 문제점 두가지1. 속도가 느림(이유: https://www.acmicpc.net/board/view/855 참고)(실제...

자바 스윙(Java Swing)으로 테트리스 구현 [내부링크]

자바 스윙으로 구현한 테트리스영상이 제대로 나오지 않거나 전체화면이 되지 않을시 https://www.yout...

백준 1904번 01타일 (파이썬) - 메모리, 시간 둘 다 챙기기 [내부링크]

백준 1904번 - 01타일https://www.acmicpc.net/problem/1904처음엔 특이한 문제인줄 알고 열심히 직접 경우...

백준 1182번 - 부분수열의 합 (python) [내부링크]

https://www.acmicpc.net/problem/1182완전정복 문제들을 보다보면숫자의 순서를 고려하는 경우가 있고(순...

프로그래머스 - 타겟 넘버 (swift) [내부링크]

프로그래머스 - 타겟 넘버기본적인 DFS 문제.+ or - 로 이루어진 numbers 배열 길이의 연산의 모든 경...

백준 2579번 계단오르기 (파이썬) [내부링크]

https://www.acmicpc.net/problem/2579이 문제는 점화식을 도출하지 못해서 힌트를 보고 작성했다.아직도...

프로그래머스 - 소수 찾기 (파이썬) [내부링크]

DP, DFS, BFS 문제만 풀다가 오랜만에 단순 무식한 문제 푸니깐 나름의 재미가 있는거 같다 ㅎㅎ;...

RxSwift 기초부터 시작하기 [내부링크]

RxSwift 기초부터 시작하기도움/참고 할 만한 사이트RxSwift란 ? https://medium.com/@jang.wangsu/r...

코딩테스트를 위한 Swift 문법 모음 [내부링크]

0. 환경문자열 파트에서 언급하겠지만, 입력 함수인 readLine()을 사용하려면 playground가 아닌mac os ...

백준 10844번 - 쉬운 계단 수 (파이썬) [내부링크]

백준 10844번 - 쉬운 계단 수https://www.acmicpc.net/problem/10844하루 종일 다이나믹 프로그래밍 문제들...

백준 11053번 - 가장 긴 증가하는 부분 수열 (파이썬) [내부링크]

https://www.acmicpc.net/problem/11053나머지 숫자들(num[j]) 중 비교 대상인 숫자(num[i])보다 작은 숫자...

백준 2798번 - 블랙잭 (파이썬) [내부링크]

https://www.acmicpc.net/problem/2798완전 탐색 문제3중 for문...이 거슬리긴하지만 아무튼 i는 첫 번째...

백준 1966번 - 프린터 큐 (Swift, python) [내부링크]

https://www.acmicpc.net/problem/1966Python완전정복 문제가 맞나.. 싶긴하지만 아무튼 큐로 풀면 되는...

백준 1157번 - 단어 공부 (파이썬) [내부링크]

백준 1157번 - 단어 공부C로 했던 것들 다시 풀어보는 중.. 딕셔너리로 풀어보려다가 귀찮아서 list로 풀...

Git commit author 한 번에 변경하기 [내부링크]

Git author를 잘못 설정해서.. 모두 바꿔줘야 했다.git config --global user.name "현재 아이디&q...

백준 1018번 - 체스판 다시 칠하기 [내부링크]

https://www.acmicpc.net/problem/1018체스의 시작에는 2가지 경우가 있다.1. W부터 시작하는 경우.2. B...

백준 14501번 - 퇴사 (python) DP, DFS로 풀기 [내부링크]

https://www.acmicpc.net/problem/14501요즘 브루트 포스 문제만 골라서 풀고 있는데 문제를 잘 읽어보니 ...

프로그래머스 - 문자열 압축 (python) [내부링크]

그냥 단순 무식하게 풀었다.

백준 6603번 - 로또 (Swift, python) [내부링크]

https://www.acmicpc.net/problem/6603요즘 하고 있는 완전정복 문제들 풀기.기초라고 하는데 나는 아직 익...

2020 SK브로드밴드 인턴사원 정기채용 서류전형 합격 [내부링크]

나름대로 4~5시간동안 열심히 쓰긴 했지만 아무런 첨삭도 받지 못한 채로 아무것도 모르고 처음으로 작성...

백준 2178번 - 미로 탐색 (파이썬) [내부링크]

https://www.acmicpc.net/problem/2178DFS로 풀어보려다가 아무리 해봐도 안되서 힌트를 보니깐 BFS...

백준 14888번 - 연산자 끼워넣기 (python) [내부링크]

https://www.acmicpc.net/problem/14888가지치기를 했던 로또 문제랑 다르게 이 문제는 모든 경로를 완벽히...

[Naver Map] Swift - 기본 구성 (지도 객체, 현 위치 찾기 등) [내부링크]

[Naver Map] Swift - 기본 구성Naver Map API Guide for iOS https://navermaps.github.io/ios-map-sdk/guide-ko/2-1.htmlhttps://navermaps.github.io/ios-map-sdk/reference/index.html사실 글로 굳이 쓸 필요가 없을 정도로 위 링크에서 굉장히 깔끔하게 정리했기 때문에위 링크만 참고해도 모두 이해가 가능하다. 예전에 구글 맵을 사용해서 어플을 만들어본 적도 있었는데잡다한 기능 자체는 구글 맵이 많았지만 네이버 맵이 3.X SDK로 넘어오면서 사용자를 위한 편의성 자체는네이버맵이 훨씬 낫다고 생각한다. 그냥 보면 모두 바로 이해가 된다.따라서 내가 사용했던 기능들 몇 가지만 기재했다.1. 모듈 importimport NMapsMa.......

백준 10996번 - 별 찍기 - 21(파이썬) [내부링크]

백준 10996번 - 별 찍기 - 21https://www.acmicpc.net/problem/10996이전 문제에서 배웠던 sys.stdin.readline() 사용.주어진 값이 홀수이면 위쪽 라인이 아래쪽 라인보다 하나가 더 찍히기 때문에 이를 이용하여 풀었다.C나 다른 언어에서는 정수/정수를 하면 몫이 나오는데 파이썬 같은 경우는 5/2를 해도 2.5가 나온다. 따라서 //로 몫을 구했다.