전체 카테고리 223

[Vapor] Validation 유효성검사

Vapor버전 4.0을 기준으로 작성된 게시글입니다! struct Hello: Content { var name: String? } extension Hello: Validatable { static func validations(_ validations: inout Validations) { validations.add("name", as: String.self, is: .count(3...)) } } ​ app.get("validation") { req -> String in try Hello.validate(query: req) let name = try req.query.decode(Hello.self).name! req.logger.info("validation test") return name..

iyOmSd/Title: Vapor 2021.03.06

[Vapor] Routing (경로 설정, Data받아오기)

Vapor버전 4.0을 기준으로 작성된 게시글입니다! HTTP Method에는 get - read post - create put - replace patch - update delete - delete 가 있어요 이러한 통신규약을 통한 통신을 만들어볼거에요 //http://127.0.0.1:8080/hello/vapor app.get("hello", "vapor") { req in return "Hello, vapor!" } //http://127.0.0.1:8080/hello/vapor app.on(.GET, "hello", "vapor") { req in return "on hello vapor" } app.get - get에 특화된 함수 app.on(HTTPMethod) - 메소드를 설정해주는 함..

iyOmSd/Title: Vapor 2021.03.06

[Vapor] 프로젝트 기본설정 및 설치

Vapor버전 4.0을 기준으로 작성된 게시글입니다! 맥북을 사용하시면 brew는 익숙할거라 생각하고 시작할게요! vapor를 다운해볼까요 brew install vapor vapor new hello -n hello 라는 이름의 프로젝트를 새로 만들어주는 명령어구요 -n은 그냥 vapor new hello만 한다면 설정을 해주기위해서 질문에 답해야하는 모든 것들을 자동으로 no로 설정하는거에요 프로젝트 기본구조가 이렇게 있을거에요 configure.swift에 route, database, provider같은 서비스를 등록해주고 routes.swift에 경로를 등록해줘요 자세한건 문서를 참고하세요! docs.vapor.codes/4.0/folder-structure/ 프로그래밍의 시작은 Hello Wo..

iyOmSd/Title: Vapor 2021.03.06

[Swift Algorithm]12978 배달 (서머 윈터 코딩)

programmers.co.kr/learn/courses/30/lessons/12978 코딩테스트 연습 - 배달 5 [[1,2,1],[2,3,3],[5,2,2],[1,4,2],[5,3,1],[5,4,2]] 3 4 6 [[1,2,1],[1,3,2],[2,3,2],[3,4,3],[3,5,2],[3,5,3],[5,6,1]] 4 4 programmers.co.kr 풀이방법 그래프문제네요 머리로는 생각이 났지만 풀수가 없어서 개념을 다시 참고했구요 2021/03/06 - [iyOmSd/Title: Algorithm풀이] - [Swift Algorithm] 플로이드 와샬 풀면서 이 개념을 쓰면 편하겠다라는 생각은 들었지만.. 더 노력해야겠어요 아무튼 위의 플로이드 와샬 알고리즘을 사용하면 간단해지죠! 최소거리를 잘..

[Swift Algorithm] 플로이드 와샬

그래프 문제에서 자주 출제되는 문제유형중 하나에요 알고 있으면 정말 유용하게 사용 할 수 있다고 생각해요 그래프유형에서 크루스칼 알고리즘과 플로이드 와샬이 대표적인 그리디 알고리즘이에요 크루스칼은 최소 간선을 싸이클 없이 더해가면서 최소 비용을 찾는 과정이라면 (한 정점에서 다른정점으로 가는 최단거리) 플로이드 와샬은 현재 노드의 최솟값을 지정할때 현재값과 다른 경로로 왓을때의 최솟값을 비교해서 넣어주는 방식이에요 (모든 정점에서 다른정점으로 가는 최단거리) 1에서 5까지가는경우는 1 - 2 - 3 - 5 -> 비용5 1 - 2 - 5 -> 비용 3 플로이드 와샬은 이런경우에 유용해요 사용하면 1에서 5까지의 비용은 3이라고 저장되는 방식이에요 func 플로이드와샬() { for i in 0..

[Swift Algorithm] 49994 방문길이 (프로그래머스)

programmers.co.kr/learn/courses/30/lessons/49994 코딩테스트 연습 - 방문 길이 programmers.co.kr 풀이방법 범위가 여유있기때문에 생각하기 쉬운편에 속하는 문제였어요 UDRL 문자대로 움직이고 중복되는 라인은 세지않고 범위를 넘어가지않도록 넘어갈경우 제자리! 튜플(Int, Int)를 이용해서 하려고했지만 Set 튜플이 Hashable하지않아서 Set에는 사용할 수 없더라구요 그래서 구조체를 만들어서 사용햇고 선분은 (1,0) - (0,0) 을 연결한것과 (0,0) - (1,0)을 연결한 것이 같기때문에 == 연산자를 구현해주면 Set에서 걸러질줄 알았는데 안걸러지더라구요 그래서 한번은 그대로 한번은 순서를 바꿔서 2개씩 저장했어요 양방향을 Set에 저장해..

[Swift Algorithm] 72412 순위 검색 (2021 카카오 블라인드 공채)

programmers.co.kr/learn/courses/30/lessons/72412 [Int] { var result: [Int] = [] struct Info { enum DevLanguage: String { case java, cpp, python } enum Job: String { case backend, frontend } enum Career: String { case junior, senior } enum Food: String { case chicken, pizza } let language: DevLanguage let job: Job let career: Career let soulFood: Food let score: Int init(_ s: String) { let infos ..

[Swift Algorithm] 68936 쿼드압축 후 개수 세기 (월간 코드 챌린지1)

programmers.co.kr/learn/courses/30/lessons/68936 코딩테스트 연습 - 쿼드압축 후 개수 세기 [[1,1,0,0],[1,0,0,0],[1,0,0,1],[1,1,1,1]] [4,9] [[1,1,1,1,1,1,1,1],[0,1,1,1,1,1,1,1],[0,0,0,0,1,1,1,1],[0,1,0,0,1,1,1,1],[0,0,0,0,0,0,1,1],[0,0,0,0,0,0,0,1],[0,0,0,0,1,0,0,1],[0,0,0,0,1,1,1,1]] [10,15] programmers.co.kr 풀이방법 핵심은 '해당 영역의 요소들이 모두0 혹은 모두1인 경우 하나로 압축 할 수 있다.' 겟죠?! 우선그럼 해당 영역을 쪼개야겟죠 예를들어 4칸이있다고하면 행과 열 모두 범위가 0..

[Swift] TTS 텍스트 음성전환 (AVSpeechSynthesizer)

문자를 음성으로 읽어주는 기능을 구현해볼거에요 TTS라고하죠 Text To Speech 쉽게 설명하면 사전에 발음듣기처럼 해당 단어를 말해주는거구요 이번에 사용할 클래스들은 AVFoundation에 있는 AVSpeechSynthesizer AVSpeechUtterance AVSpeechSynthesisVoice 를 사용해볼 거에요 AVSpeechSynthesizer 텍스트로부터 합성된 음성을 생성하고 진행중인 음성을 모니터링 하거나 제어 할 수 있는 객체 읽기가 끝날 때 혹은 취소할 때 해제된다고 하네요 Delegate도 정의되어있는데 Speech start Speech finish Character range will be spoken Speech paused Speech continued 원하는상황에..

iyOmSd/Title: Swift 2021.02.23

[Swift Algorithm] 42860 조이스틱 (프로그래머스)

programmers.co.kr/learn/courses/30/lessons/42860 코딩테스트 연습 - 조이스틱 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다 programmers.co.kr 풀었던 문제를 또 풀어봤는데... 못풀었어요 ㅠ.. 후... Level2라하지만 2가 아닌거같구요... 좌로가는경우 우로가는경우를 각각 검사해주는 로직으로 풀엇지만 ABABAAAAAB 와 같은 경우에는 도중에 되돌아가는게 이득이기때문에 이런 예외케이스를 통과하지못했어요 더 효율적으로 풀기위해 아래와같이 풀었어요 풀이방법 위아래로 알파벳을 체크하는 것은 좌우..