[A&I Code Camp] Day3 (indices, replace)

Hood·2024년 9월 10일

A&I Code Camp

목록 보기
3/38
post-thumbnail

✍   Kotlin을 사용한 프로그래머스 Lv. 0 문제 풀기

소속중인 A&I 동아리에서 코딩역량을 강화하고자
코딩캠프를 진행하여 주말을 제외한 모든 날에 하루 5문제씩
프로그래머스 Lv.0 문제를 풀어가며 작성한 포스트입니다.
해당 포스트는 kotlin을 기반으로 작성합니다.


제곱수 판별하기

kotlin에서 제곱수를 체크하려면 import를 통해 math를 통한 sqrt 함수를
불러오면 편하다. 그런데 sqrtDouble 형만 취급하기에 n을 일단 .toDouble()을 통해
형을 맞춰 준 뒤에 그게 정수라면 제곱수가 맞는 것이고 소수라면 제곱수가 아니다 라는 공식을 이용해
변수 answer에 넣어주었다.

import kotlin.math.sqrt

class Solution {
    fun solution(n: Int): Int {
        var answer = 0
        if (sqrt(n.toDouble()) % 1 == 0.0 ) answer = 1 else answer = 2
        return answer
    }
}

배열 두배 만들기

여기서 부터 반복문을 사용하는데 먼저 배열을 받아 answer안에 *2를 더해주는 식으로 풀었었는데
생각해보니깐 kotlin에는 .map 스코프 함수가 있어 배열을 쉽게 변환시킬 수 있다는 것을 간과했다.

class Solution {
    fun solution(numbers: IntArray): IntArray {
        var answer: IntArray = intArrayOf()
        for (x in numbers.indices){
            answer += numbers[x] * 2
        }
        return answer
    }
}
//모범 답
class Solution {
    fun solution(numbers: IntArray) = numbers.map { it * 2 }
}

특정 문자 제거하기

이 문제는 .replace 함수를 사용하면 쉽다.
.replace(oldChar, newCher)는 말 그대로 내가 지정한 문자열을 새 문자열로 바꿔주는 함수이다.
이것을 사용하면 쉽게 문자열을 변환할 수 있다.

class Solution {
    fun solution(my_string: String, letter: String): String {
        return my_string.replace(letter, "")
    }
}

중복된 숫자 개수

이것도 마찬가지로 배열을 .indices를 통해 검사하고 result에 1을 더하는 식으로 구했는데
.filter 스코프 함수를 통해 구할 수 있었다.

class Solution {
    fun solution(array: IntArray, n: Int): Int {
        var result : Int = 0
        for (x in array.indices){
            if(array[x] == n){
                result+=1
                }
            }
        return result
    }
}
//모범 답
class Solution {
    fun solution(array: IntArray, n: Int) = array.filter { it == n }.size
}

머쓱이보다 키 큰 사람

이 문제는 말 그대로 내가 입력한 키보다 큰 사람을 세는 문제이다.
그래서 배열 안에 수가 입력한 키보다 크다면 answer에 1을 더하는 식으로 풀었다.

class Solution {
    fun solution(array: IntArray, height: Int): Int {
      var answer : Int = 0
      for (x in array.indices){
          if(height < array[x]) answer += 1
          }
      return answer
    }
}

📌결론

kotlin은 스코프 함수로 문제를 쉽게 풀 수 있다는 것을 기억하자.

profile
달을 향해 쏴라, 빗나가도 별이 될 테니 👊

0개의 댓글