다음 주에 시작할 네이버 부스트캠프 챌린지 과정을 준비하면서
CS 지식(OS, 네트워크, 자료구조 등...)도 조금 찾아보면서 Kotlin 문법에 대해서 다시 리프레쉬 하고 있습니다.
문법 연습을 하기 위해 프로그래머스에서 저난이도 문제들을 풀어보고 있는데
문득 정답을 작성하고 드는 생각이
아직 너무 Java스럽게 코드를 작성하는 것 같다는 생각이 들었습니다.
아래 문제는 ineq에는 ">", "<" 같은 비교식이, eq에는 "=", "!" 같은 조건이 들어옵니다.
비교 결과에 따라 1과 0을 반환하는 함수를 만드는 간단한 문제입니다.
class Solution {
fun solution(ineq: String, eq: String, n: Int, m: Int): Int {
var answer: Int = 0
var str = ineq + eq
val result = when(str) {
">=" -> n >= m
"<=" -> n <= m
">!" -> n > m
"<!" -> n < m
else -> false
}
if(result) {
answer = 1
} else {
answer = 0
}
return answer
}
}
제가 처음 작성했던 답안입니다.
처음 배웠던 프로그래밍 언어가 Java라서 그런지
문제가 주어지면 일단 Java식으로 구현하는 습관이 들어버린 것 같습니다.
Kotlin 개발자로 취업을 준비하고 있다면 뭔가 Kotlin스럽게 코드를 작성하는게 좋지 않을까 생각이 듭니다.
아래는 GPT에게 Kotlin스럽게 코드를 바꿔달라고 했을 때 나온 결과입니다.
class Solution {
fun solution(ineq: String, eq: String, n: Int, m: Int): Int =
when (ineq + eq) {
">=" -> n >= m
"<=" -> n <= m
">!" -> n > m
"<!" -> n < m
else -> false
}.let { if (it) 1 else 0 }
}
확실히 코드도 간결해지고 가독성이 좋아지는 것 같습니다.
Kotlin의 내장 함수에 대한 배움이 아직 부족한 것 같다고 느끼게 되네요.
let 같은 스코프 함수도 미션을 해결하면서 여러 번 사용해봤는데
막상 문제가 주어지면 Kotlin 표준 함수들은 생각이 안 나고
Java식으로 먼저 작성해버리는 버릇을 고쳐야겠습니다..
Notion에 먼저 문법에 대한 정리부터 하고
정리가 끝난다면 블로그에 업로드해서 공유해야겠습니다!
아직은 익숙하지 않으니, 코드 리팩토링으로 먼저 연습을 해야겠습니다. 🤔