πŸ“Œ 이차원 λ°°μ—΄λ‘œ μ„±μ μ²˜λ¦¬ ν”„λ‘œκ·Έλž¨ λ§Œλ“€κΈ°


πŸ“μ˜€λŠ˜μ˜ 문제

학생 수λ₯Ό μž…λ ₯λ°›μ•„ ν•œ ν•™κΈ‰μ˜ 성적을 μ²˜λ¦¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.



πŸ“μ‘°κ±΄

  1. 학생별 점수 3개λ₯Ό μž…λ ₯λ°›μ•„ 2차원 배열에 μ €μž₯ν•œλ‹€.
  2. 각 학생은 μ‹œν—˜μ„ 3번 λ³Έ λ‹€μŒ κ·Έ 쀑 μ΅œκ³ μ μ„ 가지고 평점을 κ³„μ‚°ν•œλ‹€.
  3. 졜고점이 90점 이상이면 5, 80점 이상이면 4, 70점 이상이면 3, 60점 이상이면 2, κ·Έ λ‚˜λ¨Έμ§€λŠ” 1둜 ν•œλ‹€.
  4. ν•œ ν•™κΈ‰μ˜ μΈμ›μˆ˜(ν•™μƒμˆ˜)λŠ” μž…λ ₯을 λ°›λŠ”λ‹€.
  5. 100보닀 ν¬κ±°λ‚˜ 0보닀 μž‘μ€ 수 μž…λ ₯ν•˜λ©΄ β€˜λ‹€μ‹œ μž…λ ₯ν•˜μ„Έμš”==> ’ λ©”μ‹œμ§€ 좜λ ₯!


πŸ“ μ‹€ν–‰ν™”λ©΄


πŸ‘©πŸ»β€πŸ’»λ³Έκ²©μ μΈ μ½”λ”©

import java.util.Scanner;

public class UpGrade {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);

		int Max = 0; // 졜고점
		int count = 0; // 순번
		int grade = 0; // 평점
		String list[] = {"순번","점수1","점수2","점수3","졜고점","평점"};

		System.out.print("ν•™μƒμˆ˜ μž…λ ₯ : ");
		int Scon = scan.nextInt(); // ν•™μƒμˆ˜

		int score[][] = new int[Scon][3];

		for (int i = 0; i < Scon; i++) {
			for (int j = 0; j < score[i].length; j++) {

				System.out.print("점수" + (j + 1) + "μž…λ ₯ : ");

				score[i][j] = scan.nextInt();

				if (score[i][j] < 0 || score[i][j] > 100) {
					System.out.print("λ‹€μ‹œ μž…λ ₯ν•˜μ„Έμš”==>");
					System.out.print("A점수" + (j + 1) + "μž…λ ₯ : ");
					score[i][j] = scan.nextInt();
				}
			}
			System.out.println("");

		}

		System.out.println("============================================");
		for(int i=0; i<list.length; i++){
			System.out.print(list[i]+"\t");
		}
		System.out.println("");
		System.out.println("============================================");

		for (int i = 0; i < Scon; i++) {
			count++;
			System.out.print(count);
			for (int j = 0; j < 3; j++) {

				System.out.printf("%8d", score[i][j]);

				if (Max < score[i][j]) {
					Max = score[i][j];
				}
			}

			System.out.printf("%10d", Max);
			grade = Max / 10;
			switch (grade) {

			case 10, 9:
				System.out.printf("\t  5");
				break;

			case 8:
				System.out.println("\t  4");
				break;

			case 7:
				System.out.println("\t  3");
				break;

			case 6:
				System.out.println("\t  2");
				break;

			default:
				System.out.println("\t  1");
				break;
			}
			System.out.println("");
		}
		System.out.println("");
	}
}

전체적인 μ½”λ“œλŠ” μ΄λŸ¬ν•˜κ²Œ μ§œλ΄€λ‹€.

πŸ”Žμ‘°κ±΄μ„ ν•˜λ‚˜ν•˜λ‚˜ λœ―μ–΄λ³΄λ©΄μ„œ μ„€λͺ… κ°€λ³΄μžκ³ ~


πŸš€μ„ΈλΆ€μ μœΌλ‘œ μ½”λ“œλ₯Ό λΆ„μ„ν•΄λ³΄μž!


πŸ”Žμ‘°κ±΄1. 학생별 점수 3개λ₯Ό μž…λ ₯λ°›μ•„ 2차원 배열에 μ €μž₯ν•œλ‹€.

