코딩테스트
코딩테스트 배열 관련 함수②
망고고래
2024. 4. 23. 16:07
1. 배열에서 두 항목 선택
각 인덱스에서 자신의 뒤에 있는 항목 선택 -> 모든 경우의 수 실행 가능
for(int i = 0; i < arr.length -1; i++){
for(int j = i + 1; j < numbers.length; j++){
//실행할 코드 작성
}
}
이중 반복문 -> 시간 복잡도 O(N^2)
*2차원 배열
int[][] pattern = {
{1, 2, 3, 4, 5},
{2, 1, 2, 3, 2, 4, 2, 5},
{3, 3, 1, 1, 2, 2, 4, 4, 5, 5}
};
이 2차원 배열은 다음과 같이 저장된다.
1 | 2 | 3 | 4 | 5 | |||||
2 | 1 | 2 | 3 | 2 | 4 | 2 | 5 | ||
3 | 3 | 1 | 1 | 2 | 2 | 4 | 4 | 5 | 5 |
이렇게 2차원 배열로 저장하면 다음과 같이 2중 for문을 사용해서 값을 비교하는 경우 등에 효율적이다.
for(int i = 0; i<answers.length; i++){
for(int j = 0; j < pattern.length; j++){
if(answers[i] == pattern[j][i % pattern[j].length]){
scores[j]++;
}
}
}
2. 최댓값
stream의 max()
int maxScore = Arrays.stream(scores).max().getAsInt();
Arrays.stream(scores): scores 배열로 스트림 생성
max(): 스트림의 최댓값 리턴
getAsInt(): max() 메서드로 반환된 OptionalInt 객체가 값을 포함하고 있다면 그 값 반환
- OptionalInt가 비어있는 경우(=스트림이 비어있는 경우) 예외 발생
*OptionalInt
Optional 클래스의 한 형태
int 값을 감싸는 래퍼 클래스
int 값이 있을 수도 있고 없을 수도 있는 경우에 사용