본문 바로가기
TIL

240910 TIL | 병렬처리, 동시처리, 멀티코어, 3진법 뒤집기, radix

by 23g 2024. 9. 10.

0. TIL

잘한 점: 오늘 회사에서 업무를 아주 잘해서 칭찬 받았음 그리고 퇴근하고 10시 넘어서까지 공부 ing ㅠㅠ

개선점 : 안되는건,,, 너무 붙잡지 말고 머리에 바르고 넘어가자 그리고 또 보자... 시간낭비!!!

배운 점: radix 활용법

1. 데일리 루틴  

  cs 공부

질문 : 병렬 처리와 동시 처리의 차이, iOS에서의 멀티코어 활용 방안에 대해 설명해주세요.

 

  1. 병렬 처리(Parallel Processing): 여러 코어에서 작업을 동시에 처리.
  2. 동시 처리(Concurrent Processing): 하나의 코어에서 여러 작업을 빠르게 전환하며 처리.

iOS에서 멀티코어 활용:

  • GCD (Grand Central Dispatch): 비동기 작업을 큐에 추가해 병렬 처리.
  • OperationQueue: 작업 간 의존성 및 취소 등을 제어하며 병렬화.
  • Metal/Accelerate: 그래픽 연산과 수치 계산을 병렬로 최적화.

차이점: 병렬 처리는 실제로 동시에 실행, 동시 처리는 번갈아가며 실행.


  1일 1커밋

📜 문제 설명

자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.

⌨️ 입출력 예

n result
45 7

✏️ 나의 코드

func solution(_ n:Int) -> Int {

    let ternaryString = String(n, radix: 3)
    let reversedString = ternaryString.reversed()
    var a: [Int] = []
    var sum = 0
    var cnt = 0

    for i in reversedString{
        if let elementInt = Int(String(i)){
            a.append(elementInt)
        }
    }

    for (index, i) in a.reversed().enumerated(){
        sum += i * Int(pow(3.0, Double(index)))
        cnt += 1
    }
    return sum
}

눈물 없인 볼 수 없으센,,,

 

📚 개선 코드

func solution(_ n: Int) -> Int {
    // 1. n을 3진법 문자열로 변환
    let ternaryString = String(n, radix: 3)
    
    // 2. 3진법 문자열을 뒤집음
    let reversedTernaryString = String(ternaryString.reversed())
    
    // 3. 뒤집은 문자열을 다시 10진법으로 변환
    let result = Int(reversedTernaryString, radix: 3)!
    
    return result
}

 

하,,,

 

Swift야 너 참 친절하구나

많은 기능을 지원하는구나...

 

radix는 숫자를 특정 진법으로 표현할 때 사용하는 값으로
Swift에서는 숫자를 특정 진법으로 표현하거나 진법에 따라 숫자를 변환할 때 사용함.

 

Swift의 radix는 두 가지 주요 용도로 사용됨

 

숫자를 문자열로 변환할 때: String 초기화 시 radix를 지정하여 숫자를 특정 기수로 표현할 수 있음. 예를 들어, 10진수 숫자를 2진수, 8진수, 16진수 등으로 표현할 수 있음.

let number = 255
let binaryString = String(number, radix: 2)   // "11111111" (2진수)
let octalString = String(number, radix: 8)    // "377" (8진수)
let hexString = String(number, radix: 16)     // "ff" (16진수)

 

문자열을 숫자로 변환할 때: Int의 초기화 시 radix를 지정하여 문자열을 해당 기수의 숫자로 변환할 수 있음.

let binaryString = "11111111"
let numberFromBinary = Int(binaryString, radix: 2)   // 255 (10진수로 변환)

let octalString = "377"
let numberFromOctal = Int(octalString, radix: 8)     // 255 (10진수로 변환)

let hexString = "ff"
let numberFromHex = Int(hexString, radix: 16)        // 255 (10진수로 변환)

 

한마디로!!! 엄청 헷갈린다고 볼 수 있음

 

정리!!!

 

Int → String( int , radix: n) 

⇒ n진법으로 변환!!!

String → Int( string, radix : n) 

⇒ n진법인 Int(String)을 10진법으로 변환!!!