
소속중인 A&I 동아리에서 코딩역량을 강화하고자
코딩캠프를 진행하여 주말을 제외한 모든 날에 하루 5문제씩
프로그래머스 Lv.0 문제를 풀어가며 작성한 포스트입니다.
해당 포스트는kotlin을 기반으로 작성합니다.
kotlin에서 제곱수를 체크하려면 import를 통해
math를 통한sqrt함수를
불러오면 편하다. 그런데sqrt는Double형만 취급하기에 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은 스코프 함수로 문제를 쉽게 풀 수 있다는 것을 기억하자.