scoreList[] = {31, 76, 54, 2, 100, 23}; 위 데이터는 학생 6명의 점수이다. 위 데이터를 그래프로 표현해볼려고한다. 표시는 10의 자리숫자로 표현해서 개수만큼 * 로 출력할려고한다. 전에는 왼쪽에서 오른쪽으로 표현했지만 이번엔 아래서 위로 표현할려고한다. --------------------------------- * * * * * * * * * * * * * * * * * * * * * * * * * * * 31 76 54 2 100 23 ---------------------------------
int scoreList[] = { 31, 76, 54, 2, 100, 23 };
// 1. 맥스값 찾기
int max = 0;
for (int i = 0; i < scoreList.length; i++) {
if (max < scoreList[i]) {
max = scoreList[i];
}
}
int loop = max/10;
int temp = 0;
int count = loop;
for (int i = 0; i < loop; i++) {
for (int j = 0; j <scoreList.length; j++) {
temp = scoreList[j];
temp = temp/10;
if (temp >= count) {
System.out.print(" * ");
} else {
System.out.print(" ");
}
}
count--;
System.out.println("\n");
}
System.out.println(Arrays.toString(scoreList));
y축 최대 반복수를 구한 후에 scoreList 배열의 각 값들의 몫을 구해 *을 출력해줬다.
아래는 선생님의 답안코드
int scoreList[] = { 31, 76, 54, 2, 100, 23 };
int[][] temp = new int[10][scoreList.length];
int y = temp.length;
int x = temp[0].length;
System.out.println(y);
for (int i = 0; i < x; i++) {
int score = scoreList[i] / 10; // 3;
for (int j = 0; j < y - score; j++) {
temp[j][i] = 1;
System.out.println("y - score : "+(y-score)+ " "+Arrays.toString(temp[j]));
}
System.out.println();
}
System.out.println();
for (int i = 0; i < temp.length; i++) {
System.out.println(Arrays.toString(temp[i]));
}
for (int i = 0; i < temp.length; i++) {
for (int j = 0; j < temp[i].length; j++) {
if (temp[i][j] == 1) {
System.out.print(" ");
} else {
System.out.print("* ");
}
// System.out.print(temp[i][j]);
}
System.out.println();
}
temp배열에 그래프 출력에에 해당하는 부분을 1로 넣어주고 출력했다. 반복횟수는 많지만 눈으로 보이는 방법.
아래와 같은 데이터일때 도서 연체여부를 확인
int rentalPeriod = 70;
int [] rentalDay = {2020 , 12, 29};
int [] totay = {2021, 3, 10};
int rentalPeriod = 70;
int [] rentalDay = {2020 , 12, 29};
int [] today = {2021, 3, 10};
int monthList[] = {31, 28, 31, 30, 31, 31, 30,
31 , 30 , 31 , 30 , 31};
int rentalSum = rentalDay[0] * 365;
int todaySum = today[0] * 365;
System.out.printf("rental %d / today %d\n", rentalSum, todaySum);
for (int i = 0; i < rentalDay[1] -1; i++) {
rentalSum += monthList[i];
}
for (int i = 0; i < today[1]-1; i++) {
todaySum += monthList[i];
}
System.out.printf("rental %d / today %d\n", rentalSum, todaySum);
rentalSum += rentalDay[2]+rentalPeriod;
todaySum += today[2];
System.out.printf("rental %d / today %d\n", rentalSum, todaySum);
int result = todaySum - rentalSum;
System.out.println(result);
if (result > 0) {
System.out.println("연체");
} else {
System.out.println("연체가 아님");
}
년,월을 포함한 전체 일수를 구한 다음 대여일+대여기간과 오늘 날짜를 비교
사다리 게임
1. 인덱스 0~4를 하나선택한다. (가로개수가 5개) 맨위 에서 부터 내려간다.
2. 숫자 0 을 만나면 그냥 아래로 내려간다.
3. 숫자 1 을 만나면 오른쪽으로 이동후 내려간다.
4. 숫자 2 를 만나면 완쪽으로 이동후 내려간다.
5. 오늘의 메뉴 출력
Scanner sc = new Scanner(System.in);
String menu[] = {"떡라면" , "돈까스" ,"짜장면" , "쫄면" , "된장찌개"};
int ladder[][]= {
{0,0,0,0,0},
{1,2,0,1,2},
{0,1,2,0,0},
{0,0,1,2,0},
{1,2,0,1,2},
{0,1,2,0,0},
{0,1,2,0,0},
{0,0,1,2,0},
{0,0,0,0,0}
};
System.out.print("사다리 픽 ");
int num = sc.nextInt();
System.out.println(ladder.length-1);
int row = 1; // row
int point = num-1; // col
while (true) {
if (row == ladder.length-1) {
System.out.println(menu[point]);
break;
}
if (ladder[row][point] == 0) {
System.out.println("0 - 아래로 한칸");
} else if (ladder[row][point] == 1) {
System.out.println("1 - 오른쪽으로 이동 후 한칸");
point++;
} else if (ladder[row][point] == 2) {
System.out.println("2 - 왼쪽으로 이동 후 한칸");
point--;
}
row++;
}
이차원 배열이라 이중 반복문을 써야할거 같았지만 실상은 아니었던 문제