본문 바로가기
STUDY/TIL

240821 TIL | 이진 탐색, 전화번호 가리기, repeating, suffix

by 23g 2024. 8. 23.

0. TIL

잘한 점: 아침 스터디를 했다

개선점 : TIL를 당일에 올리지 못했다 ㅎ 

배운 점: repeating과 suffix 사용에 대해 알게 되었다.

1. 데일리 루틴  

  cs 지식 공부

질문 : 이진 탐색의 원리와 시간 복잡도에 대해 설명해주세요.

 

답변 : 
이진 탐색(Binary Search)

원리: 정렬된 배열에서 특정 값을 찾는 효율적인 알고리즘입니다. 탐색 대상 배열의 중간 요소와 찾고자 하는 값을 비교하여, 중간값보다 작은 경우 왼쪽 절반, 큰 경우 오른쪽 절반에서 탐색을 이어갑니다. 이 과정을 반복하여 탐색 범위를 절반씩 줄여 나갑니다.

시간 복잡도: O(log N). 배열을 절반으로 나누어 탐색하기 때문에 매우 빠르게 값을 찾을 수 있습니다.
제약 조건: 이진 탐색이 제대로 작동하려면 배열이 반드시 정렬되어 있어야 합니다.


  1일 1커밋

📜 문제 설명

프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.

⌨️ 입출력 예

✏️ 나의 코드

func solution(_ phone_number:String) -> String {
    var pNumArr = Array(phone_number)
    
    for i in 0..<pNumArr.count-4{
        pNumArr[i] = "*"
    }
    return String(pNumArr)
}

📚 개선 코드

func solution(_ phone_number: String) -> String {
    // phone_number의 길이에서 마지막 4자리를 제외한 나머지를 "*"로 대체
    let maskedCount = phone_number.count - 4
    let maskedPart = String(repeating: "*", count: maskedCount)
    let lastFourDigits = phone_number.suffix(4)

    // 두 부분을 합쳐서 반환
    return maskedPart + lastFourDigits
}

  swift 강의

 클로저 파트를 들었다

 

최근댓글

최근글

skin by © 2024 ttutta