728x90
반응형
2022.12.19
코테 문제풀이 23주차 01번 문제
문제
① 연습문제 : 숫자의 표현
② 링크
접근방법
생각해낸 방법은 1가지
① 2개 이상의 연속된 자연수의 합에서 자연수의 최댓값은 (n/2)+1
풀이
① 접근방법 : ①
② 풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
class Solution {
/*
* Date: 2022-12-16
* Time: 13:29
*/
public int solution(int n) {
return srchLinkedNumber(n);
}
/*
* 연속된 숫자의 합 찾기
* @param n 대상숫자
* @return int 연속된 숫자의 합이 대상숫자와 같은 케이스
* 1. 시작숫자가 될 수 있는 최댓값은 홀수: (대상숫자/2)+1, 짝수: (대상숫자/2)
* 2. 반복문을 한 번 볼때마다 1을 빼면서 합계에 더한다.
* 3. 조건에 부합하면 카운트한다.
* 4. 조건에 맞지 않으면 최댓값을 1씩 내리면서 다시 1번부터 반복한다.
*/
public int srchLinkedNumber(int n) {
if (n == 1) return 1;
int cnt = 1, sum = 0;
int num = n%2 == 1 ? (n/2)+1 : n/2;
int temp = num;
while(true) {
sum += temp;
if (sum == n) {
num--;
temp = num;
cnt++;
sum = 0;
}
if (temp <= 0) break;
if (sum > n) {
num--;
temp = num;
sum = 0;
}
temp--;
}
return cnt;
}
}
|
cs |
결과
주의사항
① 테스트케이스 1번 실패
728x90
반응형
'코딩테스트' 카테고리의 다른 글
[코테/JAVA] 월간 코드 챌린지 시즌1 : 이진 변환 반복하기 (0) | 2022.12.24 |
---|---|
[코테/JAVA] 연습문제 : 최댓값과 최솟값 (0) | 2022.12.19 |
[코테/JAVA] 연습문제 : 다음 큰 숫자 (0) | 2022.12.13 |
[코테/JAVA] 연습문제 : 택배상자 (0) | 2022.12.13 |
[코테/JAVA] 연습문제 : 귤 고르기 (0) | 2022.12.10 |
댓글