클로저(Closures)는 무엇일까?클로저는 실행 가능한 코드 블럭이다.함수와 달리 이름이 정의되지 않아도 괜찮지만 함수처럼 파라미터 전달 및 리턴 값이 존재할 수 있다.일급 객체로써 변수, 상수 등에 저장이 가능하고 함수의 파라미터에도 전달이 가능하다. 기본 클로저 문법 알아보기{ (parameters) -> returnType in // running code}클로저는 기본적으로 중괄호로 감싸져있다.괄호를 통해 파라미터를 정의하고 "->" 를 이용해 리턴 타입을 명시한다."in" 키워드를 이용해 실행 코드와 분리한다. 간단한 예시로 사용해보기let sum: (Int, Int) -> Int = { (x: Int, y: Int) in return x + y}let result: Int = sum(1..
이번 문제는 설명을 쭉 읽어보니 해볼만 하겠다 싶은 문제여서 도전해봤는데약간씩 헤매는 과정을 거쳤다. 문제일단 배열을 제외하고 영상 시간을 정수로, 다시 정수에서 문자열로 변환하는 기능이 필요했다. 그래서 Kotlin에 있는 Extension function으로 만들어보기로 했다. 나머지 로직은 풀이와 같이 보자. 풀이먼저 getTimeInt 함수를 보자.간단히 문자열을 ":" 기준으로 쪼갠 후분 단위는 60을 곱하고 초 단위는 그냥 더해서 정수를 리턴해주는 함수이다. 이번에는 getTimeString 함수이다.특이점은 한자릿수의 경우 앞에 0으로 채워주는 것이 특징이므로String.format 함수를 사용해 포맷을 지정해주고 정수를 60으로 나눈 몫과 나머지를 각각 할당해주었다. 이제 실행되는 함수를 ..
이번 문제는 배열 자르기를 연습하는 시간이 되었다. 물론 실제로 배열 자체를 잘랐다기보다는 리스트로 변형해서 잘랐지만 말이다. 문제홀짝 케이스마다 인덱스를 맞춰 잘라주면 되는 문제이다. 다만, 배열을 리스트로 변환한 뒤 subList를 사용할텐데 인덱스를 어떻게 주어야할지 고민이 필요한 문제이다. 풀이먼저 자르는 횟수는 query배열 길이만큼이기때문에 query에 forEachIndexed를 사용해주었다. subList를 활용하면 문제를 다르게 읽어야 할 필요가 있다. 먼저 짝수일 때는 query값을 포함하여 앞의 값을 남겨야 한다. 여기서 두번째 파라미터에 query배열 값 그대로를 넣게 되면해당 숫자까지 같이 잘리기 때문에 1을 더해주었다. 홀수일 때는 query값을 포함하여 뒤의 값을 남겨야 한다...