TIL/kotlin 알고리즘

kotlin 프로그래머스 lv1 푸드 파이트 대회

crablo 2024. 2. 2. 16:49
728x90

문제를 설명해보자면 음식의 종류가 3가지가 있고 food 배열에서 i는 음식 종류이다.

food[i]는 음식을 count한 값이다.

 

이 예시를 보면, food 배열이 주어질때 result로 food[i]번만큼

append해주면 된다고 생각했다.

그렇지만 모두 다 append하지 않고 두 선수가 각자 같은양을 나눠 갖기 때문에

짝수번이면 한사람당 repeat(count/2)만큼 반복하면되고

홀수번이면 (count-1)/2 만큼 반복하면 된다고 생각했다.

그래서 코드를 아래와 같이 작성했다.

두 선수가 양쪽 끝에서 시합을 하기때문에 어차피 같은 양만큼 먹는다고 설명되어서 reverse를 사용했다.

forEachIndexed 를 사용해서 food 배열의 index와 count(배열의 value)를 간단히 나타낼 수 있었다.

이 함수를 간단히 예시를 들면서 설명해보면

예를들어 배열 

val numbers = listOf(1,2,3,4,5)

이때 numbers.forEachIndexed{index,value ->

println(

}

 

number 배열에 숫자를 담아둔 후 index와 value값을 출력해보면

다음과 같은 값이 출력된다.

앞으로 for문 대신에 사용하면 코드가 간결해질것 같다.

728x90