728x90
반응형
힌트
더보기
- 3개의 연속된 숫자의 합이 12가 되려면 [3,4,5]
5개의 연속된 숫자의 합이 15가 되려면 [1,2,3,4,5]
4개의 연속된 숫자의 합이 14가 되려면 [2,3,4,5]
5개의 연속된 숫자의 합이 5가 되려면 [-1,0,1,2,3]
- 규칙을 찾아보면 배열의 중간값은 합/연속된 숫자의 개수이다
[3, 4(12 / 3), 5] , [1, 2, 3(15 / 3), 4, 5] , [2,3(14 / 3), 4, 5], [-1, 0, 1(5 / 5), 2, 3]
홀수 개수라면 정중앙이 합/n이고,
짝수 개수면 중앙 왼쪽이다.
정답
더보기
방법 1
int[] answer = new int[num];
if(num%2==0){
for(int i = 0; i < num; i++){
answer[i] = (total / num) - (num / 2) + i + 1;
}
}else{
for(int i = 0; i < num; i++){
answer[i] = (total / num) - (num / 2) + i;
}
}
return answer;
방법 2
public static int[] Solution74(int num, int total)
{
var numArr = Enumerable.Range(total / num - num, num * 2).ToArray();
return FindTargetConsecutiveIntegers(numArr, num, total).OrderBy(x => x).ToArray();
}
static int[] FindTargetConsecutiveIntegers(int[] arr, int count, int total)
{
List<int> answerList = new List<int>();
for(int i=0; i < arr.Length - count + 1; i++)
{
var sum=0;
answerList.Clear();
for(int j = i; j < count + i; j++)
{
answerList.Add(arr[j]);
sum += arr[j];
if(sum > total)break;
}
if(total == sum)
{
return answerList.ToArray();
}
}
return new int[0];
}
해석
더보기
방법 1
if(num%2==0){
for(int i = 0; i < num; i++){
answer[i] = (total / num) - (num / 2) + i + 1;
}
}
짝수 개수일 때
(total / num) - (num / 2) + i +1
힌트에서 본 예시를 대입하면 3(=14 / 4) - 2(=4 / 2) + i +1
else{
for(int i = 0; i < num; i++){
answer[i] = (total / num) - (num / 2) + i;
}
}
홀수 개수일 때
(total / num) - (num / 2) + i
힌트에서 본 예시를 대입하면 4(12 / 3) - 1(3 / 2) + i
i가 증가함에 따라 1씩 증가하는 연속된 숫자 배열이 만들어진다.
방법 2
var numArr = Enumerable.Range(total / num - num, num * 2).ToArray();
( total / num) - num 번째 부터 num * 2 개수 만큼 연속된 숫자를 생성한다
for(int j = i; j < count + i; j++)
{
answerList.Add(arr[j]);
sum += arr[j];
if(sum > total)break;
}
반복문은 약속된 횟수 num만큼 반복시킨다
리스트에 해당 숫자를 넣어주고 합산을 해준 후 합이 만약 약속된 합산보다 크다면 반복문을 빠져나온다
if(total == sum)
{
return answerList.ToArray();
}
합이 약속된 합과 일치한다면 해당 리스트를 리턴해준다
728x90
반응형
'C#' 카테고리의 다른 글
[프로그래머스 힌트/답/해석] 안전지대 (2) | 2024.01.30 |
---|---|
[프로그래머스 힌트/답/해석] 다음에 올 숫자 (0) | 2024.01.30 |
[프로그래머스 힌트/답/해석] 다항식 더하기 (0) | 2024.01.30 |
[프로그래머스 힌트/답/해석] 특이한 정렬 (0) | 2024.01.30 |
[프로그래머스 힌트/답/해석] 문자열 밀기 (0) | 2024.01.30 |