🔥개인 취미 목적으로 프로그래머스 문제를 정리한 게시글입니다.
https://school.programmers.co.kr/learn/courses/30/lessons/76501
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
✏️ 문제설명
어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례때로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해 주세요.
💡 제한사항
absolutes의 길이는 1 이상 1,000 이하 입니다. 모든 수는 각각 1 이상 1,000 이하입니다.
signs의 길이는 absolutes의 길이와 같습니다.
signs[i]가 참이면 absolutes[i]의 실제 정수가 양수임을, 그렇지 않으면 음수임을 의미합니다.
📚 입출력 예
absolutes | signs | result |
[4, 7, 12] | [true, false, true] | 9 |
[1, 2, 3] | [false, true, false] | 0 |
💻 소스 코드
class Solution {
public int solution(int[] absolutes, boolean[] signs) {
int answer = 0;
for (int i = 0; i < absolutes.length; i++) {
if (signs[i] == false) {
absolutes[i] = -1 * absolutes[i];
}
answer += absolutes[i];
}
return answer;
}
}
위 코드는 두 개의 배열 absolutes와 signs를 입력받아, signs 배열의 값에 따라 absolutes 배열의 요소들의 부호를 바꾸거나 그대로 더한 뒤 결과를 반환하는 메서드를 구현한 것입니다.
코드의 작동 방식은 다음과 같습니다.
- answer 변수를 초기화하고, 배열 absolutes와 signs를 순회하며 각 요소에 대한 작업을 수행합니다.
- 배열을 인덱스별로 순회하며, signs 배열의 값이 false인 경우 absolutes 배열의 요소를 음수로 변경합니다.
- 그대로이거나 변경된 absolutes 배열의 요소를 answer에 더해주고 반환해 줍니다.
시간 복잡도
위 코드의 시간 복잡도는 입력 배열 absolutes의 길이에 선형적으로 비례합니다. 배열을 순회하며 각 요소를 처리하기 때문에 시간 복잡도는 O(n)입니다. 여기서 n은 absolutes의 길이를 나타냅니다.
공간 복잡도
위 코드의 공간 복잡도는 입력 배열 absolutes와 signs의 길이와 관련이 없습니다. 추가적인 데이터 구조나 배열을 생성하지 않고, 고정된 수의 변수인 answer와 i만 사용합니다. 이 변수들은 입력 배열의 크기와 상관없이 일정한 양의 메모리를 차지합니다. 따라서, 이 알고리즘의 메모리 사용량은 입력 크기와 무관하며, 공간 복잡도는 O(1)입니다.
'🕊️ 프로그래머스 > Lv1' 카테고리의 다른 글
[프로그래머스] Lv.1 없는 숫자 더하기 - Java (0) | 2023.12.06 |
---|---|
[프로그래머스] Lv.1 서울에서 김서방 찾기 - Java (0) | 2023.12.05 |
[프로그래머스] Lv.1 콜라츠 추측 - Java (0) | 2023.12.01 |
[프로그래머스] Lv.1 두 정수 사이의 합 - Java (1) | 2023.11.29 |
[프로그래머스] Lv.1 정수 내림차순으로 배치하기 - Java (3) | 2023.11.28 |
🔥개인 취미 목적으로 프로그래머스 문제를 정리한 게시글입니다.
https://school.programmers.co.kr/learn/courses/30/lessons/76501
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
✏️ 문제설명
어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례때로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해 주세요.
💡 제한사항
absolutes의 길이는 1 이상 1,000 이하 입니다. 모든 수는 각각 1 이상 1,000 이하입니다.
signs의 길이는 absolutes의 길이와 같습니다.
signs[i]가 참이면 absolutes[i]의 실제 정수가 양수임을, 그렇지 않으면 음수임을 의미합니다.
📚 입출력 예
absolutes | signs | result |
[4, 7, 12] | [true, false, true] | 9 |
[1, 2, 3] | [false, true, false] | 0 |
💻 소스 코드
class Solution {
public int solution(int[] absolutes, boolean[] signs) {
int answer = 0;
for (int i = 0; i < absolutes.length; i++) {
if (signs[i] == false) {
absolutes[i] = -1 * absolutes[i];
}
answer += absolutes[i];
}
return answer;
}
}
위 코드는 두 개의 배열 absolutes와 signs를 입력받아, signs 배열의 값에 따라 absolutes 배열의 요소들의 부호를 바꾸거나 그대로 더한 뒤 결과를 반환하는 메서드를 구현한 것입니다.
코드의 작동 방식은 다음과 같습니다.
- answer 변수를 초기화하고, 배열 absolutes와 signs를 순회하며 각 요소에 대한 작업을 수행합니다.
- 배열을 인덱스별로 순회하며, signs 배열의 값이 false인 경우 absolutes 배열의 요소를 음수로 변경합니다.
- 그대로이거나 변경된 absolutes 배열의 요소를 answer에 더해주고 반환해 줍니다.
시간 복잡도
위 코드의 시간 복잡도는 입력 배열 absolutes의 길이에 선형적으로 비례합니다. 배열을 순회하며 각 요소를 처리하기 때문에 시간 복잡도는 O(n)입니다. 여기서 n은 absolutes의 길이를 나타냅니다.
공간 복잡도
위 코드의 공간 복잡도는 입력 배열 absolutes와 signs의 길이와 관련이 없습니다. 추가적인 데이터 구조나 배열을 생성하지 않고, 고정된 수의 변수인 answer와 i만 사용합니다. 이 변수들은 입력 배열의 크기와 상관없이 일정한 양의 메모리를 차지합니다. 따라서, 이 알고리즘의 메모리 사용량은 입력 크기와 무관하며, 공간 복잡도는 O(1)입니다.
'🕊️ 프로그래머스 > Lv1' 카테고리의 다른 글
[프로그래머스] Lv.1 없는 숫자 더하기 - Java (0) | 2023.12.06 |
---|---|
[프로그래머스] Lv.1 서울에서 김서방 찾기 - Java (0) | 2023.12.05 |
[프로그래머스] Lv.1 콜라츠 추측 - Java (0) | 2023.12.01 |
[프로그래머스] Lv.1 두 정수 사이의 합 - Java (1) | 2023.11.29 |
[프로그래머스] Lv.1 정수 내림차순으로 배치하기 - Java (3) | 2023.11.28 |