본문 바로가기
반응형

SWiFT12

[Swift] 비트 연산과 비트마스킹 (NOT, AND, OR, XOR, 시프트 등) 오늘도 PS를 위한 문법, 비트 연산자이다. 비트 연산은 거의 비트마스킹에 쓰기 때문에 비트마스킹에 활용하는 방법까지 엮어서! Bitwise Operators NOT ( ~ ) 모든 비트를 반대로 뒤집어버린다. 0은 1로 만들고, 반대로 1은 0으로 만든다. 연산자는 ~이다. let A: UInt8 = 0b00110011 // 0011 0011 let notA = ~A // 1100 1100 AND ( & ) 둘 다 1인 경우에만 1이고, 나머지 경우는 모두 0으로 만든다. 연산자는 &이다. let A: UInt8 = 0b00110011 // 0011 0011 let B: UInt8 = 0b01010101 // 0101 0101 let AandB = A & B // 0001 0001 OR ( | ) 둘 .. 2022. 1. 17.
[Swift] 진수 변환하기 (2진수, 8진수, 10진수, 16진수 등) PS를 위한 문법~ 이번엔 진수 변환이다. 브론즈~실버에서 가끔 진수 변환이 필요한 문제가 있다. 물론 직접 구현해도 되지만..! 이미 라이브러리에 편하게 메소드가 있다ㅎㅎ Int의 이니셜라이저 중에 문자열과 기수(radix)를 받아 문자열로 표현된 radix진수 → Int로 만들어주는 init(_:radix:)가 있다. 주의할 점은 변환에 실패할 수도 있기 때문에 Failable Initializer이라는 점이다. 옵셔널 타입으로 만들어주므로 옵셔널 바인딩을 하거나 강제 언래핑을 해서 사용해야 함. init?(_ text: S, radix: Int = 10) where S : StringProtocol 또 String의 이니셜라이저 중에 정수와 기수(radix)를 받아 정수 → radix진수 문자열로 .. 2022. 1. 17.
[Swift] 거듭제곱하기 거의 PS용 문법들만 포스팅하게 되는 것 같은데..ㅎㅎ 오늘은 거듭제곱이다. 반복문으로 구현해도 되지만 메소드로 만들어져 있다! 사용법 요약부터 하면 let resultOfPow = pow(3.0, 2.0)// 9.0 // Int로 형변환 하려면 Float형으로 호출해야 함 var sum = 0 sum += Int(resultOfPow)// Int형과 더하려면 형변환 필요 스위프트의 거듭제곱 메소드는 pow이다. 종류가 이렇게 많은데, 호출 시에 파라미터를 다 _로 생략하게 되어있으니까 자료형에 맞춰서 알아서 맞는 것으로 호출되겠지..? 하는 생각을 하며 일단 시작 pow(x,y)에서 x가 밑이고 y가 지수이다. 알고리즘 문제에서는 거의 밑과 지수 모두 정수일 때이니까 정수^정수를 해보자. 이렇게 잘 구.. 2022. 1. 15.
[Swift] 소수점 제거하기 (반올림, 올림, 내림, 버림 등) PS를 하다 보면 반올림, 올림, 내림, 버림 등 소수점을 제거해서 출력해야 할 때가 종종 있다. 찾아보다가 이 모든 것을 전부 할 수 있는 만능 메소드를 찾았다! FloatingPoint 프로토콜에 정의된 round(_:)라는 메소드이다. 기본 자료형인 Float과 Double 모두 FloatingPoint 프로토콜을 채택하고 있기 때문에 round 메소드 사용이 가능하다. mutating func round(_ rule: FloatingPointRoundingRule) 형태는 mutating func round(_ rule: FloatingPointRoundingRule). 제거한 결과값을 리턴하는 게 아니라 mutating func이기 때문에 인스턴스 값 자체가 바뀐다. 따라서 immutable 한.. 2022. 1. 13.
[Swift] 배열 정렬하기 알고리즘 문제를 풀다 보면 정렬이 되게 자주 필요한데, 매번 직접 구현하기는 번거롭다. Array에는 이미 O(NlogN)의 sort 메소드가 구현되어 있으니 이걸 쓰자. Array 공식문서로 가보면, 정렬 관련 메소드는 4개를 제공한다. 하나씩 자세히 살펴볼 건데, 일단 사용법만 빠르게 요약 먼저! 다시 공식 문서로 돌아와서, 4개의 정렬 메소드를 살펴보자. 두 가지 기준으로 둘둘씩 나눌 수 있는데 원본 배열 자체를 변경하느냐에 따라 원본 자체를 변경 : sort(), sort(by:) 원본은 두고 정렬된 새 배열을 리턴 : sorted(), sorted(by:) 정렬 기준을 어떤 방법으로 정의해주냐에 따라 Comparable 프로토콜 채택 : sort(), sorted() (Element, Eleme.. 2022. 1. 13.
반응형