배열에서 가장 큰 수 두개를 곱한 값을 리턴값으로 주면 되는 거였다.
근데 정렬은 생각하지 못한 상태에서 알고리즘을 짰다.ㅠㅠ 가장 간단한 거였는데...
내 생각은 이거였다.
배열에서 가장 큰 거를 구하고 그 수를 뺀 나머지 수의 배열을 다시 만들어서 거기서 또 가장 큰 거를 구해서 그 두 개를 곱하려고 했다.
public static int[] removeElement(int[] arr, int item) {
return Arrays.stream(arr)
.filter(i -> i != item)
.toArray();
}
class Solution {
public int solution(int[] numbers) {
int max = 0;
for (int num : numbers) {
max = num > max ? num : max;
}
int[] numbersWithoutMax = removeElement(numbers, max);
int secondMax = 0;
for (int num : numbersWithoutMax) {
secondMax = num > secondMax ? num : secondMax;
}
return max * secondMax;
}
}
이렇게 하니까 배열에 동일한 숫자가 있을 경우, 그리고 그 숫자가 가장 큰 숫자에 포함되는 경우엔 numbersWithoutMax에 큰 숫자의 요소 자체를 제외시키기 때문에 원하는 결과값을 얻지 못한다. 그래서 80의 정답률을 얻었다.
그런데 제외를 할 때 인덱스 자체로 하게 되면 될 것 같다!!!
다시 해봐야겠다.
자바 코드를 못 짜겠다.. 어려워
이건 테스트 코드도 하나 통과 못함
public static int[] removeElement(int[] arr, int idx) {
if (arr == null || idx < 0 || idx>= arr.length) {
return arr;
}
return IntStream.range(0, arr.length).filter(i -> i != idx).map(i -> arr[i]).toArray();
}
클래스 다이어그램, 테이블 erd 구성
깃 프로젝트 생성
개발환경 통일
api 설계
역할분담
우리팀 규칙 세우기
S.A. 제출
숙련과제까지 해놔서 심화의 과제를 수행하면 된다.
내 역할은 좋아요 기능을 구현해야한다.
하핳 할 수 있지