티스토리 뷰
💻JAVA 코드 바로보기
□문제 설명
Finn은 요즘 수학공부에 빠져 있습니다. 수학 공부를 하던 Finn은 자연수 n을 연속한 자연수들로 표현 하는 방법이 여러개라는 사실을 알게 되었습니다. 예를들어 15는 다음과 같이 4가지로 표현 할 수 있습니다.
- 1 + 2 + 3 + 4 + 5 = 15
- 4 + 5 + 6 = 15
- 7 + 8 = 15
- 15 = 15
자연수 n이 매개변수로 주어질 때, 연속된 자연수들로 n을 표현하는 방법의 수를 return하는 solution를 완성해주세요.
□제한사항
- n은 10,000 이하의 자연수 입니다.
□입출력 예
n | return |
15 | 4 |
🌼 JAVA 알고리즘
□초기화면
□풀이과정
첫번째 for문으로 연속된 합을 구하기 위한 첫번째 값(시작값)을 지정하고, 두번째 for문을 통해 합을 구한다. 두번째 for문의 j값을 더한 number가 입력값과 일치할 때, 표현하는 방법(answer)++한다. |
class Solution {
public int solution(int n) {
int answer = 0;
for(int i=1;i<=n;i++){
int number=0;
for(int j=i;j<=n;j++){
number+=j;
if(number==n) {
answer++;
break;
}
}
}
return answer;
}
}
현재 코드는 2중 for문만을 사용한 단순한 코드이기 때문에, break가 적절히 되지 않아 시간이 많이 소요됨을 추측할 수 있다. 불필요한 반복을 찾기 위해 number를 출력하는 문을 추가했다. |
class Solution {
public int solution(int n) {
int answer = 0;
for(int i=1;i<=n;i++){
int number=0;
for(int j=i;j<=n;j++){
number+=j;
System.out.print(number+" ");
if(number==n) {
answer++;
break;
}
}
System.out.println();
}
return answer;
}
}
입력값인 15보다 큰 수가 나왔음에도 for문이 break되지 않고 계속해서 진행되는 것을 확인할 수 있다. 현재 코드에서 입력값과 number값이 같을 때(연속된 수를 더하여 입력값이 나오는 경우) break되지만, number값과 정확히 일치하지 않았을 때에는 ++된 j를 계속해서 더하고 있기 때문이다. 따라서 입력값보다 number값이 커질 경우 break하는 조건문을 추가했다. |
class Solution {
public int solution(int n) {
int answer = 0;
for(int i=1;i<=n;i++){
int number=0;
for(int j=i;j<=n;j++){
number+=j;
System.out.print(number+" ");
if(number==n) {
answer++;
break;
}
if(number>n) break; //추가된 코드
}
System.out.println();
}
return answer;
}
}
class Solution {
public int solution(int n) {
int answer = 0;
for(int i=1;i<=n;i++){
int number=0;
for(int j=i;j<=n;j++){
number+=j;
if(number==n) {
answer++;
break;
}
if(number>n) break;
}
}
return answer;
}
}
□링크
About Me
💻GitHub/KimSky904 KimSky904 - Overview Department of New Media Software. KimSky904 has 8 repositories available. Follow their code on GitHub. github.com
code-review.tistory.com
코딩테스트 연습 - 숫자의 표현
Finn은 요즘 수학공부에 빠져 있습니다. 수학 공부를 하던 Finn은 자연수 n을 연속한 자연수들로 표현 하는 방법이 여러개라는 사실을 알게 되었습니다. 예를들어 15는 다음과 같이 4가지로 표현 할
programmers.co.kr
'[코테] > [Programmers Lv2]' 카테고리의 다른 글
[Programmers] Lv2_올바른 괄호 (JAVA) (0) | 2021.12.28 |
---|---|
[Programmers] Lv2_다음 큰 숫자 (JAVA) (0) | 2021.12.27 |
[Programmers] Lv2_최댓값과 최솟값 (JAVA) (0) | 2021.12.25 |
[Programmers] Lv2_최솟값 구하기 (JAVA) (0) | 2021.12.24 |
[Programmers] Lv2_행렬의 곱셈 (JAVA) (0) | 2021.12.23 |
댓글
공지사항
최근에 올라온 글
TAG
- 구름에듀 기출문제
- lv1
- YBM
- Java
- 코딩테스트
- 코스프로
- 1급
- groomedu
- lv2
- groom
- C
- cospro기출
- 알고리즘
- COSPRO 2급
- CosPro
- 연습문제
- 구름에듀
- cospro기출문제
- programmers
- C++
- 기출문제
- c언어
- Cos Pro
- YBM기출
- 자바
- 배열
- 구름 기출문제
- 배열활용문제
- 프로그래머스
- c언어 기출문제
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함