본문 바로가기

분류 전체보기380

swift 리트코드 문제풀이 - leetcode 2 두 수의 덧셈 swift 리트코드 문제풀이 - leetcode 2 두 수의 덧셈 2. Add Two Numbers 문제 역순으로 저장된 연결 리스트의 숫자를 더하라. 문제의 이해 인자로 두개의 연결리스트가 주어진다. 연결리스트 안의 값은 숫자타입이다. 예를 들어 [1,4] 연결 리스트 F와 [4,7,8] 연결 리스트 S가 주어졌다고 하면 연결리스트 안의 숫자들을 그대로 더해주면 된다. 위의 그림의 예제 처럼 연결리스트 안의 숫자를 다시 뒤집을 필요도 없다. 그냥 주어진 연결리스트 안의 노드 순서대로 숫자 하나씩 더해가면 된다. 1과 4를 더하면 = 5 4와 7을 더하면 = 11 여기서 중요한게 10보다 같거나 크면 올림수를 처리해줘야 한다. 올림수는 carry라는 변수를 만들어서 저장하고 처리한다. 그럼 다시 4와 7.. 2022. 8. 5.
swift 리트코드 문제풀이 - leetcode 24 페어의 노드 스왑 swift 리트코드 문제풀이 - leetcode 24 페어의 노드 스왑 24. Swap Nodes in Pairs 문제 연결 리스트를 입력받아 페어 단위로 스왑(Swap)하여라. 문제의 이해 문제 내용을 한번 살펴보면! 문제의 제시문 그대로다... 인자로 연결 리스트가 주어지고, 우리는 우리가 구현할 함수 안에서 이 주어진 연결 리스트 안의 노드들의 값을 둘씩 짝을 지어서 서로 교환해서 리턴해주면 된다. 예를 들어 위의 그림에서 1,2,3,4 연결리스트가 들어왔으면 둘씩 짝을 지으면 (1,2) (3,4) 이렇게 짝을 지을 수 있다. 그리고 짝지어진 노드들을 서로 바꾸면 (2,1) (4,3) 이렇게 작성할 수 있겠다. 자 그럼..! 풀이 시나리오 [1] 일단 연결리스트의 모든 노드들을 스캔해야 되기 때문에.. 2022. 8. 4.
ios collectionView Tag cell - 여러 옵션 선택하기 기능 구현 ios collectionView Tag 여러 cell 선택하기 기능 구현 어느날 문득 아이폰 앱중에 사용자의 관심사나 성향 등을 입력하는 화면으로 아래와 같은 화면들이 자주 보였다. 아래는 취업관련 앱의 화면중 하나인데 관심있는 분야를 아래 레이아웃 형태로 구성해서 사용자가 쉽게 선택하게끔 유도했다. 그래서 나도 한번 만들어 보고 싶었다. 만들기전에 관련 기술들이 뭐가 있을까 검색을 하다가 아래 처럼 구현해주는 라이브러리도 있다는것을 알았다. 그래도 라이브러리쓰면 너무 싱거우니깐 간단하게 만들어 보자. 시작하기 전에 구조를 잠깐 훑고 가보자. 구조소개 [1]Tendency 파일은 Tendency 즉 각각의 취향 데이터를 담을 struct 타입의 데이터를 담고 있다. [2]TendencyItem : UI.. 2022. 8. 3.
swift 리트코드 문제풀이 - leetcode 206 역순 연결리스트 swift 리트코드 문제풀이 - leetcode 206 역순 연결리스트 206. Reverse Linked List 문제 연결리스트를 뒤집어라 얼핏보고 좀 간한하네? 라고 생각했다. 연결리스트의 point를 이용해서도 뒤집을 수 있을 것 같은데 이번에도 swift의 배열을 이용해보기로 했다. 1.함수안에 빈배열을 선언한다. 2.입력 받은 연결 리스트를 while문을 돌면서 배열에 값을 넣어준다. 3.배열을 뒤집는다. 4.배열안의 요소를 연결리스로 만들어 준다. 끝~! 위의 아이디어를 토대로 소스코드를 작성해보았다. public class ListNode { public var val: Int public var next: ListNode? public init() { self.val = 0; self.n.. 2022. 8. 3.
swift 리트코드 문제풀이 - leetcode 21 두 정렬 리스트의 병합 swift 리트코드 문제풀이 - leetcode 21 두 정렬 리스트의 병합 leetcode 21. Merge Two Sorted Lists 문제 아래 처럼 정렬이 되어 있는 두 연결 리스트를 합하라. 위의 그림에서 빨간색 연결리스트를 A 연결리스트라고 하고 보라색 연결 리스트를 B라고 해보자 리트코드 swift 답쓰기란을 보면 아래와 같은 함수가 주어진다. 아래 함수를 호출 할때 연결리스트 A와 연결 리스트 B를 인자로 전달하면 아래 함수는 두 A,B 연결리스트 안의 숫자들을 비교해서 오름차순으로 정렬한 새로운 연결리스트 C를 리턴해주면된다. func mergeTwoLists(_ l1: ListNode?, _ l2: ListNode?) -> ListNode? { return } 일단 문제를 보자마자 든.. 2022. 8. 3.
ios view Pager - 스와이프로 메뉴 처리하기 (code layout 구현) ios view Pager - 스와이프로 메뉴 처리하기 (code layout 구현) 아래와 같은 UI를 어떻게 구현할 수 있을까 고민해보다가 괜찮은 아티클을 발견해서 정리해본다. 아래와 같은 UI는 상단에 제목 탭을 누르면 제목 탭 아래에 표시가 되면서 해당 화면이 자동으로 스크롤 되는 형태이다. 또한 화면을 좌으로 스와이프 하면 해당 매뉴 탭이 자동으로 선택이 되는 형태이다. 먼저 구현하기 전에 위화면의 구조를 나누어 보자. 먼저 화면은 크게 두개로 나뉜다. TabbedView와 PagedView이다. TabbedView : 화면의 상단 탭 메뉴를 담당하며 collectionView를 가지고 있다. PagedView : 화면의 하단 페이지를 담당하며 collectionView를 가지고 있다. 그리고 .. 2022. 8. 1.
swift 리트코드 문제풀이 - leetcode 234 팰린드롬 연결 리스트 - ver.2 swift 리트코드 문제풀이 - leetcode 234 팰린드롬 연결 리스트 - ver.2 leetcode 234. Palindrome Linked List 이전 포스팅에서 연결 리스트를 이용한 팰린드롬 체크 문제를 while문과 배열을 이용해서 풀어보았다. (swift 리트코드 문제풀이 - leetcode 234 팰린드롬 연결 리스트) 이번 포스팅에서는 다른 방법을 이용해서 팰린드롬 연결 리스트 문제를 풀어볼려고 한다. 준비 코드는 이전 포스팅에서 설명을 했으므로, 이번 포스팅에서는 간단히 코드만 작성해놓는다... 아래와 같은 연결 리스트가 있고, 이 연결 리스트의 값이 팰린드롬인지 확인을 해보자. 즉 거꾸로해도 같은 값인지 체크를 하는 것이다. let nodeFive = ListNode(1) let .. 2022. 8. 1.
swift 리트코드 문제풀이 - leetcode 234 팰린드롬 연결 리스트 swift 리트코드 문제풀이 - leetcode 234 팰린드롬 연결 리스트 leetcode 234. Palindrome Linked List 예제 이번에는 문제를 풀기전에 연결 리스트가 어떤 자료구조인지 알고 있어야 된다.. 연결 리스트의 장단점과 특징을 알고 있어야 되고, 연결 리스트를 코드로 간단하게라도 구현 할 수 있어야 한다. 아니면 최소 연결 리스트 코드를 보고 이해할 정도만되어도 될것 같다! 왜냐면 leetcode에서 연결 리스트의 노드에 해당하는 코드를 제공해 주기 때문이다. 아래 코드 처럼 연결 리스트의 각각의 Node에 해당하는 class 를 제공해준다. 그렇기 때문에 우리는 ListNode 클래스를 어떻게 사용해서 문제를 풀건지만 생각하면 된다. public class ListNode.. 2022. 8. 1.
swift 리트코드 문제풀이 - leetcode 238 자신을 제외한 배열의 곱 swift 리트코드 문제풀이 - leetcode 238 자신을 제외한 배열의 곱 leetcode 238. Product of Array Except Self 문제 배열을 입력받아 output[i]가 자신을 제외한 나머지 모든 요소의 곱셈 결과가 되도록 출력하라. 예제 Input: nums = [1,2,3,4] Output: [24,12,8,6] 예제 Input: nums = [-1,1,0,-3,3] Output: [0,0,9,0,0] 처음에 문제를 봤을때 쉽네? 라고 생각했다...ㅋㅋ ㅋㅋㅋㅋㅋ ㅋㅋㅋㅋ ......... ....... 반복문과 스위프트의 reduce 함수를 이용해서 반복문에서 자신은 * 1을 하고 나머지 숫자는 reduce를 이용해서 전부 곱해버리는 로직을 생각했다. 아래처럼 간단하게 .. 2022. 7. 27.