Arrays.toString(배열변수명) 하면 배열 내부에 저장된 값들을 한눈에문자열 형태로 봄
Arrays.sort(배열변수명) : 오름차순으로 변환
배열안에 저장 된 값이 아닌 인덱스 번호를 추출하는 것을 이용하는 문제

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Baek5597 {
public static void main(String[] args) throws IOException {
//이 문제에
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int arr[] = new int[31]; //0~30번의 인덱스 생성
for(int i = 1; i <= 28; i++ ) { // 출석번호는 0포함하면 안되서 i 초기화 1
int a = Integer.parseInt(br.readLine());
arr[a] = 1;
}
for(int i = 1; i < 31; i++ ) {
if(arr[i] != 1) {
System.out.println(i);
}
}
}
}

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Baek3052 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[] arr = new int[10]; // 0~9 초기화 설정
for(int i=0; i<arr.length; i++) {
arr[i] = Integer.parseInt(br.readLine())%42;
}
int cnt = 0;
for(int i = 0; i < arr.length; i++) { // i = 0~9까지 반복
boolean flag = false; // false로 초기화
for(int j = i+1; j < arr.length; j++) { //i를 뺀 나머지를 반복
if(arr[i] == arr[j]) { //i와 i를 뺀 나머지와 비교해서 같으면 true
flag = true;
}
}
if(flag == false) { //i와 다른 값들 비교했을때 없으면 cnt 1증가
cnt++;
}
}System.out.println(cnt);
} //중복값 찾을 때 중요한 것은 중복값이 있다면 그 중복값이 마지막 순일때를 참고
}
O(N^2)으로 두번 반복해서 배열 하나하나 다 꺼내서 비교하는 방법이 아닌
인덱스 이용하여 O(N)으로 원하는것을 꺼내는 방식!
-문제 : 주어진 길이N의 int 배열 arr에서 합이 100인 서로 다른 위치의 두 원소가 존재하면 1을, 존재하지 않으면 0을 반환하는 함수 fun2(int arr[], int N)을 작성하라.
arr의 각 수는 0이상 100 이하고 N은 1000이하이다.
fun2({1, 52, 48}, 3) = 1,
fun2({50,42},2) = 0
int fun2(int arr[], int N){
int occur[101] = {};
for(int i = 0; i < N; i++){
if(occur[100-arr[i]] == 1)
return 1;
occur[arr[i]] = 1;
}
return 0;
}