이번 주의 중심점은 과제와 알고리즘 문제 풀기였다.
사실, 이렇게 시간을 많이 할애할 생각은 없었으나 문제를 풀다보니 잊고있던 접근방법들과 여러 생각들이 겹쳐서 나름 재밌게 풀며 시간을 많이 쏟은 것 같다.
guard let input = readLine(),
let num = Optional(input.compactMap{Int(String($0))}), //숫자 외의 다른 값이 들어왔는지 확인, map 대신 compactMap 사용 : map 사용시 nil로 처리 되기 때문에 처리가 바르게 일어나지않음(ex. 1ab입력시 num = [1,nil,nil] -> 중복으로 처리됨
num.count == 3
guard let num = readLine().map({ $0.compactMap(\.wholeNumberValue) })
사실 기존 코드를 구성했던 이유는, 입력에 관해 조건을 설정하는 방법이 여러가지가 있겠지만, 하나의 guard let 구문으로 구현을 해보고자 했다. 그렇지만 compactMap만을 이용해서 구현을 하려면 Optional로 묶어줘야 하기에, 생긴 것이 예쁘지 않다. PR에 튜터님의 코멘트로 다른 방식의 접근법이 있다는 것을 알게 되었으며, 이를 이해하기 위해 Swift의 KeyPath에 관한 지식을 공부해야 했다.
사실 이번주 과제는 지난주 과제보다 난이도가 낮다고 생각이 들었다. 본인이 한번 구현해본 내용이라 그렇게 느끼고있는건가 싶었지만, 같이 공부하는 팀원분들도 작업의 속도가 지난 과제보다 더 빠른 것을 보니 난이도가 쉽다는 것을 알 수 있었다. 물론, 난이도는 낮아졌지만 지난 과제보다 구현에서의 특징이 보이는 모습이 많았어서 오히려 코드 리뷰에는 도움이 많이 된 것 같다. 본인이 생각하지 못한 접근 방법으로 구현을 하고 이에 대해 설명과 의논을 나누는 과정에서 개념들이 더 정리되는 시간이었다.
지난 주 주말에 너무 바쁘기도 하고 쉴 시간이 없었어서 이번 주는 시작부터 체력적으로 힘이 들었던 것 같다. 컨디션도 좋지 않았었고. 그렇지만, 팀원들과 함께 공부하고있고 의견을 공유하는 시간도 있었기에 열심히 하고자 노력했고 잘 지나간 것 같다. 이번 주말에는 지금까지 공부한 내용들을 정리하고 체력 보충을 하며 좀 쉬고싶은데, 그럴 수 있을지 모르겠다. 이번주도 고생했다.