📖 [예제 3-1] 거스름돈
💡내가 짠 코드
public int solution(int N) {
int answer = 0;
while (N - 500 >= 0) {
N -= 500;
answer++;
}
while (N - 100 >= 0) {
N -= 100;
answer++;
}
while (N - 50 >= 0) {
N -= 50;
answer++;
}
while (N - 10 >= 0) {
N -= 10;
answer++;
}
return answer;
}
✅ 답안 본 후 다시 짠 코드
public int solution(int N) {
int answer = 0;
int[] coins = { 500, 100, 50, 10 };
for (int coin : coins) {
answer += (N / coin);
N %= coin;
}
return answer;
}
📖 [예제 3-2] 큰 수의 법칙
💡내가 짠 코드
import java.util.*;
import java.util.stream.Collectors;
class Solution {
public static void main(String[] args) {
// 문제 입력
Scanner sc = new Scanner(System.in);
String s1 = sc.nextLine();
String s2 = sc.nextLine();
String[] f=s1.split(" ");
int N=Integer.parseInt(f[0]),M=Integer.parseInt(f[1]),K=Integer.parseInt(f[2]);
String[] f2 = s2.split(" ");
int[] su = new int[f2.length];
int i = 0;
for (String d : f2) {
su[i] = Integer.parseInt(d);
i++;
}
// 풀이
int answer = 0;
Arrays.sort(su);
while (M > 0) {
if (su[su.length - 1] != su[su.length - 2]) {
answer += su[su.length - 1] * K;
answer += su[su.length - 2];
M -= K + 1;
} else {
answer += su[su.length - 1] * M;
break;
}
}
System.out.println(answer);
}
}
✅ 답안 본 후 다시 짠 코드
import java.util.*;
import java.util.stream.Collectors;
class Solution {
public static void main(String[] args) {
// 문제 입력
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int M = sc.nextInt();
int K = sc.nextInt();
int[] arr = new int[N];
for (int i = 0; i < N; i++) {
arr[i] = sc.nextInt();
}
// 풀이
int answer = 0;
Arrays.sort(arr);
// cnt: 가장 큰 수가 반복되는 수
int cnt = M / (K + 1) * K;
cnt += M % (K + 1);
answer += cnt * arr[arr.length - 1];
answer += (M - cnt) * arr[arr.length - 2];
System.out.println(answer);
}
}
키보드 입력 다 까묵음
📖 [예제 3-3] 숫자 카드 게임
💡내가 짠 코드
import java.util.*;
import java.util.stream.Collectors;
class Solution {
public static void main(String[] args) {
// 문제 입력
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int M = sc.nextInt();
int[][] card = new int[N][M];
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
card[i][j] = sc.nextInt();
}
}
// 풀이
// 각 행의 최솟값들을 min에 저장하여 min의 최댓값 출력
int[] min = new int[N];
for (int i = 0; i < N; i++) {
Arrays.sort(card[i]);
min[i] = card[i][0];
}
Arrays.sort(min);
System.out.println(min[min.length - 1]);
}
}
✅ 답안 본 후 다시 짠 코드
import java.util.*;
import java.util.stream.Collectors;
class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int M = sc.nextInt();
int result = 0;
for (int i = 0; i < N; i++) {
int min_value = 10001;
// 그 행에서의 최솟값 찾아서 min_value에 저장
for (int j = 0; j < M; j++) {
int x = sc.nextInt();
min_value = Math.min(min_value, x);
}
// 최솟값 중 최댓값 찾아서 result에 저장
result = Math.max(result, min_value);
}
System.out.println(result);
}
}
📖 [예제 3-4]
💡내가 짠 코드
import java.util.*;
class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int K = sc.nextInt();
int result = 0;
// K로 나누어 떨어지면 무조건 2번 연산 수행
while (N != 1) {
if (N % K == 0) {
N /= K;
} else {
N -= 1;
}
result++;
}
System.out.println(result);
}
}
'알고리즘' 카테고리의 다른 글
[백준] 20006. 랭킹전 대기열 (java) (1) | 2023.06.05 |
---|---|
[이코테] chapter 04. 구현 (java) (0) | 2023.06.04 |
[2021 KAKAO BLIND RECRUITMENT] 합승 택시 요금 java (0) | 2023.05.23 |
[2021 KAKAO BLIND RECRUITMENT] 메뉴 리뉴얼.java (0) | 2023.05.23 |
[2019 KAKAO BLIND RECRUITMENT] 길 찾기 게임.java (1) | 2023.05.19 |