728x90
https://school.programmers.co.kr/learn/courses/30/lessons/131701
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 풀이
1. 중복을 허용하지 않기 때문에 Set 자료구조를 선언한다.
2. 연속된 수열의 길이 정의하는 length 를 선언하고 초기값을 1로 한다.
3. length 가 (elements + 1) 의 크기가 될 때 까지 연속된 부분 수열의 합을 구한다.
4. 부분 수열의 합을 구할 때 주어진 수열이 원형 수열이기 때문에 index 가 elements 크기와 같거나 크면 elements 의 크기로 나눈 나머지를 index 로 한다.
5. 1번에서 선언한 Set 의 크기를 반환한다.
코드
class Solution {
fun solution(elements: IntArray): Int {
// 중복을 허용하지 않기 때문에 Set 을 선언한다.
val answer = mutableSetOf<Int>()
// 연속된 수열 길이로 초기 값을 1로 설정 한다.
var length = 1
val size = elements.size
// length 가 elements + 1 의 크기가 될 때까지 탐색한다.
while (length != size + 1) {
for (i in 0 until size) {
var sum = 0
for (j in i until i + length) {
val idx = if (j >= size) {
j % size
} else {
j
}
sum += elements[idx]
}
answer.add(sum)
//println("length=$length >> $answer")
}
length++
}
return answer.size
}
}
728x90
'알고리즘(w.KOTLIN) > 탐색' 카테고리의 다른 글
[백준][1748][KOTLIN] 수 이어 쓰기1 (0) | 2023.01.19 |
---|---|
[백준][9095][KOTLIN] 1, 2, 3 더하기 (0) | 2023.01.19 |
[백준][2309][KOTLIN] 일곱 난쟁이 (0) | 2023.01.12 |
[알고리즘][KOTLIN] 할인 행사 (0) | 2022.12.04 |
[알고리즘][KOTLIN] 점찍기 (2) | 2022.12.02 |