
소속중인 A&I 동아리에서 코딩역량을 강화하고자
코딩캠프를 진행하며 작성한 포스트입니다.
주말을 제외한 모든 날에 하루 5문제씩
프로그래머스 Lv.0 문제에 대한 풀이입니다.
해당 포스트는kotlin을 기반으로 작성합니다.
이번 문제는 a,b 둘 다 홀수일때 모두 2제곱을한 것을 더해주고
둘 중 하나만 홀수일때 2 * (a + b)를 둘 다 짝수면 절대값 (a - b)를 해준 것을 반환한다.
코틀린에서 2제곱은.pow(2)를 통해 사용할 수 있는데 이것은 변수가 Double 형태일 때 가능하다.
그래서 더블로 바꿔주고 그 값을 다시 Int로 바꾸어 주었다,
그리고 절대값은.abs()를 통해 사용할 수 있다.
이에 따라 조건을 만족하는 식을 만들었다.
import kotlin.math.*
class Solution {
fun solution(a: Int, b: Int): Int {
var answer: Int = 0
if (a % 2 == 1 && b % 2 == 1){
answer = a.toDouble().pow(2).toInt() + b.toDouble().pow(2).toInt()
} else if (a % 2 == 1 || b % 2 == 1){
answer += 2 * (a + b)
} else {
answer += abs(a - b)
}
return answer
}
}
뒤에서 5등 위로와 문제가 비슷한데
그래서 리스트를 정렬하고.slice를 통해 앞의 5개를 추출해준 뒤 IntArray로 변환해 주었다.
slice()말고take()를 통해서도 값을 가져올 수 있다.
class Solution {
fun solution(num_list: IntArray): IntArray {
return num_list.sorted().slice(0..4).toIntArray()
}
}
이 문제는 배열의 숫자 만큼 배열에 그 값을 추가한 배열을 만드는 것이 목표이다.
그래서 일단 배열의 숫자 인덱스를 가져와 그것을repeat()을 통해 그 숫자만큼 반복시켜주고
answer안에 그 숫자를 넣어주었다.
class Solution {
fun solution(arr: IntArray): IntArray {
var answer: IntArray = intArrayOf()
for(x in arr.indices){
repeat(arr[x]){
answer+=arr[x]
}
}
return answer
}
}
이번 문제는 문자열을 A -> B , B -> A로 만든 뒤 그것이 pat과 비교해 같으면 1을 아니면 0을 내보내는 문제이다.
그래서 A와 B를 변환시켜준 뒤 return으로 그것이 안에 있는지 확인하였다.
변환 과정에서 List로 만들어 주었지만.joinToString("")을 통해 문자열 하나로 만들어 주었다.
class Solution {
fun solution(myString: String, pat: String): Int {
val answer = myString.toMutableList()
for(x in answer.indices){
if (answer[x] == 'A'){
answer[x] = 'B'
} else {
answer[x] = 'A'
}
}
return if(pat in answer.joinToString("")) 1 else 0
}
}
이 문제는 알파벳
l보다 앞에 있는 문자는 전부l로 바꾸는 문제이다.
그래서 이전 문제와 같이 문자열을 List로 만들어 그것의 인덱스를 가져온 뒤
l.code이하면l보다 앞서는 것으로 그것을l로 만들어주었다.
class Solution {
fun solution(myString: String): String {
val answer = myString.toMutableList()
for(x in answer.indices){
if(answer[x].code < 'l'.code){
answer[x] = 'l'
}
}
return answer.joinToString("")
}
}
다른 사람의 문제 풀이를 보니
.replace의 자비정규식으로도 풀 수 있다는 것을 알았다.
- toRegex() : 자바정규식으로 변환해주는 표현식
class Solution {
fun solution(myString: String) = myString.replace("[a-k]".toRegex(), "l")
}
내장 함수에 익숙해 진다는 것에 만족한 문제들이었다.