ios 12일차

bin·2026년 1월 14일

회고

오늘은 모닝 스터디를 처음 진행했다. 사실, 요새 몸이 별로 안좋은 이유로 출석 10분 전에 기상을 한다....
때문에, 일어나자마자 바로 코딩 문제를 접하다보면 문제 해석이 되지 않는 것을 넘어서 문제의 지문을 읽는 것 자체가 매우 힘들게 느껴졌다. 마치, 녹슨 체인을 강제로 움직이기 위해 힘을 주고 있는 기분?
체인도 아프다. 아니. 아프겠구나 생각이 들었다. 나도 머리가 아프니까.

공부에 관한 기록

모닝 스터디

1. 치킨 쿠폰

  • 접근 방법 1 : 치킨을 10마리 이상 구매했을 때, 쿠폰을 이용해서 한마리를 더 구매할 수 있다. 이 말은 즉, 첫 번째의 경우를 제외하고부터는 9마리마다 한 마리를 더 제공받는 것이기에 수학적인 접근으로 풀 수 있다.
  • 접근 방법 2 : 다른 방법으로는 단순 반복으로도 풀이에 접근할 수 있다. 총 구매한 치킨의 수를 10으로 나누며 몫을 결과에 더하고 나머지를 다시 계산한 후 10으로 나누는 과정을 반복하면 결과 값이 출력된다.
import Foundation

func solution(_ chicken:Int) -> Int {
    return (chicken - 1) / 9 
}
import Foundation

func solution(_ chicken:Int) -> Int {
    
    var service = chicken
    var result = 0
    
    while service >= 10 {
        let curService = service / 10
        result += curService
        
        service = service % 10 + curService
    }
    return result
}

2. 리스트 자르기

  • 접근 방법 : 이 문제도 switch, if 둘 중 선택하여 문제를 풀이할 수 있지만, 본인은 if문을 이용해서 접근했다. 입력받는 정수 n에 대해 경우를 4가지로 나누었으며 n이 1, 2, 3일 경우는 쉽게 풀이할 수 있으나 n이 4일 경우, slicer[2]만큼의 간격을 지정해야 한다. stride를 이용하여 접근 가능하지만, 본인은 while문을 이용하여 접근했다.
import Foundation

func solution(_ n:Int, _ slicer:[Int], _ num_list:[Int]) -> [Int] {
    
    var result: [Int] = []
    
    if n == 1{
        result = Array(num_list[0...slicer[1]])
    }else if n == 2{
        result = Array(num_list[slicer[0]...])
    }else if n == 3{
        result = Array(num_list[slicer[0]...slicer[1]])
    }else {
        var idx = slicer[0]
        
        while idx <= slicer[1]{
            result.append(num_list[idx])
            idx += slicer[2]
        }
    }
    return result
}

3. 배열 조각하기

  • 접근 방법 : 문제 2와 유사하게 접근할 수 있다. 둘 다 배열에 관련된 문제라서 자르는 기능을 할 수 있다면 쉽게 접근 가능하다. 조건은 인덱스가 홀수, 짝수일 경우라서 두 경우를 구분하여 풀이했다.
import Foundation

func solution(_ arr:[Int], _ query:[Int]) -> [Int] {
    
    var result: [Int] = arr
    
    for idx in 0..<query.count{
        if idx % 2 == 0 {
            result = Array(result[0...query[idx]])
        }else {
            result = Array(result[query[idx]...])
        }
    }
    return result
}

반성

아무튼, 앞으로 CS도 열심히 보고, 내일은 정말로 과제 수정하자.. 동작 시에 실행되는 로직들을 섬세하게 적용해두지 않았던 부분들과 함수형으로 선언되어있는 코드들을 객체를 이용해서 구현하도록 고민하고 적용해보자.

0개의 댓글