System.out.print("ν•™μƒμˆ˜ μž…λ ₯ : ");
		int Scon = scan.nextInt(); // ν•™μƒμˆ˜

		int score[][] = new int[Scon][3];

πŸͺ„λ¨Όμ € μ»¨νŒŒμΌλŸ¬μ— μ‚¬μš©μžκ°€ μž…λ ₯ν•  수 μžˆλ„λ‘ λ©”μ‹œμ§€λ₯Ό μ£Όκ³  ν•™μƒμˆ˜λ₯Ό μž…λ ₯λ°›λŠ”λ‹€.
그리고 λ‚˜μ„œ scoreλ₯Ό 이차원 λ°°μ—΄λ‘œ μ„ μ–Έν•˜μ—¬ ν–‰μ—λŠ” ν•™μƒλ“€μ˜ 수λ₯Ό μ—΄μ—λŠ” 점수λ₯Ό 3개 μž…λ ₯λ°›μœΌλΌλŠ” 쑰건에 λ§žμΆ”μ–΄ 3으둜 μž…λ ₯ν•œλ‹€.



πŸ”Žμ‘°κ±΄2. 각 학생은 μ‹œν—˜μ„ 3번 λ³Έ λ‹€μŒ κ·Έ 쀑 μ΅œκ³ μ μ„ 가지고 평점을 κ³„μ‚°ν•œλ‹€.

for (int i = 0; i < Scon; i++) {
			count++;
			System.out.print(count);
			for (int j = 0; j < 3; j++) {

				System.out.printf("%8d", score[i][j]);

				if (Max < score[i][j]) {
					Max = score[i][j];
				}
			}

			System.out.printf("%10d", Max);

πŸͺ„평점을 κ΅¬ν•˜κΈ° μœ„ν•΄μ„œλŠ” MAX값이 ν•„μš”ν•˜λ―€λ‘œ MAX값을 κ΅¬ν˜„ν•΄λ³΄μž

  • MAX값을 κ΅¬ν˜„ν•˜κΈ° μœ„ν•΄ 이쀑 for문을 μ‚¬μš©ν•˜μ˜€κ³  첫번째 for문은 ν•™μƒλ“€μ˜ 수만큼 λ‘λ²ˆμ§Έ for문은 μ‹œν—˜μ„ λ³Έ 만큼 ν•˜μ—¬ 이쀑 for문을 λŒλ €μ€€λ‹€.

  • μ΄λ ‡κ²Œ ν–ˆμ„ λ•Œ μž…λ ₯받은 μ‹œν—˜μ μˆ˜λ“€μ„ MAXκ°’κ³Ό λΉ„κ΅ν•œλ‹€.

  • λ§Œμ•½μ— 이번 μˆ˜λ³΄λ‹€ λ‹€μŒ μˆ˜κ°€ 크게되면 MAXκ°’ μ•ˆμ—λŠ” λ‹€μŒ μˆ˜κ°€ λ“€μ–΄κ°€κ²Œ λœλ‹€. ν•˜μ§€λ§Œ 그렇지 μ•Šκ²Œ 되면 ν•΄λ‹Ή μˆ˜κ°€ 계속 MAXκ°’μ•ˆμ— λ‚¨μ•„μžˆλ„λ‘ ν•œλ‹€.

  • 그리고 MAX값을 좜λ ₯ν•˜κ²Œ 되면 κ°€μž₯ 큰 κ°’λ§Œ λ‚¨κ²Œ λœλ‹€.



πŸ”Ž 쑰건3. 졜고점이 90점 이상이면 5, 80점 이상이면 4, 70점 이상이면 3, 60점 이상이면 2, κ·Έ λ‚˜λ¨Έμ§€λŠ” 1둜 ν•œλ‹€. (쑰건3+쑰건2)

grade = Max / 10;
			switch (grade) {

			case 10, 9:
				System.out.printf("\t  5");
				break;

			case 8:
				System.out.println("\t  4");
				break;

			case 7:
				System.out.println("\t  3");
				break;

			case 6:
				System.out.println("\t  2");
				break;

			default:
				System.out.println("\t  1");
				break;
			}
			System.out.println("");
		}
		System.out.println("");

