<링크>
https://school.programmers.co.kr/learn/courses/30/lessons/68644?language=java
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
<문제>
정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.
<제한사항>
numbers의 길이는 2 이상 100 이하입니다.
numbers의 모든 수는 0 이상 100 이하입니다.
<입력 및 출력>

<고려사항>
1. 서로 다른 인덱스이기 때문에, 같은 인덱스가 또 계산이 되면 안되겠네요..! (1번 인덱스값 + 1번 인덱스값 X)
2. 같은 값들이 중복되서 들어가면 안되겠네요! (0+7 =7, 2+5 =7임. 7이 두번 들어가면 안됨!!)
<풀이 시작 전 생각한 사항>
1. 마지막 인덱스에 있는 값의, 계산에 포함될수 없으니, 범위는 인덱스값-1을 해야겠다. (마지막 인덱스 두번 계산 x)
2. 출력 값이 오름차순이기 때문에, sort를 해줘야하고, 중복이 허용되면 안되기에, set을 써야겠다!!
<풀이 - Python>
def solution(numbers):
answer = []
for i in range(len(numbers)-1):
for j in range(i+1,len(numbers)):
if (numbers[i] + numbers[j]) not in answer:
answer.append(numbers[i] + numbers[j])
answer = sorted(set(answer))
return answer
코드 진행 순서
1. 임시 변수 i는 number -1 의 길이만큼 진행을 한다
2. 임시 변수 j는 i보다 1큰 수부터 numbers의 범위만큼 진행한다.
3. 제공받은 list의 인덱스 값이 answer 리스트에 존재 하지 않는다면, answer에 추가하자.
4. for문을 다 돈 answer에서, 중복제거 및 정렬을 진행한다.
<풀이 - Java>
import java.util.ArrayList;
import java.util.Collections;
class Solution {
public int[] solution(int[] numbers) {
int[] answer = {};
ArrayList<Integer> answerList = new ArrayList<>();
for (int i = 0; i < numbers.length - 1; i++) {
for (int j = i + 1; j < numbers.length; j++) {
int sum = numbers[i] + numbers[j];
if (!answerList.contains(sum)) {
answerList.add(sum);
}
}
}
Collections.sort(answerList);
answer = new int[answerList.size()];
for (int i = 0; i < answerList.size(); i++) {
answer[i] = answerList.get(i);
}
return answer;
}
}
1. int 형태의 배열을 선언한다.
2. 계산 되는 값을 담기 위한 arrayList을 선언한다.
3. for문의 경우, python과 동일
4. answerList에 sum이라는 변수가 없다면(! ~~.contains), answerList에 추가하라 (. add)
5. Collections 함수의 sort를 활용하여 정렬 진행
6. answerList의 크기(.size() )만큼 새로운 answer을 지정한다.
7. answerList에 있는 값들을 하나씩 얻어와(.get) answer에 담는다
8. return 출력한다.
소요시간 : 20분
저는 python으로 사전에 완성을 한 후에, java로 푼 케이스입니다.
혹, 궁금한 사항이 있으시면 댓글 남겨주세요!
'알고리즘 > 프로그래머스' 카테고리의 다른 글
<프로그래머스> 짝지어 제거하기 (0) | 2024.08.15 |
---|---|
<프로그래머스> 괄호 회전하기 (0) | 2024.08.15 |
<프로그래머스> 올바른 괄호 (0) | 2024.08.15 |
<프로그래머스> 행렬의 곱셈 (0) | 2024.08.07 |
<프로그래머스> 모의고사 (0) | 2024.08.07 |