분류 전체보기
알고리즘 - DFS BFS
드라마를 볼 경우 DFS(Depth-first search) 깊이우선탐색 = 한개의 드라마를 처음부터 끝까지 몰아본다 그래프에서 깊은 부분을 우선적으로 탐색하는 방식이다. 1 -> 2 -> 3 -> 4 -> 6 -> 5 문제 유형 1. 경로 탐색 유형(최단거리, 시간) A점부터 B점까지의 최단 거리와 시간을 구하라. 2. 네트워크 유형(연결) 여러 개체들이 주어진 상태에서 연결되어있는 그룹의 개수를 구하거나, 개체가 같은 네트워크 안에서 연결되어 있는지 확인하는 문제 https://www.youtube.com/watch?v=3G2lwJkLFEY&list=PLDV-cCQnUlIZH0wklfVG1IN9ks4g92oN7&index=4 3. 조합 유형(모든 조합 만들기) 여러가지의 조합을 전부 만들고 비교해봐야..
코딩테스트 - 타겟 넘버(DFS)
타겟 넘버 문제 설명 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3 사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 주어지는 숫자의 개수는 2개 이상 20개 이하입니다. 각 숫자는 1 이상 50 이하인 자연수입니다. 타겟 넘버는 1 ..
코딩테스트 - [Swift] 귤고르기
귤 고르기 문제 설명 경화는 과수원에서 귤을 수확했습니다. 경화는 수확한 귤 중 'k'개를 골라 상자 하나에 담아 판매하려고 합니다. 그런데 수확한 귤의 크기가 일정하지 않아 보기에 좋지 않다고 생각한 경화는 귤을 크기별로 분류했을 때 서로 다른 종류의 수를 최소화하고 싶습니다. 예를 들어, 경화가 수확한 귤 8개의 크기가 [1, 3, 2, 5, 4, 5, 2, 3] 이라고 합시다. 경화가 귤 6개를 판매하고 싶다면, 크기가 1, 4인 귤을 제외한 여섯 개의 귤을 상자에 담으면, 귤의 크기의 종류가 2, 3, 5로 총 3가지가 되며 이때가 서로 다른 종류가 최소일 때입니다. 경화가 한 상자에 담으려는 귤의 개수 k와 귤의 크기를 담은 배열 tangerine이 매개변수로 주어집니다. 경화가 귤 k개를 고를..
GitHub(1)
GitHub 코딩 외에 실무적인 문제를 해결할 수 있는 깃허브. 포트폴리오를 올릴 수 있는 장소가 될 수 있다. 소스코드를 공유 할 수 있는 장소. 깃허브가 하는 역할 1. 내 소스코드를 저장(버전관리) - 이전에 만들어진 모든 사항의 스냅샷을 저장한다. 이는 ㄴ어떤 시점의 버전으로 되돌릴 수 있다. 2. 소스코드를 공유하는 공간이 될 수있다. - 다른 깃허브 사용자의 프로젝트를 둘러보고 배우기 위해 자신만의 복사본으로 가져올 수 있다. 3. 협업하는 도구가 될 수 있다. - 협업을 할 때 같은 페이지에 각자의 수정 사항을 업로드할 수 있고 이를 병합할 수 있다. github를 사용하기 위해선 git을 다운로드 받아야 한다. github는 소스코드를 올리는 공간의 개념이고 소스코드를 내 컴퓨터에서 인터넷..
알고리즘 - 순열(Permutation Algorithm)
수학에서 순열(Permutation)또는 치환은 순서가 부여된 임의의 집합을 다른 순서로 뒤섞는 연산이다. n개의 숫자가 쓰여진 공증에서 r개의 수를 뽑아 나열한 경우의 수. 순서대로 나열한것 = "순열" 공식 (nPr) 서로 다른 n개 중 r개를 선택하는 경우의 수. (! = 팩토리얼) 3P2인 경우 공식은 3! / 1! 가 되므로 3!는 1, 2, 3 = 6이 된다(6개의 경우의 수) 모든 경우의 수를 계산하는 완전탐색에서 사용하는 알고리즘이다. 예를들어 {1, 2, 3}이 있다고 했을때 가능한 경우의 수) 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 구현방법 - 머리속으로 생각하기 쉽지만 구현은 어렵다. DFS와 체크리스트를 사용하는게 가장 쉬운 방법. 코드를 외우고 있는것이 좋..
[Swift] Character를 Int로 변환
let char: Character = "5" if let intValue = char.wholeNumberValue{ print(intValue) } else { print("Not an Integer") } 또는 let char: Chracter = "1" if let number = Int(String(char)){ //use number } 속도는 .wholeNumberValue가 더 빠르다고 한다.
코딩테스트 - [Swift] 모의고사(완전탐색)
모의고사 문제 설명 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ... 2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ... 3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ... 1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution ..
코딩테스트 - [Swift] 최소직사각형(완전탐색)
문제 설명 명함 지갑을 만드는 회사에서 지갑의 크기를 정하려고 합니다. 다양한 모양과 크기의 명함들을 모두 수납할 수 있으면서, 작아서 들고 다니기 편한 지갑을 만들어야 합니다. 이러한 요건을 만족하는 지갑을 만들기 위해 디자인팀은 모든 명함의 가로 길이와 세로 길이를 조사했습니다. 아래 표는 4가지 명함의 가로 길이와 세로 길이를 나타냅니다. 명함 번호 가로 길이 세로 길이 1 60 50 2 30 70 3 60 30 4 80 40 가장 긴 가로 길이와 세로 길이가 각각 80, 70이기 때문에 80(가로) x 70(세로) 크기의 지갑을 만들면 모든 명함들을 수납할 수 있습니다. 하지만 2번 명함을 가로로 눕혀 수납한다면 80(가로) x 50(세로) 크기의 지갑으로 모든 명함들을 수납할 수 있습니다. 이때..
[SwiftUI] Tutorials5. Animating View and Transitions
SwiftUI를 사용하면 애니메이션 효과가 어디에 적용되는지에 상관없이 뷰나 뷰의 상태를 변경하는 개별적인 애니메이션을 적용할 수 있다. SwiftUI는 이런 오버랩 및 인터럽트 가능한 애니메이션 등의 모든 복잡한 결합을 당신을 위해 처리한다. 이번 튜토리얼에서는 Landmark앱을 사용하는 사용자의 하이킹을 추적하는 그래프 애니메이션을 적용한다. animation(_ :)를 사용하면 뷰에 애니메이션을 적용하는 것이 얼마나 쉬운지 알 수 있다. Add Hiking Data to the App 프로젝트 파일의 리소스 파일(hikeData.json)을 프로젝트에 추가한다. Hike.swft를 추가해준다. Landmark구조체와 마찬가지로 Hike구조는 Codable을 준수해야 한다. import Founda..
[SwiftUI] Tutorials4. Drawing Paths and Shape
사용자는 목록에서 랜드마크를 방문 할 때마다 배지를 받는다. 물론 사용자가 배지를 받으려면 배지를 만들어야 한다. 이 튜토리얼에서는 paths와 shapes을 결합하여 배지를 만드는 과정을 안내하며, 그런 다음 위치를 나타내는 모양으로 오버레이한다. 여러 종류의 랜드마크에 대해 여러개의 배지를 만들려면 중첩된 기호로 실험하거나 반복 횟수를 변경하거나 다양한 각도와 배율을 변경해 보라. 그리기 전에 HexagonParameters.swift를 추가하고 입력한다. import CoreGraphics struct HexagonParameters { struct Segment { let line: CGPoint let curve: CGPoint let control: CGPoint } static let adj..