[프로그래머스] 공 던지기

Sdoubleu·2023년 4월 26일
0

프로그래머스

목록 보기
24/34
post-thumbnail

문제


내가 쓴 풀이

class Solution {
    fun solution(numbers: IntArray, k: Int): Int {
        var cnt = 0
        var answer: Int = 0
        val mut = mutableListOf<Int>()
        for(i in 0..k){
            for(j in numbers) mut.add(j)
        }
        
        for(i in 0 until mut.size){
            if(i % 2 == 0) cnt++
            if(cnt == k){
                answer = mut[i]
                break
            }
        }
        
        return answer
    }
}

배열을 k 번 만큼 늘려서 새로운 배열에 넣어주고
옆 사람을 넘겨 다음 사람에게 토스하기 때문에 2의 배수를 찾고
cnt 를 이용해서 체크해준다
그래서 k값과 cnt 값이 같을 경우 break를 해서 return을 해준다


다른 사람 풀이


class Solution {
    fun solution(numbers: IntArray, k: Int): Int {
        return (1..k).map { numbers }.flatMap { it.toList() }[2 * (k - 1)]
    }
}

ex)
val numbers = intArrayOf(1, 2, 3)
val k = 3

받은 numbers 배열을 k번 반복해서 map으로 새 list를 만들어주고
flatMap 으로 인해 1차원적으로 풀어준다

그리고 공은 옆 사람을 지나서 다음 사람에게 토스하기 때문에
2의 배수가 되는데
처음에 0부터 시작하는 것을 1명이 던지는 것으로 진행되기 때문에
k - 1 을 한 인덱스의 값을 구하면 된다


내 코드를 한 줄로 줄이면 이렇게 된다 ...... ㅜ

profile
개발자희망자

0개의 댓글