Array(1, 2차원 배열)
1. 큰 수 출력하기
package com.codingtest.Algorithm.Chapter2;
import java.util.Scanner;
import java.util.stream.Stream;
public class 큰_수_출력하기 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int num = Integer.parseInt(in.nextLine());
String str = in.nextLine();
String answer = "";
int[] arr = Stream.of(str.split(" "))
.mapToInt(Integer::parseInt)
.toArray();
// arr [7, 3, 9, 5, 6, 12]
answer += arr[0];
for (int i = 1; i < arr.length; i++) {
if (arr[i] > arr[i - 1]) answer += " " + arr[i];
}
System.out.println(answer);
}
}
Ref
String to int array
string to int
2. 보이는 학생
package com.codingtest.Algorithm.Chapter2;
import java.util.Scanner;
import java.util.stream.Stream;
public class 보이는_학생 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int num = Integer.parseInt(in.nextLine());
String str = in.nextLine();
int[] arr = Stream.of(str.split(" "))
.mapToInt(Integer::parseInt)
.toArray();
int max = Integer.MIN_VALUE;
int answerCnt = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[i] > max) {
answerCnt++;
max = arr[i];
}
}
System.out.println(answerCnt);
}
}
3. 가위 바위 보
package com.codingtest.Algorithm.Chapter2;
import java.util.Scanner;
import java.util.stream.Stream;
public class 가위_바위_보 {
private static int GAME_INFO = 4;
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int cnt = Integer.parseInt(in.nextLine());
String infoA = in.nextLine();
String infoB = in.nextLine();
int[] arrA = Stream.of(infoA.split(" "))
.mapToInt(Integer::parseInt)
.toArray();
int[] arrB = Stream.of(infoB.split(" "))
.mapToInt(Integer::parseInt)
.toArray();
for (int i = 0; i < cnt; i++) {
String winner = "D";
// TODO : 경우의 수
// TODO : 1 < 2
// TODO : 2 < 3
// TODO : 1 > 3
// TODO : same number
int a = arrA[i];
int b = arrB[i];
if (a == b) winner = "D";
if (a == 1) {
if (b == 2) {
winner = "B";
}
if (b == 3) {
winner = "A";
}
}
if (a == 2) {
if (b == 1) {
winner = "A";
}
if (b == 3) {
winner = "B";
}
}
if (a == 3) {
if (b == 1) {
winner = "B";
}
if (b == 2) {
winner = "A";
}
}
System.out.println(winner);
}
}
}
4. 피보나치 수열
package com.codingtest.Algorithm.Chapter2;
import java.util.Scanner;
public class 피보나치_수열 {
private static Scanner in = new Scanner(System.in);
private static int num = Integer.parseInt(in.nextLine());
private static int[] arr = new int[num];
public static void main(String[] args) {
pvnc(0);
for (int i = 0; i < num; i++) {
if (i == num - 1) System.out.print(arr[i]);
else System.out.print(arr[i] + " ");
}
}
private static void pvnc(int idx) {
if (idx == num - 1) {
arr[idx] = arr[idx - 1] + arr[idx - 2];
return;
}
if (idx == 0 || idx == 1) {
arr[idx] = 1;
idx++;
pvnc(idx);
} else {
arr[idx] = arr[idx - 1] + arr[idx - 2];
idx++;
pvnc(idx);
}
}
}
5. 소수 (에라토스 체)
package com.codingtest.Algorithm.Chapter2;
import java.util.Scanner;
public class 소수_에라토스테네스체 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int num = in.nextInt();
int[] arr = new int[num + 1];
int cnt = 0;
for (int i = 2; i <= num; i++) {
if (arr[i] == 0) {
cnt++;
for (int j = i; j <= num; j += i) arr[j] = 1;
}
}
System.out.println(cnt);
}
private static boolean isPrimeNum(int prime) {
for (int i = 2; i < prime; i++) {
if (prime % i == 0) return false;
}
return true;
}
}
Ref
인텔리제이 라이브 템플릿
6. 뒤집은 소수
package com.codingtest.Algorithm.Chapter2.Array;
import java.util.Arrays;
import java.util.Scanner;
public class 뒤집은_소수 {
private static int[] arr;
private static long MAX_NUMBER = 100000;
private static int[] isPrimeArr = new int[100000 + 1];
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int num = Integer.parseInt(in.nextLine());
String str = in.nextLine();
StringBuffer sb = new StringBuffer(str);
sb = sb.reverse();
String answer = "";
arr = Arrays.stream(sb.toString().split(" "))
.mapToInt(Integer::parseInt)
.toArray();
isPrimeArr[0] = 1;
isPrimeArr[1] = 1;
makePrime();
for (int i = 0; i < arr.length; i++) {
if (isPrime(arr[i])) answer += arr[i] + " ";
}
int[] answerArr = Arrays.stream(answer.split(" "))
.mapToInt(Integer::parseInt)
.toArray();
for (int i = answerArr.length - 1; i >= 0; i--) {
if (i == 0) System.out.print(answerArr[i]);
else System.out.print(answerArr[i] + " ");
}
}
private static boolean isPrime(int num) {
if (isPrimeArr[num] == 0) return true;
return false;
}
private static void makePrime() {
for (int i = 2; i <= MAX_NUMBER; i++) {
if (isPrimeArr[i] == 0) {
for (int j = i + i; j <= MAX_NUMBER; j = j + i) {
isPrimeArr[j] = 1;
}
}
}
}
}
7. 점수 계산
package com.codingtest.Algorithm.Chapter2;
import java.util.Scanner;
public class 점수_계산 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int len = in.nextInt();
int[] arr = new int[len];
for (int i = 0; i < len; i++) {
arr[i] = in.nextInt();
}
System.out.println(calculateScore(arr));
}
private static int calculateScore(int[] answerSheet) {
int score = 0;
int seqCnt = 0;
for (int i = 0; i < answerSheet.length; i++) {
if (answerSheet[i] == 1) {
score += seqCnt + 1;
seqCnt++;
}
if (answerSheet[i] == 0) {
seqCnt = 0;
}
}
return score;
}
}
8. 등수 구하기
package com.codingtest.Algorithm.Chapter2;
import java.util.Arrays;
import java.util.Collections;
import java.util.Scanner;
import java.util.stream.IntStream;
public class 등수구하기 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int len = in.nextInt();
int[] arr = new int[len + 1];
arr[0] = Integer.MAX_VALUE;
for (int i = 1; i < len + 1; i++) {
arr[i] = in.nextInt();
}
calculateRank(arr);
}
private static void calculateRank(int[] scores) {
Integer[] temp = Arrays.stream(scores).boxed().toArray(Integer[]::new);
Arrays.sort(temp, Collections.reverseOrder());
for (int i = 1; i < scores.length; i++) {
int score = scores[i];
System.out.print(indexOf(score, temp) + " ");
}
}
private static int indexOf(int val, Integer[] arr) {
return IntStream.range(1, arr.length)
.filter(i -> arr[i] == val)
.findFirst()
.orElse(-1);
}
}
Ref
indexOf in array
int[] to Integer[]
9. 격자판 최대합
package com.codingtest.Algorithm.Chapter2;
import java.util.Arrays;
import java.util.Scanner;
public class 격자판_최대합 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int[][] arr = new int[n + 1][n + 1];
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
arr[i][j] = in.nextInt();
}
}
getColSum(arr, n);
getRowSum(arr, n);
getCrossSum(arr, n);
System.out.println(getMaxSum(arr, n));
}
private static void getColSum(int[][] arr, int n) {
for (int i = 1; i <= n; i++) {
int sum = 0;
for (int j = 1; j <= n; j++) {
sum += arr[j][i];
}
arr[0][i] = sum;
}
}
private static void getRowSum(int[][] arr, int n) {
for (int i = 1; i <= n; i++) {
int sum = 0;
for (int j = 1; j <= n; j++) {
sum += arr[i][j];
}
arr[i][0] = sum;
}
}
private static void getCrossSum(int[][] arr, int n) {
int sumLeft = 0;
int sumRight = 0;
for (int i = 1; i <= n; i++) {
sumLeft += arr[i][i];
}
for (int i = 1; i <= n; i++) {
sumRight += arr[i][n - i + 1];
}
arr[0][0] = Math.max(sumLeft, sumRight);
}
private static int getMaxSum(int[][] arr, int n) {
int max = 0;
for (int i = 0; i <= n; i++) {
int tempMax = Math.max(arr[0][i], arr[i][0]);
max = Math.max(tempMax, max);
}
return max;
}
}
Ref
자바 배열 최대값 최소값 구하는 방법
자바 Number - Math.max() 함수
Java는 Call by reference가 없다.
Last updated