1. 프로그래머스 - 나머지가 1이 되는 수 찾기
2. 프로그래머스 - 최소직사각형
접근법을 생각해내기가 쉽지 않았다...
튜터님이 추천해주신 Swift github을 드디어 읽어보았다.
Swift-algorithms-Unique.swift
프로토콜에 대해서 잘 모르는 상태로 읽으니 내게는 상당히 어려웠었는데, 어찌저찌 읽어낼 수는 있었다.
다음에는 Collection을 차근차근 읽어봐야겠다.
(티스토리를 새로 만들어보았는데 생각보다 글쓰기가 좀 불편한 것 같기도 하고... 그렇다..)
Readme 수정 - 객체화를 하며 고민했던 내용에 대해 작성하였다.
이후 해보자 타임에 3가지를 수정하였다.
기존 코드
func start() {
var isExit = false
while !isExit {
...
case .exit:
...
isExit = true
}
}
변경 코드
func start() {
while true {
...
case .exit:
...
exit(0)
}
}
→ exit(0) 코드를 활용하여 isExit 변수를 삭제할 수 있었다.
기존 코드
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개 입력되어있으면 문자가 있든말든 유효한 입력으로 처리되었다.
하지만 문자와 숫자가 혼재하는 경우도 유효하지 않다고 판단했기 때문에 조건을 변경하였다.
기존 코드
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인 힌트는 출력하지 않았기 때문에 해당 요구사항을 반영하여 조건을 추가하였다.