πŸͺ„MAX값을 κ΅¬ν–ˆμœΌλ©΄ ν•΄λ‹Ή MAX값을 가지고 평점을 κ΅¬ν•΄λ³΄μž.

  • 평점을 κ΅¬ν•˜λŠ”λ°μ—λ„ 쑰건이 맀우 λ§Žλ‹€. μ²˜μŒμ— 이런 λ¬Έμ œλŠ” 무쑰건 ifλ¬Έκ³Ό else ifλ¬Έλ“€λ‘œλ§Œ λ‚˜νƒ€λ‚΄λ €κ³  ν•˜μ˜€μœΌλ‚˜, μ΄λŸ°λ©΄λ“€μ— μžˆμ–΄μ„œλŠ” switch~case문이 쑰금 더 효율적 인 것 κ°™λ‹€λŠ” 개인적인 생각이 λ“ λ‹€.

  • 일단 MAX값을 10으둜 λ‚˜λˆ„μ–΄μ„œ λ‚˜λˆˆ 값이 10 ν˜Ήμ€ 9이면 평점을 10으둜 8이면 4둜 ν•΄μ„œ ....
    λ§ˆμ§€λ§‰ default 값은 1점으둜 평점을 λ‚˜νƒ€λ‚΄μ˜€λ‹€.


πŸ’‘μ΄λ ‡κ²Œ ν•˜μ—¬ ν‰μ μΆœλ ₯ μ™„λ£Œ!


πŸ”Ž 쑰건5. 100보닀 ν¬κ±°λ‚˜ 0보닀 μž‘μ€ 수 μž…λ ₯ν•˜λ©΄ β€˜λ‹€μ‹œ μž…λ ₯ν•˜μ„Έμš”==> ’ λ©”μ‹œμ§€ 좜λ ₯!

쑰건4λŠ” λ„ˆλ¬΄ μ‰¬μš°λ‹ˆκΉŒ νŒ¨μŠ€πŸš€


for (int i = 0; i < Scon; i++) {
			for (int j = 0; j < score[i].length; j++) {

				System.out.print("점수" + (j + 1) + "μž…λ ₯ : ");

				score[i][j] = scan.nextInt();

				if (score[i][j] < 0 || score[i][j] > 100) {
					System.out.print("λ‹€μ‹œ μž…λ ₯ν•˜μ„Έμš”==>");
					System.out.print("A점수" + (j + 1) + "μž…λ ₯ : ");
					score[i][j] = scan.nextInt();
				}
			}
			System.out.println("");
		}

πŸͺ„for문을 μ‚¬μš©ν•˜μ—¬ 행은 ν•™μƒμˆ˜λ§ŒνΌ 열은 score[i]의 길이만큼 for문을 λŒλ €μ€€λ‹€.

  • 쑰건에 맞기 μœ„ν•΄ if문을 μ‚¬μš©ν•˜μ—¬ μž…λ ₯ν•œ μ μˆ˜κ°€ 100보닀 ν¬κ²Œλ˜κ±°λ‚˜, 0보닀 μž‘κ²Œλ˜λ©΄ "λ‹€μ‹œ μž…λ ₯ν•΄ μ£Όμ„Έμš”==>"λΌλŠ” λ©”μ‹œμ§€λ₯Ό 남기고 λ‹€μ‹œ μ‚¬μš©μžκ°€ 점수λ₯Ό μž…λ ₯ν•  수 μžˆλ„λ‘ κ΅¬ν˜„ν•˜μ˜€λ‹€.

✨느꼈던 점

πŸ‘©πŸ»β€πŸ’»κ·Έ 전에 μ½”λ”©ν•  λ•ŒλŠ” 일단 νš¨μœ¨μ„±κ³Ό μ½”λ“œμ˜ 깨끗함 등을 κ³ λ €ν•˜μ§€ μ•Šκ³  μ½”λ“œλ₯Ό μž‘μ„±ν•˜μ˜€λ‹€λ©΄ μ§€κΈˆμ€ 일단 첫번째 μ½”λ“œλŠ” λΉ„νš¨μœ¨μ μ΄λΌλ„ 싀행이 λœλ‹€λ©΄ κ·Έ μ½”λ“œλ₯Ό μ–΄λ–»κ²Œ ν•˜λ©΄ 더 짧고 κ°„κ²°ν•˜κ²Œ 쀄일 수 μžˆλŠ”μ§€, 그리고 효율적으둜 λ°”κΏ€ 수 μžˆμ„κΉŒλ₯Ό κ³ λ―Όν•˜λŠ” λ‚˜λ₯Ό 보고 많이 μ„±μž₯ν–ˆκ³  더 많이 μ„±μž₯ν•΄μ•Όκ² λ‹€κ³  λŠκΌˆλ‹€.

profile
fire-irror

0개의 λŒ“κΈ€