분류 전체보기 75

[프로그래머스] - 보석 쇼핑(파이썬)

알고리즘이 생각이 안나 힌트에서 어떤 알고리즘 써야되는지 확인함 https://school.programmers.co.kr/learn/courses/30/lessons/67258 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 진열대 번호 순서대로 보석들의 이름이 저장된 배열 gems가 매개변수로 주어집니다. 이때 모든 보석을 하나 이상 포함하는 가장 짧은 구간을 찾아서 return 하도록 solution 함수를 완성해주세요. 가장 짧은 구간의 시작 진열대 번호와 끝 진열대 번호를 차례대로 배열에 담아서 return 하도록 하며, 만약 가장 짧은 구간이 여..

알고리즘 2023.02.19

[프로그래머스] - 스타 수열 (파이썬)

결국 못 풀었던 문제, 감도 잘 못잡음 https://school.programmers.co.kr/learn/courses/30/lessons/70130 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 다음과 같은 것들을 정의합니다. 어떤 수열 x의 부분 수열(Subsequence)이란, x의 몇몇 원소들을 제거하거나 그러지 않고 남은 원소들이 원래 순서를 유지하여 얻을 수 있는 새로운 수열을 말합니다. 예를 들어, [1,3]은 [1,2,3,4,5]의 부분수열입니다. 원래 수열에서 2, 4, 5를 제거해서 얻을 수 있기 때문입니다. 다음과 같은 조건을 모두..

알고리즘 2023.02.17

Tuist(3) - 환경변수

기능적인 부분들은 전글에서 다 끝마쳤다. 이번글에서는 약간 감초가 같은 것들만 다룰 것이다. 4. 환경 변수를 이용하여 generate하는 방법 여태까지 진행한 단계에서 살짝 아쉬운 감이 있다. 바로 tuist generate를 사용했을때 무조건 Demo들도 같이 빌드 된다는 것이다. Demo앱들은 사실상 개발할때만 필요한 것이기 때문에 배포하려고 할때는 굳이 빌드를 할 필요가 없다. 우리는 이 과정을 위하여 환경 변수를 사용할 것이다. Tuist는 terminal에서 환경변수를 써서 이를 Project.swift에서 사용할 수 있게 되어 있습니다. 환경변수는 TUIST_[이름] 형태로 쓰면 Tuist가 읽을 수 있습니다. 따라서 generate할 당시에 배포를 위한 빌드냐 개발을 위한 빌드냐를 환경변수..

iOS 2023.02.13

Tuist(2) - 기존 프로젝트에 도입하기

전글에서는 Tuist 설치 및 시행방법 그리고 기본적인 Tuist의 구조에 대해서 알아 보았다. 이번글부터는 본격적으로 어떻게 기존 프로젝트에 Tuist를 도입하는지에 대해 글을 써볼 것이다. 3.Tuist Edit 3-1. 현재 프로젝트에 맞게 Tuist 디렉토리 생성하기 본격적으로 Project.swift 파일과 Project+Templates.swift 파일을 추가, 수정 하며 우리가 원하는 프로젝트의 형태로 만들어나갈 것이다. 그전에 일단 불필요한 파일들을 지워서 다음과 같이 만들어놓자. 안에 있는 Config.swift와 Project+Template.swift은 파일을 냅두고 코드들만 싹다 지워놓으면 된다. 그리고 다시 우리가 원하는 최종 형태의 구성물을 확인해보자. 우리의 최종적인 형태는 a..

iOS 2023.02.13

TUIST(1) - 설치,실행,기본구조

예전 회사에 있을때 부터 앱이 커짐에 따라 모듈화의 필요성을 느끼기는 했었다. 내부 서비스인 "Inpose" IOS의 앱의 규모는 cocoapod 제외하고 총 888개의 파일과 147,566의 line수를 가지고 있다. 작성한 프로젝트의 총 라인수는 다음과 같이 구할 수 있다. 터미널로 원하는 프로젝트로 이동하여 다음 명령어를 실행하면 알 수 있다. find . \( -iname \*.swift \) -exec wc -l '{}' \+ 프로젝트가 이것 하나만 있는 것이 아닌 외주로 받고 지속적으로 관리해준 앱 중에서도 이와 같은 규모를 가진것이 2 ~ 3 개 정도 있었다. 이런 프로젝트들은 특성상 개발하는 와중에 요구사항과 디자인이 많이 바뀌기도 하고 출시한 후에도 전면 리뉴얼을 할 만큼 수정사항이 많았..

