반응형
프로그래머스의 알고리즘 문제 및 풀이에 대해 차근차근 포스팅하려합니다.
저도 초보자이기도하고 알고리즘에 쉽게 다가갈 수 없는 부분들이 많기 때문에
최대한 알기 쉽게 정리해보려하고 알고리즘을 어려워하는 분들에게 도움이 되었으면 합니다.
많이 공유되고 토론이 될 수 있는 공간이 되었으면 좋겠습니다.
환경
언어 : 자바
단계 : 레벨 1단계 (입문자용)
정답률 : 85%
제목
두 정수 사이의 합
문제 설명 및 코드
두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요.
예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다.
1
2
3
4
5
6
7
|
class Solution {
public long solution(int a, int b) {
long answer = 0;
return answer;
}
}
|
cs |
제한 조건
- a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요.
- a와 b는 -10,000,000 이상 10,000,000 이하인 정수입니다.
- a와 b의 대소관계는 정해져있지 않습니다.
입출력 예
a | b | return |
3 | 5 | 12 |
3 | 3 | 3 |
5 | 3 | 12 |
반응형
문제 정답 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
class Solution {
public long solution(int a, int b) {
long answer = 0;
int start = Math.min(a, b);
int end = Math.max(a, b);
for (int i = start; i <= end; i++) {
answer += i;
}
return answer;
}
}
|
cs |
start와 end 변수를 선언해준 다음,
Math.min / Math.max 메서드에 값을 넣어주어
반복문을 돌려 answer 변수에 하나씩 더해주면 됩니다.
다른사람 풀이
1
2
3
4
5
6
7
8
9
|
class Solution {
public long solution(int a, int b) {
long answer = 0;
for (int i = ((a < b) ? a : b); i <= ((a < b) ? b : a); i++)
answer += i;
return answer;
}
}
|
cs |
반복문에 삼항연산자를 넣어
변수에 직접적으로 값을 넣고 푼 코드입니다.
확실히 삼항연산자가 조건문에 사용될때 코드를 간결히 할 수 있는 부분이 많네요!
1
2
3
4
5
6
7
8
9
10
|
class Solution {
public long solution(int a, int b) {
return sumAtoB(Math.min(a, b), Math.max(b, a));
}
private long sumAtoB(long a, long b) {
return (b - a + 1) * (a + b) / 2;
}
}
|
cs |
또하나는,
리턴값에 sumAtoB 함수안에 파라미터를 Math.min과 Math.max를 넣어주어
sumAtoB 메서드의 매개변수에 넣어줍니다.
그리고 등차수열 공식으로 계산해준 코드입니다.
반복문이 필요없은 수학공식이란 위대하네요..
반응형
'Algorithm' 카테고리의 다른 글
[Java&알고리즘] 서울에서 김서방 찾기 (Level 1) (0) | 2023.03.07 |
---|---|
[Java&알고리즘] 콜라츠 추측 (Level 1) (0) | 2023.03.06 |
[Java&알고리즘] 하샤드 수 (Level 1) (0) | 2023.03.03 |
[Java&알고리즘] 나머지가 1이 되는 수 찾기 (Level 1) (0) | 2023.03.02 |
[Java&알고리즘] 정수 내림차순으로 배치하기 (Level 1) (0) | 2023.02.28 |
댓글