개발/Swift
-
[Swift] PassingCars 코딜리티 코딩테스트개발/Swift 2022. 3. 4. 13:12
A non-empty array A consisting of N integers is given. The consecutive elements of array A represent consecutive cars on a road. Array A contains only 0s and/or 1s: 0 represents a car traveling east, 1 represents a car traveling west. The goal is to count passing cars. We say that a pair of cars (P, Q), where 0 ≤ P < Q < N, is passing when P is traveling to the east and Q is traveling to the wes..
-
[Swift] FrogRiverOne 코딜리티 코딩테스트개발/Swift 2022. 3. 4. 12:25
A small frog wants to get to the other side of a river. The frog is initially located on one bank of the river (position 0) and wants to get to the opposite bank (position X+1). Leaves fall from a tree onto the surface of the river. You are given an array A consisting of N integers representing the falling leaves. A[K] represents the position where one leaf falls at time K, measured in seconds. ..
-
인스턴스 메소드/ 클래식 메소드/ 스태틱 메소드개발/Swift 2022. 3. 1. 12:29
class A { func instanceM(){ } static func staticM(){ } class func classM(){ } } 클래스에는 인스턴스 메소드 스태틱 메소드 클래스 메소드를 구현 할수있다. 이들의 차이점은 다음과 같다. A.staticM() A.classM() A.instanceM() //Fail 스태틱 클래스 메소드와 달리 인스턴스 메소드는 인스턴스화 이후에 메소드를 사용 할수있다. 스태틱 클래스 메소드는 클래스에서 직접 메소드를 호출할수있다. 그러면 스태틱 클래스 메소드는 같은걸까? 이 둘의 차이점은 오버라이딩 가능 여부에 따라 갈린다. 클래스 메소드는 오버라이딩이 가능한 메소드이다. 반면 스태틱 메소드는 불가능 하다. 즉 상속을 받을때 클래스 메소드를 사용하며 그렇지 않을..
-
-
Class / Struct 은 뭐가 다를까개발/Swift 2022. 2. 13. 16:40
Class 와 Struct는 어떤 차이점들이 있을까? 나는 언제 어느 상황에서 Class Struct를 알맞게 골라 써야할까? Struct도 class 처럼 프로퍼티를 가질수있으며 메소드를 구현할수있다. 내부 프로퍼티 수정도 가능하다 ( mutating 함수를 쓰면된다. ) Extends도 사용할수있다. 대표적인 차이점은 값타입vs 참조 타입이다. Class는 참조타입 Struct,Enum은 값타입이다. 참조타입의 경우 같은 객체를 두 변수에 담은경우 한변수를 변경시킬때 둘다 변경된다는 특징이 있다. 또 Struct 에서는 상속이 불가능 하다는 특징이있다. view와 관련된것들은 UIViewController UIView 등등 을 상속받아야 하므로 제외하고 다른 부분에서 구현하려는게 굳이 상속이 필요없다..
-
[Swift] 조이스틱 코딩테스트 프로그래머스개발/Swift 2022. 2. 13. 14:12
문자 변환 카운팅을 위해서 아스키 코드를 활용한다. 위의 아스크코드 표를 참고하면 하늘색부분을 보면 된다. A는 65 → Z 는 90이다. 조이스틱을 위로 / 아래로 변경해서 원하는 문자를 찾을건데 위로가는 방법 , 아래로 가는 방법 두개를 비교해 최솟값을 구하면된다. 찾으려는 문자의 아스키코드 번호를 알아낸 다음 위로가는 방법은 = 아스키코드번호 - 65 (ex>A 인경우 0) 아래는 = 91 - 아스키코드번호 이렇게 계산하면 쉽다. (Z인경우 1) for i in range{ if name[i] != "A"{ let up = name[i].asciiValue! - 65 let down = 91 - name[i].asciiValue! changeCount += Int(min(up, down)) } } ..
-
[Swift] 섬 연결하기 프로그래머스 코딩테스트개발/Swift 2022. 2. 9. 15:36
방법을 찾지못해 검색중 크루스칼 알고리즘을 알게되었다. 아래 링크에 자세하고 쉽게 설명되어있다. https://fomaios.tistory.com/entry/프로그래머스-섬-연결하기-Swift 해당 알고리즘을 모르면 아래 해설도 이해가 어려울것이다. 해결 방법 우선 크루스칼 알고리즘을 토대로 주어진 예시를 그림으로 그려보자면 이렇게 두개의 사이클을 만들어 버리게 된다. 이 두개의 사이클을 피해야 한다. 크루스칼 알고리즘 대로라면 우선 처리 순서를 연결 값이 낮은 순서 0-1 1-3 0-2 1-2 (여기서 사이클 현상이 나므로 제외) 2-3 (여기서 사이클 현상이 나므로 제외) 이 순서 대로 진행해야하고 사이클 현상 제외를 위해 0-1의 부모는 nil → 0 (0:[0,1]) 1-3의 부모는 3은 부모가 ..