풀이 : 일반적으로 푼다면 For 문을 사용하여 사이의 값을 배열로 만들어 배열의 합을 구하면 되는 문제
C# 에서는 Enumable.Range 를 사용하여 배열의 시작 지점과 끝을 정하여 배열을 만들 수 있었서 자바도
있지않을까란 생각에 찾아보았지만 없다는걸 알게 되었다.
그래서 구현하기로 생각하여 Iterable<T> 라는 인터페이스를 상속받는 클래스를 만들고 for문 없이(내부는 있음)
진행 을 목표로 다시 풀기를 진행
import java.util.Iterator;
public class program {
/* 두 정수 사이의 합
* 두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수,
* solution을 완성하세요.
* 예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다.
* */
private static int startNum = 6;
private static int endNum = 5;
public static class Range implements Iterable<Integer>
{
private int startNum;
private int count;
public Range(int min, int max) {
this.startNum = min;
this.count = max - min + 1;
}
public Iterator<Integer> iterator() {
return new Iterator<Integer>() {
private int cur = startNum;
private int count = Range.this.count;
public boolean hasNext() {
return count != 0;
}
public Integer next() {
count--;
return cur++;
}
public void remove() {
throw new UnsupportedOperationException();
}
};
}
}
private static class Solution {
public long solution(int a, int b) {
long result = 0;
Range rg;
if(a < b)
rg = new Range(a, b);
else if(a > b)
rg = new Range(b, a);
else
return a;
for (int i : rg) {
result +=i;
}
System.out.println(result);
return result;
}
}
public static void main(String[] args) {
Solution sol = new Solution();
sol.solution(startNum, endNum);
}
}
'알고리즘 > JAVA' 카테고리의 다른 글
[JAVA] 크레인 인형뽑기 게임 - 프로그래머스 (0) | 2021.02.28 |
---|---|
[JAVA] 같은 숫자는 싫어 - 프로그래머스 (0) | 2021.02.26 |
[JAVA] 위장 - 프로그래머스 (0) | 2020.11.17 |
[JAVA] 전화번호 목록 - 프로그래머스 (0) | 2020.11.16 |
[JAVA] 완주하지 못한 선수 - 프로그래머스 (0) | 2020.11.13 |