일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- swift 9095 풀이
- swift 연속된 부분 수열의 합
- 연속된 부분 수열의 합 swift
- ac swift 풀이
- rxswift
- swift algorithm
- swift 백준 9095
- iOS Charts
- MVVM
- swift
- swift ac 문제풀이
- 연속된 부분 수열의 합 투포인터
- 1 2 3 더하기 풀이
- swift ac
- swift dfs
- ios
- swift codility
- swift 2xn 타일링
- swift 알고리즘
- swift gRPC
- swift ac 풀이
- ac 투포인터
- swift 프로그래머스
- swift 연속된 부분 수열의 합 풀이
- swift 2xn 타일링 풀이
- swift 2xn 타일링 백준
- ac 구현 풀이
- 123 더하기 풀이
- 백준 2xn 타일링 풀이
- 백준 2xn 타일링
- Today
- Total
목록
728x90
전체 글
728x90
반응형
(52)
boraBong
💬 문제 https://app.codility.com/programmers/lessons/4-counting_elements/frog_river_one/ FrogRiverOne coding task - Learn to Code - Codility Find the earliest time when a frog can jump to the other side of a river. app.codility.com 💬 Idea 처음에는 X 크기를 가진 배열을 false로 모두 초기화하여 생성한 뒤, 반복문을 돌며 해당 인덱스의 값을 true로 바꾼 후 조건문을 통해 해당 배열이 모두 true인지 검사해주는 작업을 거쳤었다. 그러나 이렇게 구현하니 반복문 안에 O(N)의 시간복잡도를 가지는 작업이 들어있어 시간 초..
💬 문제 https://app.codility.com/programmers/trainings/1/flood_depth/ 💬 Idea 물 웅덩이는 maxWall이 더 큰 수로 갱신될 때마다 새로운 웅덩이가 생기므로 큰 웅덩이가 갱신될 때 가장 작은 depth를 100000000로 초기화해주었다. 이후 작은 값이 나올 때마다 minLast를 한 웅덩이 내의 가장 작은 값으로 갱신해주었다. 그리고 큰 웅덩이 내에서 작은 웅덩이가 생길 때마다 maxDepth의 값과 비교하여 큰 값을 저장하도록 했다. 💬 풀이 public func solution(_ A : inout [Int]) -> Int { var maxWall = A[0] var last = A[0] var wall = A[0] var minLast = ..
💬 문제 https://app.codility.com/programmers/lessons/5-prefix_sums/genomic_range_query/ 처음엔 굉장히 간단한 문제라 생각했지만, 효율성 테스트를 통과하지 못해 굉장히 애를 썼다. O(N^2)의 효율성을 → O(N + M)으로 높이기 위해 구간합을 사용해주었다. 💬 Idea a, c, g, t 각각의 배열을 만들어 (t는 없어도 됨) 알파벳이 나온 구간에는 이전 값 + 1을 해주어 저장해준다. 이후 P를 돌면서 (P) 에서 (Q + 1) 까지의 차가 0 이상일 때 a,c,g,t 중 조건에 해당하는 값을 ans에 append한다. Q + 1 까지인이유: 이전 인덱스와 비교하여 해당 구간에서 알파벳이 등장했는지를 파악하기 위해 배열의 인덱스를 +..
💬 문제 https://app.codility.com/programmers/lessons/5-prefix_sums/min_avg_two_slice/ 💬 Idea O(N**2)의 풀이밖에 떠오르지 않아서 혹시나..? 하고 제출해봤지만 역시나 😊😊!!!! O(N)의 풀이여야 효율성 테스트를 통과할 수 있었다. 따라서 O(N)의 풀이를 도출하려 해봤지만 도저히 O(N)의 시간복잡도를 갖는 풀이가 생각나지 않았다. 그래서 다른 블로그를 참고했는데, 평균값의 원리라는 수학 공식을 새로 알게되었다 !! 평균값의 원리 💡 구간의 평균은 부분구간의 평균 중 가장 작은 부분구간의 평균보다 크다. 평균은 어느 두 수가 있을 때 가장 작은 수보다 큰 값을 가진다. 이 원리로 생각해보았을 때, 원소가 4개인 그룹의 평균은 앞..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/nJker/btr4TJN9uUn/KRY6z7z6QHU3ct0OBLlHzk/img.png)
Swift Queue(Dequeue) 알고리즘 구현 트러블슈팅 기록 - Queue 구현시 시간초과 에러가 발생한다면? Swift로 알고리즘 문제를 풀면서 큐 알고리즘 관련한 문제가 나올 때 배열을 이용하여 큐를 구현하곤 했었습니다. (Swift에서는 따로 Queue를 지원하지 않기에) 따라서 enqueue를 구현할 때는 append()를, dequeue를 구현할 때에는 자연스레 removeFirst() 함수를 사용해주었습니다. 그런데 최근에 알고리즘 문제를 풀면서 위와 같은 큐 구현방법이 시간 복잡도 측면에서 효율적이지 않다는 것을 알게 되어 트러블슈팅을 기록하고, 효율적인 큐 구현 방법을 공부해보려 합니다 :( :( ⚠️ Swift에서 Queue(Dequeue) 알고리즘을 구현하며 마주한 시간초과 에러..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/lRdGF/btr3LGpOwJR/VbugptPxpSv5Qj1NsO01ek/img.png)
iOS에서 gRPC 통신을 실습해봅시다! gRPC 통신을 위해 사용할 예제는 https://github.com/grpc/grpc-swift/tree/main/Sources/Examples/HelloWorld 입니다. 💻 예제 동작 원리 사용할 gRPC 서버는 배포된 서버는 아니며 예제를 다운하여 우리의 local 환경에서 실행시킵니다. 이후 서버가 local에서 돌고 있을 때 우리는 iOS 환경에서(client) Helloworld_GreeterClient를 사용하여 서버와 통신할 수 있습니다. 서버와 통신하여 서버의 sayHello(request) 메서드를 호출하여 서버로부터 인사말을 받아옵니다. 위 과정을 하나씩 따라가봅시다! 1. gRPC 서버 로컬에서 실행시키기 1. 예제 다운로드 하기 # 레포지..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/sf7Fl/btr3Bv4tpOr/oh4eQ5A6ekbobkcFUNDej0/img.png)
💡 gRPC란? 네트워크 상태나 콜 방식을 신경쓰지 않고 프로그래머가 원격의 함수를 실행하는 것 gRPC는 고성능 오픈소스 RPC(Remote Procedure Call) 프레임워크로서 HTTP/2 기반의 프로토콜 버퍼(Protobuf)를 이용해 다양한 언어와 플랫폼 간 통신을 지원합니다. gRPC는 protobuf를 이용해 메시지를 직렬화하고, 이를 전송하고 수신 측에서는 다시 역직렬화하여 사용합니다. 이를 통해, 데이터 전송량과 네트워크 대역폭을 최소화하고, 성능을 최적화할 수 있습니다. gRPC는 다수의 동시 요청과 응답 처리, 양방향 스트리밍 및 효율적인 데이터 압축 등의 기능을 제공합니다. 또한, 다양한 인증 및 보안 기능을 제공하여 안전한 통신을 보장합니다. gRPC에서는 protobuf를 이..
Meet Swift Regex - WWDC22를 보고 추가로 궁금한 부분을 공부하여 정리해보았습니다. 💡 정규표현식이란? 사용자가 규칙을 세워 패턴을 정의해둔 String 정규 표현식은 패턴을 설명하는 간결한 방법으로, 문자열의 일부를 일치시키거나 추출하는 데 도움이 될 수 있습니다. Regex 정규식 리터럴 또는 문자열에서 정규식 구문을 사용하여 인스턴스를 만들 수 있습니다. ⇒ swift에서는 Regex에서 정규표현식 구문을 사용할 수 있다! 💡 Regex 만들기 String으로 만들기 let simpleDigits = try Regex("[0-9]+") 2. / / 로 만들기 let keyAndValue = /(.+?): (.+)/ // /.../ 패턴 : Regex Literal이라 칭함 → / ..