문제 ]
Given a list, repeat each element in the list amount of times. The input and output portions will be handled automatically by the grader. You need to write a function with the recommended method signature.
Input Format
The first line contains the integer where is the number of times you need to repeat the elements.
The next lines each contain an integer. These are the elements in the array.
Output Format
Output each element of the original list times, each on a separate line. You have to return the list/vector/array of integers. The relative positions of the values should be the same as the original list provided in the input.
Constraints
Sample Input
3
1
2
3
4
Sample Output
1
1
1
2
2
2
3
3
3
4
4
4
제출 ]
def f(num:Int,arr:List[Int]):List[Int] ={
return arr.flatMap(e=>List.fill(num)(e))
}
풀이 ]
List클래스의 함수 flatMap을 이용한다. 비슷한 함수로 map이 있는데 둘간의 차이를 보면
예제)
val f = Seq("apple","banana","orange")
f.map(_.toUpperCase) //결과값 : List(APPLE, BANANA, ORANGE)
f.flatMap(_.toUpperCase) //결과값 List(A,P,P,L,E,B,A,N,A,N,A,.....G,E)
FlatMap 함수
final def flatMap[B](f: (A) => IterableOnce[B]): List[B]
Fill 함수
def fill[A](n: Int)(elem: => A): List[A]
계산결과를 포함하는 목록을 n번 생성한다.
결과적으로 arr.flatMap(e=>List.fill(num)(e)) 내용은
arr배열을 flatmap으로 나누고 각 요소를 fill함수를 이용해 num만큼 반복시킨 목록들을 다시 List값으로 리턴시켜, 해당 문제에 원하는 결과값을 도출한다.
Map과 flatMap차이 : https://hamait.tistory.com/606
댓글 없음:
댓글 쓰기