전체 글

코딩 테스트

행렬의 곱셉 구하기 문제 - swift

arr1 1 4 3 2 4 1 arr2 3 3 3 3 일때 행렬을 곱셈하여 [[15,15],[15,15],[15,15]]을 출력하는 함수를 작성하기 이번 문제는 행렬 A와 행렬 B가 주어졌을 때 그 곱을 구하는 문제이다. 삼중 반복문을 써야되는 점에서 시간복잡도가 크지 않을까라는 걱정을 했는데 다른 분들도 이 방법을 많이 사용하신 것 같았다. 인덱스가 세개가 되니 어떤 인덱스를 이용해서 행렬을 완성시켜야하는지 굉장히 머리가 아팠었다.. 이 문제를 해결하기 위해서 우선 행렬들을 하나하나 직접 인덱스를 적었다. 가령 답이 2*2 행렬이라면 00 01 10 11 -> 이런 형태의 행렬이 될텐데, 2*2와 2*2의 행렬을 곱할때는 00 01 00 01 10 11 10 11 00 = 00*00 + 01*10 01..

iOS 개발/SwiftUI

[SwiftUI] - List활용(storyBoard TableView)

기존 StoryBoard를 활용하면서 개발을 할 때 TableView를 썼던 경험이 많아서 SwiftUI에서는 이를 어떻게 사용하는가에 대한 의문이 들어서 해당 자료들을 찾아봤다. 생성은 비교적 간단하였는데 이는 다음과 같다. 1. 정적 리스트 struct ContentView: View { var body: some View { VStack { List() { Text("1") Text("2") Text("3") Text("4") Text("5") } } } } 실행시키면 다음과 같은 화면이 나타나게 된다.

iOS 개발/SwiftUI

[SwiftUI] - SwiftUI 프로젝트 생성하기

바로 이전 내용에서 간략히 SwiftUI가 무엇인지에 대해 간략히 살펴봤었다. 실습을 통해 배우는 것을 선호하는 나로써는 당장 프로젝트를 시작하여 코드와 UI들을 살펴보고 싶었다. 1. 프로젝트 생성 우선, 다음과 같이 프로젝트를 생성한다. interface에서 SwiftUI를 선택해준 후 프로젝트를 생성해주면 된다. 2. 프로젝트 생성 시 첫 화면 프로젝트를 생성하게 되면 다음과 같은 화면이 나타나게 된다. 기존 storyBoard에서와 비슷하게 왼쪽은 코드가 쓰여져 있고, 오른쪽 화면은 시뮬레이터(?) 비슷한 화면이 나타나 있다. 알아본 결과 오른쪽 화면은 preview기능 즉 미리보기 화면이라고 한다. 왼쪽 화면에서 Text("hello world")를 Text("하위이이이") 라고 바꾸게 되면 그..

iOS 개발/SwiftUI

[SwiftUI] - SwfitUI란?

기존에 storyBoard로 개발을 진행했지만, 새로운 프로젝트를 시작할 때 마다 interface에 있는 SwiftUI가 항상 신경쓰이곤 했다. 그러나 아직 해당 자료가 부족하다는 사실 때문에 공부하기가 조금 꺼려졌었다. 그러던 중 각종 기업들의 우대사항을 보게 되었는데, 많은 기업들에서 SwiftUI에 대한 지식이 있는 사람을 필요로 한다는 것을 알게되어 이 기회에 평소 궁금했던 SwiftUI에 대해 알아보고자 한다. SwiftUI 장점 우선 SwiftUI는 모든 애플 플랫폼(iOS, iPadOS, macOS, watchOS, tvOS)에서 사용자 인터페이스를 만들 수 있게 해주는 새로운 개발 패러다임이다. 나를 포함한 iOS 혹은 애플 플랫폼 개발자들은 대부분 스토리보드 개발 방식을 숙지하고 있지만..

코딩 테스트

코딩 테스트 - [백준 1931] 회의실 배정(탐욕 알고리즘)

문제 한 개의 회의실이 있는데 이를 사용하고자 하는 N개의 회의에 대하여 회의실 사용표를 만들려고 한다. 각 회의 I에 대해 시작시간과 끝나는 시간이 주어져 있고, 각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 회의의 최대 개수를 찾아보자. 단, 회의는 한번 시작하면 중간에 중단될 수 없으며 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다. 회의의 시작시간과 끝나는 시간이 같을 수도 있다. 이 경우에는 시작하자마자 끝나는 것으로 생각하면 된다. 예제 입력 11 1 4 3 5 0 6 5 7 3 8 5 9 6 10 8 11 8 12 2 13 12 14 예제 출력 4 문제 해결 과정 이 문제는 회의가 끝나는 시간을 기준으로 배열을 정렬한다. 만약 끝나는 시간이 같은 것이 있다면 시작 시간이..

코딩 테스트

코딩 테스트 - [백준 11047: 동전] (탐욕 알고리즘)

문제 준규가 가지고 있는 동전은 총 N종류이고, 각각의 동전을 매우 많이 가지고 있다. 동전을 적절히 사용해서 그 가치의 합을 K로 만들려고 한다. 이때 필요한 동전 개수의 최솟값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) 출력 첫째 줄에 K원을 만드는데 필요한 동전 개수의 최솟값을 출력한다. 예제 입력 10 4200 1 5 10 50 100 500 1000 5000 10000 50000 예제 출력 6 나의 답안: var coinArr = [Int]() v..

코딩 테스트

코딩테스트 - Swift Array, Set, Dictionary 관련 함수 시간 복잡도

Array append(_ newElement: Element) 평균 시간 복잡도는 O(1)입니다. 최악의 시간복잡도 O(N)입니다. 최악의 상황은 메모리를 재할당 해야 할 때입니다.(C++ Vector와 유사, exponential로 크기가 증가합니다.) append(contentsOf:) 평균 시간 복잡도는 O(M)입니다.M은 새로운 Elements의 개수입니다. insert(_ newElement: Element, at i: Int) O(N)입니다. i가 마지막 index일 경우, append와 시간 복잡도가 같습니다. count O(1)입니다. subscript(_:) read는 항상 O(1), write는 일반적으로 O(1)입니다. NSArrary와 brideged 됐을 경우나 다른 arrary..

bamtorii
bamtori