
소속중인 A&I 동아리에서 코딩역량을 강화하고자
코딩캠프를 진행하며 작성한 포스트입니다.
주말을 제외한 모든 날에 하루 5문제씩
프로그래머스 Lv.0 문제에 대한 풀이입니다.
해당 포스트는kotlin을 기반으로 작성합니다.
삼각형의 완성조건은 가장 간 변이 나머지 두 변의 길이보다 길면 안된다.
그래서 먼저 배열을 정렬 해준 뒤 조건문을 통해 결과를 리턴했다.
class Solution {
fun solution(sides: IntArray): Int {
val answer = sides.sorted()
return if (answer[0] + answer[1] > answer[2]) 1 else 2
}
}
flag의 결과로 a+b를 할 지 a-b를 할 지를 정해주는 문제이다.
그래서 조건문을 통해 true면 a+b를 false면 a-b를 반환해 주었다.
class Solution {
fun solution(a: Int, b: Int, flag: Boolean): Int {
return if(flag) a+b else a-b
}
}
이 문제는 배열 안에 음수가 존재하여 조금 생각을 해야하는 문제이다.
그래서 먼저 배열안을 정렬해 준 뒤 앞 두 개를 곱한 게 큰지
뒤 두 개를 곱한 게 큰기 비교해서 반하였다.
import kotlin.math.max
class Solution {
fun solution(numbers: IntArray): Int {
val answer = numbers.sorted()
return max(answer[0] * answer[1], answer[answer.lastIndex] * answer[answer.lastIndex - 1])
}
}
세균 증식은 시간마다 2배씩 증가하는 세균의 수를 구해야한다.
그래서repeat를 통해 시간을 돌려주고 answer안에 n 값을 넣어 반복만큼 2를 곱해주었다.
class Solution {
fun solution(n: Int, t: Int): Int {
var answer : Int = n
repeat(t){
answer *= 2
}
return answer
}
}
다른 사람 답은 진짜 감탄 밖에 안나왔다.
shl을 통해 왼쪽으로 시프트를 옮겨주며 값을 구할 수 있다는 사실을 알았다.
class Solution {
fun solution(n: Int, t: Int): Int = n shl t
}
이번 문제는
n * n의 2차원 배열을 만들어 [0][0], [1][1], [2][2]... 마다
1을 넣어주어야 한다. 그래서Array(n) { IntArray(n) }를 통해
n * n2차원 배열을 만들어 주고 람다식을 통해 x, y 인자를 만들어
그것이 똑같을 때 1을 아니면 0을 넣어주는 식으로 풀었다.
class Solution {
fun solution(n: Int): Array<IntArray> {
return Array(n) { x -> IntArray(n) { y -> if(x == y) 1 else 0} }
}
}
이제 2차원 배열에 대한 문제도 나오니 생각을 해야하는 문제가 늘었다.
배열에 대한 문제를 대비해두자.