[18/06/28] 프로그래머스-Level 1 두 정수 사이의 합
2018. 6. 28. 17:40
Summary:
두 정수 사이에 있는 정수 개수를 구하고 사이에 있는 정수의 합을 구하는 문제.
문제설명
두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요.
예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다.
제한사항
- a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요.
- a와 b는 -10,000,000 이상 10,000,000 이하인 정수입니다.
- a와 b의 대소관계는 정해져있지 않습니다.
예제
a | b | return |
---|---|---|
3 | 5 | 12 |
3 | 3 | 3 |
5 | 3 | 12 |
class Solution { public long solution(int a, int b) { long answer = 0; for (int i = Math.min(a,b); i <= Math.max(a,b); i++) { answer +=i; } return answer; } }
처음엔 LinkedList를 통해 접근했다. 그러나 계속되는 출력 범위 초과라는 말에 계속 수정을 했다.
a와 b가 누가 크냐에 따라 index 값이 달라지기 때문에 처음엔 if문으로 a>b, a<b, a=b일 때 경우를 나눠서 구현하였다. 그러나 코드가 쓸때 없이 길어졌고 여전히 출력 범위 초과를 해결할 수 없었다. 그래서 절대값을 이용했다. 그래도 해결실패...
결국 Math.min & Math.max를 마지막으로 썼으나 해결 실패.........
하지만 문제는 System.out.Print에 있었다.... 그걸 지우니 그냥 통과.....
그래도 나름 리팩토링을 하는 재미가 있었다. LinkedList -> Long 타입 && if문 -> 절대값 -> Math.min과 max
코드 1줄이 엄청난 고통을 가져다 줌을 배우면서 1줄도 큰 의미를 가짐을 알았다. 또한 다시한번 리팩토링의 중요성도 알 수 있었다.
배운점
리팩토링의 중요성, 코드 1줄도 무시하면 안된다. Math.min & max
공부할 것
Math 메소드 및 원시형 타입 복습
'Get IT Note > 알고리즘' 카테고리의 다른 글
[18/07/01] 프로그래머스- Level 1 가운데 글자 가져오기 (0) | 2018.07.01 |
---|---|
[18/06/30] 프로그래머스- Level 1 문자열 내림차순으로 배치하기 (0) | 2018.07.01 |
[18/06/29] 프로그래머스- Level 1 문자열 내 마음대로 정렬하기 (0) | 2018.06.29 |
[18/06/29] 프로그래머스- Level 1 나누어 떨어지는 숫자 배열 (0) | 2018.06.29 |
[18/06/22] 프로그래머스-순열 검사 (0) | 2018.06.23 |