20220903
한 번에 끝내는 Java/Spring 웹 개발 마스터
1) 잔돈 구하기 문제
package ch08;
public class GreedyTest {
public static void main(String[] args) {
int[] coins = {500, 100, 50, 10};
int price = 8370;
int count;
for (int i = 0; i< coins.length; i++) {
count = 0;
count += price / coins[i];
price = price % coins[i];
System.out.println( coins[i] + "짜리 동전 " + count + "가 필요합니다.");
}
}
}
- 여러가지 값을 가진 동전과 지폐를 이용해서 원하는 가격을 계산하는 문제이고, 제시되는 조건에 따라 문제를 푸는 문제이다.
- 이 문제에서는, 500원짜리 동전부터 사용하는 경우이므로 이를 이용해서 문제를 풀었다.
- Greedy(탐욕) 알고리즘 문제라고도 한다.
2) 경우의 수 구하기 문제
package ch09;
public class BruteForceSearch {
public static void main(String[] args) {
int[] bills = { 1, 2, 5, 10, 20, 50 };
int count = 0;
int money = 100;
int i0, i1, i2, i3, i4;
for (i0 = money; i0 >= 0; i0 -= bills[0]) {
for (i1 = i0; i1 >= 0; i1 -= bills[1]) {
for (i2 = i1; i2 >= 0; i2 -= bills[2]) {
for (i3 = i2; i3 >= 0; i3 -= bills[3]) {
for (i4 = i3; i4 >= 0; i4 -= bills[4])
if (i4 % bills[5] == 0)
count++;
}
}
}
}
System.out.println("지불 가능한 가지 수는: " + count + "가지 입니다.");
}
}
- 수학에서 배우는 수열을 이용해서 푸는 문제이다.
- for문을 지폐의 수에 맞게 구성해서, 각 지폐를 사용하는 경우의 수를 구현하면 쉽게 풀 수 있다.
3) 특정 범위의 숫자가 나열되어 있을 때, 각 숫자의 개수를 세는 문제
package ch10;
public class CountingTest {
public static void main(String[] args) {
int[] people = { 55, 40, 27, 99, 76, 81, 29, 31,33, 62};
int[] ages = new int[10];
for (int i=0; i<people.length; i++) {
int age = people[i];
if(age < 19)
ages[0]++;
else if(age < 40)
ages[1]++;
else if(age < 50)
ages[2]++;
else if(age < 60)
ages[3]++;
else if(age < 70)
ages[4]++;
else if(age < 80)
ages[5]++;
else if(age < 90)
ages[6]++;
else if(age < 100)
ages[7]++;
}
int number = people.length;
System.out.println(number + "명 중 20대는 " + ages[0] + "명 입니다.");
System.out.println(number + "명 중 30대는 " + ages[1] + "명 입니다.");
System.out.println(number + "명 중 40대는 " + ages[2] + "명 입니다.");
System.out.println(number + "명 중 50대는 " + ages[3] + "명 입니다.");
System.out.println(number + "명 중 60대는 " + ages[4] + "명 입니다.");
System.out.println(number + "명 중 70대는 " + ages[5] + "명 입니다.");
System.out.println(number + "명 중 80대는 " + ages[6] + "명 입니다.");
System.out.println(number + "명 중 90대는 " + ages[7] + "명 입니다.");
}
}
- 주어진 인원중 각 연령대의 인원이 몇명인지 파악하는 문제이다.
- 배열을 새로 만들어서 연령대를 구분해주었고, 새로운 배열에 포함되는 사람이 기존 people배열에 들어있는 사람이라는 식으로 구현해서 해결해주었다.
- 오늘로써, JAVA, 알고리즘, 자료구조에 대한 과정을 마무리하고, 이제 다음주부터 스프링을 배우게 된다.
- 스프링에 대한 지식이 거의 없어서, 다음주부터는 아마 어렵고 힘든 과정이 되겠지만, 훌륭한 백엔드 개발자가 되기 위해서 노력해보려고 한다.
- 나뿐만 아니라, 백엔드 개발자를 꿈꾸면서 공부하는 모든 사람들이 힘내서 다들 좋은 일만 있으면 좋겠다!!