[Algorithm] 자바 알고리즘 - 배열
자바 알고리즘 - 배열
배열 선언 초기화
int[] arr=new int[5]
> 0 0 0 0 0
// 값넣을때
arr[2]=2
>0 0 2 0 0
ArrayList<Integer> arr=new ArrayList<>();
-> 초기 크기 설정 안해도 arrayList 내부에서 스스로 설정 (10)
//값 넣을때
arr.add(2);
>2
최대값 구하기
1. Math.max 사용하기
int[] arr=new int[5]
> 0 0 0 0 0
// 값넣을때
arr[2]=2
>0 0 2 0 0
ArrayList<Integer> arr=new ArrayList<>();
-> 초기 크기 설정 안해도 arrayList 내부에서 스스로 설정 (10)
//값 넣을때
arr.add(2);
>2
-> 보통 단순하게 최대값을 구하지 않기 때문에 난 잘 안이용함
2. max 변수 이용
최대값을 가진 인덱스나 앞과 뒤를 비교해서 누가 큰지 구하는 등 문제에서는 max 변수를 이용해 구한다.
int max = list[0];
for (int i = 1; i < n; i++) {
if (list[i] > max) {
max = list[i];
answer++;
}
}
배열안에서 하나의 값 가져오기
1. ArrayList 의 경우 get함수
//피보나치
ArrayList<Integer> arr = new ArrayList<>();
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
arr.add(1);
arr.add(1);
for (int i = 2; i < n; i++) {
arr.add(arr.get(i - 2) + arr.get(i - 1));
}
2. String 배열의 경우 charAt
3. list의 경우 arr[i]
소수 구하기(에라토스테네스 체)
import java.util.*;
public class 소수 {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int result = 0;
int[] list = new int[n + 1];
for (int i = 2; i <= n; i++) {
// 자기 자신으로만 나눠지는 수 2,3 ....
if (list[i] == 0) {
result++;//소수++
//범위 전까지 배수 찾음
for (int j = i; j <= n; j = j + i) {
list[j] = 1;
}
}
}
System.out.print(result);
sc.close();
}
}
// 특정 수 가 소수인지 아닌지 판별
public static boolean isPrime(int num) {
if (num == 1)
return false;
for (int i = 2; i < num; i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
세로 가로 대각선 모두 더하기
//가로
for (int i = 0; i < n; i++) {
int max = 0;
for (int j = 0; j < n; j++) {
arr[i][j] = sc.nextInt();
max += arr[i][j];
}
answer = Math.max(max, answer);
}
//세로
for (int i = 0; i < n; i++) {
int max = 0;
for (int j = 0; j < n; j++) {
max += arr[j][i];
}
answer = Math.max(answer, max);
}
//대각선
int max1 = 0;
int max2 = 0;
for (int i = 0; i < n; i++) {
max1 += arr[i][i];
max2 += arr[i][n - i - 1];
}
2차원 배열에서 동서남북 이동
int[] dx = { 1, 0, -1, 0 };
int[] dy = { 0, -1, 0, 1 };
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
boolean flag = true;
for (int d = 0; d < 4; d++) {
int nx = i + dx[d];
int ny = j + dy[d];
if (nx >= 0 && nx < n && ny >= 0 && ny < n && arr[nx][ny] >= arr[i][j]) {
flag = false;
break;
}
}
if (flag) {
answer++;
}
}
}
Author And Source
이 문제에 관하여([Algorithm] 자바 알고리즘 - 배열), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jifrozen/Algorithm-자바-알고리즘-배열저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)