🔥개인 취미 목적으로 프로그래머스 문제를 정리한 게시글입니다.
https://school.programmers.co.kr/learn/courses/30/lessons/12912/solution_groups?language=java
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
✏️문제설명
두 정수 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;
if (a < b) {
for (int i = a; i <= b; i++) {
answer += i;
}
} else {
for (int i = b; i <= a; i++) {
answer += i;
}
}
return answer;
}
}
위 코드는 두 정수 a와 b를 입력받아, 이 두 정수 사이에 있는 모든 정수의 합을 계산하는 코드입니다.
코드의 작동 방식은 다음과 같습니다.
- 변수 초기화 : 정수들의 합을 저장하기 위한 변수 answer를 0으로 초기화해줍니다.
- long 타입을 사용하는 이유는 정수들의 합이 int 범위를 초과할 수 있기 때문입니다.
- if 조건 : if (a < b) :조건을 사용하여 a가 b보다 작은지 확인해줍니다. 만약 a가 b보다 작으면 a부터 b까지 for 반목문을 사용하여, 루프 변수 i가 a부터 시작하여 b까지 증가하여 각 반복에서 answer에 증감 연산자로 값을 더해줍니다.
- else 조건 : a가 b보다 크거나 같은 경우 if조건과 동일한 방식으로 b부터 a까지의 모든 정수를 answer에 증감 연산자로 값을 더해줍니다.
- 결과 반환 : answer를 반환해줍니다.
시간 복잡도
위 코드에서 중요한 부분은 for 루프 두 개입니다. 이 루프들은 a와 b 사이의 모든 숫자를 순회합니다.
숫자의 범위는 a와 b의 차이에 따라 달라지며 이 차이를 n이라고 하면, n = abs(a - b) + 1입니다.
for 루프는 이 범위 내의 모든 숫자를 순회하므로, 시간 복잡도는 O(n)입니다.
공간 복잡도
위 코드는 answer라는 long 변수 하나만 사용하므로, 상수 공간(O(1))을 차지합니다.
루프 변수와 입력 변수 모두 상수 공간을 차지하기 때문에, 이 코드의 공간 복잡도는 O(1)입니다.
'🕊️ 프로그래머스 > Lv1' 카테고리의 다른 글
[프로그래머스] Lv.1 음양 더하기 - Java (0) | 2023.12.04 |
---|---|
[프로그래머스] Lv.1 콜라츠 추측 - Java (0) | 2023.12.01 |
[프로그래머스] Lv.1 정수 내림차순으로 배치하기 - Java (3) | 2023.11.28 |
[프로그래머스] Lv.1 하샤드 수 - Java (0) | 2023.11.28 |
[프로그래머스] Lv.1 정수 제곱근 판별 - Java (0) | 2023.11.27 |
🔥개인 취미 목적으로 프로그래머스 문제를 정리한 게시글입니다.
https://school.programmers.co.kr/learn/courses/30/lessons/12912/solution_groups?language=java
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
✏️문제설명
두 정수 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;
if (a < b) {
for (int i = a; i <= b; i++) {
answer += i;
}
} else {
for (int i = b; i <= a; i++) {
answer += i;
}
}
return answer;
}
}
위 코드는 두 정수 a와 b를 입력받아, 이 두 정수 사이에 있는 모든 정수의 합을 계산하는 코드입니다.
코드의 작동 방식은 다음과 같습니다.
- 변수 초기화 : 정수들의 합을 저장하기 위한 변수 answer를 0으로 초기화해줍니다.
- long 타입을 사용하는 이유는 정수들의 합이 int 범위를 초과할 수 있기 때문입니다.
- if 조건 : if (a < b) :조건을 사용하여 a가 b보다 작은지 확인해줍니다. 만약 a가 b보다 작으면 a부터 b까지 for 반목문을 사용하여, 루프 변수 i가 a부터 시작하여 b까지 증가하여 각 반복에서 answer에 증감 연산자로 값을 더해줍니다.
- else 조건 : a가 b보다 크거나 같은 경우 if조건과 동일한 방식으로 b부터 a까지의 모든 정수를 answer에 증감 연산자로 값을 더해줍니다.
- 결과 반환 : answer를 반환해줍니다.
시간 복잡도
위 코드에서 중요한 부분은 for 루프 두 개입니다. 이 루프들은 a와 b 사이의 모든 숫자를 순회합니다.
숫자의 범위는 a와 b의 차이에 따라 달라지며 이 차이를 n이라고 하면, n = abs(a - b) + 1입니다.
for 루프는 이 범위 내의 모든 숫자를 순회하므로, 시간 복잡도는 O(n)입니다.
공간 복잡도
위 코드는 answer라는 long 변수 하나만 사용하므로, 상수 공간(O(1))을 차지합니다.
루프 변수와 입력 변수 모두 상수 공간을 차지하기 때문에, 이 코드의 공간 복잡도는 O(1)입니다.
'🕊️ 프로그래머스 > Lv1' 카테고리의 다른 글
[프로그래머스] Lv.1 음양 더하기 - Java (0) | 2023.12.04 |
---|---|
[프로그래머스] Lv.1 콜라츠 추측 - Java (0) | 2023.12.01 |
[프로그래머스] Lv.1 정수 내림차순으로 배치하기 - Java (3) | 2023.11.28 |
[프로그래머스] Lv.1 하샤드 수 - Java (0) | 2023.11.28 |
[프로그래머스] Lv.1 정수 제곱근 판별 - Java (0) | 2023.11.27 |