iOS 2023.02.12

[프로그래머스] 카드 짝 맞추기

이 문제는 힌트를 얻고 나서 푼 문제 https://school.programmers.co.kr/learn/courses/30/lessons/72415 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제는 4x4 격자에서 같은 그림의 카드를 뒤집는 최소 횟수를 구하는 문제이다. 문제를 보자마자 4x4 격자의 크기, 최소 횟수 구하는 문제로 완전탐색을 해야하고 bfs와 dfs를 모두 사용해야 되겠다는 것은 알았다. bfs는 최단거리 dfs는 어떤 카드를 먼저 뒤집느냐에 따라서 결과가 달라지기에 필요하다. 하지만 일반적인 bfs와 다르게 ctrl + 방향키가..

알고리즘 2023.02.09

MVVM(6) - ViewModel

5. ViewModel Class? or Struct? MVVM에서 가장 중요시 되는 ViewModel에 대해서 이야기를 해볼까 합니다. MVVM자체가 개념만 있는 상황이다 보니 각 단체에 따라서 ViewModel을 구성하는 방법이 다릅니다. 이 와중에 가장 첫번째로 대두 되는 고민은 ViewModel은 Struct이냐? Class?이냐 일거 같아요. 그럼 어떤것이 더 ViewModel에 어울리냐에 먼저 Struct와 Class가 어떻게 다른지 간략하게 짚어보고 넘어가겠습니다. 5-1.Struct vs Class 애플 개발자들 사이에 "Struct가 Class보다 더 좋다!"라는 이야기가 가끔 나옵니다. 그 이유는 애플 공식 문서에 보면 다음과 같은 말이 나오기 때문입니다. 번역하면 "기본적으로 Stru..

iOS 2023.01.13

MVVM(5) - Coordinator

이번글은 Coordinator Pattern에 대한 마지막 글입니다. 앞선 글들에서 Coordinator Pattern으로 화면을 전환하는 법 그리고 Child Coordinator를 삭제하는 법에 대해서 알아보았습니다. 이번에는 Child Coordinator를 삭제하는 법에서 조금 더 수정된 형태를 소개해드려 볼까 합니다. 4. childCoordinator를 삭제 하는 법 (2) navigation pop 혹은 dismiss 이벤트를 캐치하기 위해서 UINavigationControllerDelegate와 UIViewControllerTransitionDelegate를 사용하는 것 까지 해봤는데 여기서 2%쯤 부족하다고 생각되는 부분이 있습니다. 바로 다음과 같은 상황입니다. 다음과 같이 하나의 C..

iOS 2023.01.05

MVVM(4) - Coordinator

2. 뷰 전환은 어디에서 하는가 전글에서 다루는 Coordinator의 연장선입니다. 전글에서는 View와 Coordinator가 소통,화면 전환하는 법 그리고 Coordinator의 기본적이 구성에 대하여 글을 썻습니다. 그리고 말씀 드리는 와중에 Coordinator패턴에서는 객체를 잃지 않으려고 childCoordinator를 사용한다고 말했습니다. 이번에는 화면을 닫으면서 혹은 뒤로가면서 Coordinator가 이를 어떻게 감지하고 childCoordinator에서 삭제하는 지에 대하여 글을 써보겠습니다. 3. childCoordinator를 삭제 하는 법 우선 Coordinator를 쓰지 않을때는 어떻게 할까요? 그냥 self.navigationController?.popViewControlle..

iOS 2022.12.27

MVVM(3) - Coordinator

2. 뷰 전환은 어디에서 하는가 전글에 이어서 이번에도 뷰 전환은 어디에서 이루어지는가에 대해 알아보겠습니다. 전글에서는 뷰 전화를 View에서 하는 법과 ViewModel에서 하는 법을 알아보았고 이번 글에서는 제 3의 책임자를 두어 화면 전환을 이루는 패턴 Coordinator 패턴에 대해서 알아보겠습니다. 1. Cooridnator의 기본 우선 coordinator의 기본 뼈대 부터 간단하게 보겠습니다. Coordinator 패턴은 Soroush Khanlou라는 개발자로부터 탄생한 개념입니다. Khanlou의 글 중에서 이런말이 나옵니다. Don’t forget, the view controller base class is prefixed with UI. It’s view object, and h..

iOS 2022.12.23