💡 두 정수 A와 B를 입력받은 다음, A×B를 출력하는 프로그램을 작성하시오. |
사칙연산 알고리즘을 수행중이다 다 똑같은거 아녀? 라고 생각했지만
그래도 풀어보자 하는데 왜 난 컴파일 에러가 계속 나는거지? ㅋ
풀어보길 잘했자나..
여러가지 생각나는 구문을 적용해보면서 모르는 부분을 공부해가려고 하니까
한문제에서 의식의 흐름으로 계속 도전한다 ! ㅋㅋ
오늘 삽질을 통해 배운 내용을 정리해보려고 한다
기존 +,-에서 사용했던 map형태도 사용해보고
if let line = line {
let lineArr = line.split(separator: " ").map{ Int($0)! }
let a = lineArr[0], b = lineArr[1]
print(a * b)
}
웬지 강제 언래핑이 내 눈에는 거슬려서 map변환을 수행한 후에
배열형태를 Int로 변환하면서 언래핑을 진행하려고 하는데 예기치 않는 오류가 생겼다
❕error
"trailing closure in this context is confusable with the body of the statement; pass as a parenthesized argument to silence this warning"
if let line2 = readLine()?.split(separator: " ").map{ Int($0) } {
if let a = line2[0], let b = line2[1] {
print(a * b)
}
}
눈을 몇번 닦고 코드를 보긴했음
잘모르겠어서 에러내용으로 찾아보니 아래와 같은 내용을 찾았다
({}) 클로저를 감싸는이유 : 클로저 구문을 명확하게 하기위해서 -> 가독성 위해 선택적 사용가능
선택적 인데 에러를 뿜는다고?
음..
하지만 뭔가 깨름직한 이유라 여기서 더 내용을 해소하지 못했지만
바쁘다 바빠 현대사회
일단 코드는 map 클로저의 외부의 ()을 감싸면서 해결 :)
map({ Int($0) }) |
후에 언래핑을 사용하지 않을때 왜 map{ Int($0)} 대신 ({}) 클로저를 ()중괄로로 감싸줘야하는지
좀더 정확하게 알아 봐야 겠다
어느정도 연산을 위해 언래핑이 익숙해져갈때쯤
개선점이 보였던 코드를 하나 더 추가했다 알고리즘 문제는 예외처리에 대한 제한을 두진 않았지만
실제 사용자가 개발자가 원하는 2개의 데이터만 입력할지 4개를 입력할지 모르니
이것에 대한 예외처리는 해두는게 좋다고 생각했다
if let line3 = readLine()?.split(separator: " ").map({ Int($0) }), line3.count >= 2 {
if let a = line3[0], let b = line3[1]{
print(a * b)
}
}
line3 data의 갯수가 2이하로 된 조건문을 추가 ++
'알고리즘 > Swift' 카테고리의 다른 글
Swift) 백준 #1330 - 두 수 비교하기 (0) | 2023.11.16 |
---|---|
Swift) 백준 #10869 - 사칙연산 (0) | 2023.06.26 |
Swift) 백준 #1008 A/B (0) | 2023.06.19 |
Swift) 백준 #1001 A-B (0) | 2023.06.14 |
Swift) 백준 #1000 A+B (1) | 2023.06.13 |