[내일배움캠프] 260119 TIL - Unique 알고리즘

Bambu·2026년 1월 19일

내배캠 TIL

목록 보기
21/52

1. 모닝 스터디 - 코테 연습

1. 프로그래머스 - 나머지가 1이 되는 수 찾기
2. 프로그래머스 - 최소직사각형

접근법을 생각해내기가 쉽지 않았다...

2. Swift github

튜터님이 추천해주신 Swift github을 드디어 읽어보았다.
Swift-algorithms-Unique.swift

프로토콜에 대해서 잘 모르는 상태로 읽으니 내게는 상당히 어려웠었는데, 어찌저찌 읽어낼 수는 있었다.

다음에는 Collection을 차근차근 읽어봐야겠다.

공부 내용은 Tistory에 정리

(티스토리를 새로 만들어보았는데 생각보다 글쓰기가 좀 불편한 것 같기도 하고... 그렇다..)

3. 과제 리팩토링

Readme 수정 - 객체화를 하며 고민했던 내용에 대해 작성하였다.

이후 해보자 타임에 3가지를 수정하였다.

1) 게임 종료 조건 변경

기존 코드

func start() {
	var isExit = false
    
    while !isExit {
    	...
    	case .exit:
        ...
        isExit = true
    }
}

변경 코드

func start() {
	while true {
    	...
        case .exit:
        ...
        exit(0)
    }
}

exit(0) 코드를 활용하여 isExit 변수를 삭제할 수 있었다.

2) 유저 정답 입력 함수 유효성 검사 조건 변경

기존 코드

    func inputUserAnswer() throws -> [Int] {
        // 유저 입력값
        let input = (readLine() ?? "").compactMap{ Int(String($0)) }

        if input.count != 3 {
            throw InputError.invalid(for: .answer) // 유저 입력이 3자리 숫자가 아닐 경우
        } else if Set(input).count != 3 {
        ...
    }    
}

변경 코드

func inputUserAnswer() throws -> [Int] {
        // 유저 입력값
        let stringInput = (readLine() ?? "").trimmingCharacters(in: .whitespacesAndNewlines).map{ String($0) } // [String] 변환
        let input = stringInput.compactMap{ Int($0) } // [Int] 변환

        if input.count != 3 || input.count != stringInput.count {
            throw InputError.invalid(for: .answer) // 유저 입력이 3자리 숫자가 아닐 경우 혹은 유저 입력에 문자가 같이 입력되었을 경우
        } else if Set(input).count != 3 {
        ...
        }

→ 기존 코드의 경우 "123ㄱ"처럼 숫자만 3개 입력되어있으면 문자가 있든말든 유효한 입력으로 처리되었다.

하지만 문자와 숫자가 혼재하는 경우도 유효하지 않다고 판단했기 때문에 조건을 변경하였다.

3) 힌트 문자열 생성 함수 변경

기존 코드

static func getHint(for strike: Int, _ ball: Int) -> String {
	return "🎯 \(strike) 스트라이크 ⚾️ \(ball) 볼 입니다!\n"
}

변경 코드

static func getHint(for strike: Int, _ ball: Int) -> String {
    if strike == 0 {
        return "⚾️ \(ball) 볼 입니다!\n"
    } else if ball == 0 {
            return "🎯 \(strike) 스트라이크 입니다!\n"
    } else {
        return "🎯 \(strike) 스트라이크 ⚾️ \(ball) 볼 입니다!\n"
    }
}

→ 요구사항에서 스트라이크가 0이거나 볼이 0일 경우, 0인 힌트는 출력하지 않았기 때문에 해당 요구사항을 반영하여 조건을 추가하였다.

profile
안녕하세요, iOS 개발을 공부하고 있는 Bambu입니다. (프로필: Swifticons)

0개의 댓글