본문 바로가기

전체 글

(19)
[프로그래머스] 가장 많이 받은 선물 문제 선물을 직접 전하기 힘들 때 카카오톡 선물하기 기능을 이용해 축하 선물을 보낼 수 있습니다. 당신의 친구들이 이번 달까지 선물을 주고받은 기록을 바탕으로 다음 달에 누가 선물을 많이 받을지 예측하려고 합니다. 두 사람이 선물을 주고받은 기록이 있다면, 이번 달까지 두 사람 사이에 더 많은 선물을 준 사람이 다음 달에 선물을 하나 받습니다. 예를 들어 `A`가 `B`에게 선물을 5번 줬고, `B`가 `A`에게 선물을 3번 줬다면 다음 달엔 `A`가 `B`에게 선물을 하나 받습니다. 두 사람이 선물을 주고받은 기록이 하나도 없거나 주고받은 수가 같다면, 선물 지수가 더 큰 사람이 선물 지수가 더 작은 사람에게 선물을 하나 받습니다. 선물 지수는 이번 달까지 자신이 친구들에게 준 선물의 수에서 받은 선물..
[iOS] MVC모델의 효과적인 사용 MVC 모델이란, Model, View, Controller의 세 가지 부분으로 나누어서 효과적으로 관리하는 것을 말한다. 간단히 아래와 같은 그림으로 표현할 수 있다. 한마디로 사용자가 View를 통해서 화면을 보고 Controller를 사용하면 그것이 Model에 명령을 보내고 그 명령은 View를 업데이트 하는 방식이다. 실제로 현업에선 MVC 모델보다는 MVVM 모델을 더 많이 사용하는 것 같았다. MVC모델로 작성하게 되면 Controller 부분에 너무 많은 양이 몰리게 되기 때문에 그닥 효과적이지 않기 때문인 것 같았다. 그래도 나는 MVC모델을 알고 MVVM모델로 넘어가야한다는 생각과 아직은 어떤 방식으로 짜야 이것이 MVC모델이다!라고 하기 애매한 느낌이 들어 공부하게 되었다. 효과적으로..
[iOS] 코드로 UINavigationController 사용하기 ViewController를 다른 ViewController와 연결하는 방법에는 크게 4가지 종류가 있다. 1. NavigationController를 사용하여 화면 전환하기 2. ViewController의 View 위에 다른 View를 바꾸기 3. 다른 ViewController를 호출하기 4. Segueway를 사용하여 화면 전환하기 이번에는 NavigationController를 통한 화면 전환에 대하여 다루어 보려고 한다. FirstVC를 설정하고, push하는 형태로 secondVC를 띄우려고 했다. 그래서 버튼을 하나 만들고 그에 대한 Action으로 아래와 같은 코드를 넣어주었다. let secondVC = SecondViewController() self.navigationControll..
[iOS] SnapKit 사용하기 코드로 UI를 짜다 보면 `NSLayoutConstraint`를 주기 위해서 엄청난 코드의 양을 사용해야 할때가 많다. 요소가 적을 때는 괜찮지만 들어가는 요소가 많아지게 되면 `Contstraint`를 위한 코드가 엄청난 양을 차지하게 된다. 이것을 간결화하기 위한 것이 SnapKit 라이브러리이다. https://github.com/SnapKit/SnapKit SnapKit import하기 Xcode를 실행시키고 프로젝트 -> Package Dependencies -> +버튼 여기서 +를 누르고 깃허브링크를 입력하면 Package 설치가 완료된다. 완료된다면 이렇게 프로젝트 아래에 Package가 따로 뜬다. SnapKit의 사용 import SnapKit 일단 `import`를 해주고, `사용하고싶..
[Swift] Class와 Struct의 차이점 `class`와 `struct`는 언뜻 보면 비슷해 보일 수 있다. class Vehicle { var wheel = 4 func move() { print("move forward") } } struct Vehicle { var wheel = 4 func move() { print("move forward") } } 다음 예시를 보면 `class`와 `struct`라는 이름만 달라졌지 그 이외에 달라진 것은 없어보인다. let vehicle1 = Vehicle() 또한 사용을 할 때도 위와 같이 같은 꼴이다 보니 두 가지를 굳이 왜 구분해놓았지?라고 생각할 수 있다. 왜냐? 내가 처음에 그랬으니까~ 하지만 두개는 엄연히 다른 것이다.! 하나하나 어디가 다른지 같이 짚어보자. 1. 상속 `class`와 ..
[iOS Development] 스토리보드를 활용한 나만의 To Do List 만들기 - 1 ** 공부한 것을 정리하기 위한 블로그입니다 ** 일단 간단한 To Do List를 만들기 위해서 필요한 구성 요소가 무엇일까 생각해보았다. 1. 오늘 할일의 목록이 담긴 리스트 2. 리스트에 항목을 추가할 수 있는 버튼 3. 목록 중 하나를 수행했을 때 체크할 수 있는 버튼 4. 수행한 목록을 따로 볼 수 있는 곳 내가 생각한 최소한의 To Do List에 필요한 것은 이 정도였다. 가장 먼저 필요한 것은 항목이 들어갈 리스트를 만드는 일이었다. 긴 리스트를 만들기 위해서는 TableView라는 것을 사용한다. TableView와 TableViewCell을 모두 끌어다 놓으면 이런 모양이 생기고, 위에 Prototype Cell이 생긴다. 나는 각각의 요소를 출력할 때 사용하기 위해서 Prototype..
[WIL] 2023.07.30. - 2023.08.04 한주 회고록 일단 이번주의 목표는 스토리보드를 활용한 UI개발이었다. 하지만 제공된 강의로는 사실 바로 적용해 보는 것에 약간 문제가 있는 것 같았고 다른 분께서 추천해주신 강의를 결제해서 들으면서 부족한 점을 채웠다. 안젤라유님의 강의였는데, 하... 나의 니즈를 모두 만족하기는 쉽지않았던 것 같다. 하지만 그래도 상세한 강의라서 오히려 처음 시도해보는 나에게는 더 도움이 되었다고 생각한다. 그리고 스위프트 문법도 부족함이 많이 느껴졌기 때문에 야곰 스위프트 프로그래밍이라는 문법책을 하나 구매해서 처음부터 정독중이다. 어제부터 시작했고, 목표는 총 8일동안 1회독 하기이다...... 다음주면 다 끝나있어야 나의 계획에 차질이 없는데... 다 할 수 있을지 걱정이 살짝 된다. 생각보다 이번 주는 온전히 집중하기 어려..
[Swift] while문의 구문이름표를 알아보자 코드를 짜다보면 반복문을 중첩해서 사용해야하는 일이 꼭 생긴다. 하지만 파이썬 개발을 하던 내가 정말 불편하다고 느꼈던 점은 파이썬에는 breakpoint가 존재하지 않는다. 그래서 이중 반복문이 되었을 때 모든 코드에서 break하기 정말 까다로웠다.;; 하지만 swift에는 breakpoint보다 더 유용한 구문이름표 라는 것이 존재한다. 구문이름표는 반복문마다의 이름을 설정해주고, 그 지정된 구문을 break나 continue등으로 바로 바깥쪽 반복문을 종료시킬 수 있다. var numbers: [Int] = [3, 2343, 6, 3432] numbersLoop: for num in numbers { if num > 5 || num < 1{ continue numbersLoop } var cou..