Kotlin 사전캠프 TIL 8일차

노재원·2024년 3월 28일
0

내일배움캠프

목록 보기
8/90

오랜만에 보는 Firebase

오늘은 중간에 전체 발표가 있었다. 매니저님이 각 조 발표를 들어보시고 괜찮은 발표만 따로 모아서 수정을 좀 거치고 1~4조가 모두 듣는 앞에서 녹화하며 발표했다.

나는 내가 발표했던 IDE, SDK로 다시 발표하게 됐고 다른 조 분들의 발표는 처음 들어보는 거라 재밌게 들은 것 같다. 다른 조 분들이 듣기에 내 발표는 어땠을까 싶지만 이번에는 말을 너무 많이 해서 목이 말라 말을 자주 끊었던 것 같아 알려고 하면 안될 것 같다.


오늘 강의는 어제 듣다만 웹 강의 3주차에 이어 바로 4주차까지 다 들었는데 좀 친숙하기도 해서 그런지 후딱 해치운 느낌이 있었다. 바로 내 먼 친구 Firebase의 등장때문이다.

주니어때 넘쳐나던 모르겠는 부분, 어려운 부분을 많이 줄여주던게 당시의 Firebase였는데 약 4년만에 다시 보니 더 세련되게 바뀐게 눈에 띄었다. 그 때랑 다른 점이라면 앱은 GA, FCM 써보겠다고 문서랑 싸우던 거랑 테스트, 마케팅쪽으로 많이 썼는데 지금은 데이터베이스 사용을 위해 접속했다는 점이다.

깔짝대던거 빼면 제대로 사용했다고 볼만한 경험은 없기 때문에 상당히 낯설지 않을까 싶었는데 SQL이든 NoSQL이든 어깨 너머로 본게 있으니 그렇게 낯설지는 않았다. 항상 그렇듯 이걸로 심화과정에 들어가야 머리가 어지럽고 미지의 영역을 파헤쳐서 결과물을 내야하니 그 전까지는 재밌게 즐기면 될 것같다.


수박수박수박수박수박수?

길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다.

문제 링크

fun solution(n: Int): String = "수박".repeat (n / 2) + if (n % 2 == 1) "수" else ""

아주 짧게 잘 완성한 코드같다. 패턴의 길이만큼으로 나눠서 repeat을 먹이고 남는 글자가 있는지만 체크한 것이다.
다른 분들의 풀이와도 크게 다르지 않아 간만에 성공했다고 느낄 수도 있는 부분이었다.

다만 마음에 걸린 것은 너무나 단순해서 유연하지가 않은데 사실 실무할 때 쓰던 스타일보다는 알고리즘 테스트용 코드를 작성했다는 느낌을 받았다.

결국 참지 못하고 유연하게 코드를 변경하게 됐다.

fun solution2(n: Int): String {
        var answer = ""
        var keyword = "수박씨앗"

        answer = keyword.repeat (n / keyword.length) + keyword.substring(0, n % keyword.length)

        return answer
    }

solution2의 인자로 keyword를 받고 단일 표현식으로 적어도 됐겠지만 그냥 테스트용으로 변수로 따로 뺐다.

어쨌든 굳이 답안을 변경하고 싶었던 핵심 이유는 누가 이 문제를 주고 풀라고 한 다음에

그럼 수박 말고 수박씨로 패턴을 바꿔도 되게 만들어줘!

이렇게 된다면 기존의 코드는 수정이 까다로워 무용지물이 될 거라는 가정을 세워서 그렇다.
그래서 solution2 에서는 반복되는 패턴 keyword에 어떤 글자를 줘도 확실히 반복이 되게끔 변경을 하고 싶었다.

코드는 길어졌지만 훨씬 유연하니 나는 이게 더 마음에 든다.

0개의 댓글