숫자의 표현
x수학을 공부하던 민지는 재미있는 사실을 발견하였습니다. 그 사실은 바로 연속된 자연수의 합으로 어떤 숫자를 표현하는 방법이 여러 가지라는 것입니다. 예를 들어, 15를 표현하는 방법은(1+2+3+4+5)(4+5+6)(7+8)(15)로 총 4가지가 존재합니다. 숫자를 입력받아 연속된 수로 표현하는 방법을 반환하는 expressions 함수를 만들어 민지를 도와주세요. 예를 들어 15가 입력된다면 4를 반환해 주면 됩니다.
이게 왜 재밌는건진 잘 모르겠지만 일단 풀어보자.
덧셈을 시작하는 숫자를 1에서 num까지 증가시켜준다. 그냥 계속 더해주면서 temp가 num을 넘겨버리면 그냥 다음 i로 넘어가주고, temp가 num과 같아지는 경우가 존재하면 답안 개수를 증가시키고 넘어간다.
x
public class Expressions { public int expressions(int num) { int answer = 0; for (int i = 1; i <= num; i++) { int temp = i; int inc = i + 1; while (temp <= num) { if (temp == num) { answer++; break; } temp += inc; inc++; } } return answer; } public static void main(String args[]) { Expressions expressions = new Expressions(); // 아래는 테스트로 출력해 보기 위한 코드입니다. System.out.println(expressions.expressions(15)); }}'공부 > algorithm' 카테고리의 다른 글
| [codility] CyclicRotation (0) | 2018.05.22 |
|---|---|
| [codility] BinaryGap (0) | 2018.05.22 |
| [programmers] 멀리 뛰기 (0) | 2018.05.22 |
| [programmers] N개의 최소공배수 (0) | 2018.05.22 |
| [programmers] 야근 지수 (0) | 2018.05.22 |
댓글