Java 초급 (46)

반응형

 

문제

 

package kr.or.ddit.homework;

import java.util.Random;
import java.util.Scanner;

public class HomeWork7 {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		HomeWork7 obj = new HomeWork7();
		obj.process();
	}
	
	public void process() {
		String[] words = { "abort", "absurd", "bankrupt", "bishop", "caption", "cater" };
		int ran = new Random().nextInt(words.length);
		
		String select = words[ran];
		
		char[] ch = select.toCharArray();
		
		/*
		 *  문자 섞기 
		 */
		for(int i=0; i< 10000000; i++) {
			int ran2 = new Random().nextInt(ch.length);
			char temp = ch[0];
			ch[0] = ch[ran2];
			ch[ran2] = temp;;
		}
	
		while(true) {
			/*
			 *   ch 배열 출력하기 
			 *   
			 */
			
			// 정답 맞추기.
		}
		
	}
}

 

 

 

정답

 

package kr.or.ddit.homework;

import java.util.Random;
import java.util.Scanner;

public class HomeWork7 {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		HomeWork7 obj = new HomeWork7();
		obj.process();
	}
	
	public void process() {
		/*
		 * 6개의 단어가 제공되며
		 * 이중 임의의 단어가 선택된다.
		 * 
		 * 사용자는 이를 보고 원래의 단어를 입력한다.
		 * 사용자가 단어를 맞출때까지 반복하며 단어를 맞추었을때 시도 횟수 출력
		 */
		String[] words = { "abort", "absurd", "bankrupt", "bishop", "caption", "cater" };
		int ran = new Random().nextInt(words.length);
		
		String select = words[ran];
		
		/*
		 * String -> char 배열로 바꿔줌
		 * toCharArray
		 */
		char[] ch = select.toCharArray();
		
		/*
		 *  문자 섞기 
		 */
		for(int i=0; i< 10000000; i++) {
			int ran2 = new Random().nextInt(ch.length);
			char temp = ch[0];
			ch[0] = ch[ran2];
			ch[ran2] = temp;;
		}
	
		
		int cnt = 0;
		
		while(true) {
			/*
			 *   ch 배열 출력하기 
			 *   정답 : abort
			 *   섞인 단어 : bator
			 *   
			 */
			System.out.print("섞인 단어 : ");
			for (char c : ch) {
				System.out.print(c);
			}
			System.out.println();
			
			// 정답 맞추기.
			System.out.print("정답 : ");
			String answer = sc.nextLine();
			
			cnt++;
			System.out.println(cnt + "번째 시도입니다.");

			if(answer.equals(select)) {
				System.out.println("정답입니다.");
				break;
			}
			System.out.println("틀렸습니다.\n");
		}
	}
}

 

결과 화면

 

 

반응형
반응형

 

2차원 배열

 

: 1차원 배열을 이용하여 더 많은 데이터를 삽입하기 위해 만들어진 배열을 말한다.

1차원 배열을 묶어 놓았기에 2차원의 개념이다.

i개의 행과 j개의 열을 가진 테이블이라고 생각하는 것이 이해하기 쉽다.

 

2차원 배열

 

사용법은 아래와 같다.

 

타입[][] 배열명 = new 타입[i][j];

 

package kr.or.ddit.study05.sec02;

import java.util.Scanner;

public class ArrayExample02 {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		ArrayExample02 obj = new ArrayExample02();
		obj.method1();
	}
	
	public void method1() {
		// 배열을 만들어서
		// 국어 영어 수학 점수를 저장해보시오.
		int[] s1 = {90, 70, 69};
		int[] s2 = {77, 65, 82};
		int[] s3 = {57, 90, 43};
		int[] s4 = {63, 49, 76};
		int[] s5 = {54, 77, 60};
		
		// 이차원 배열
		// 1차원 배열을 담고 있는 배열
		// int[2차원 배열 수][1차원 배열 수]
		int[][] students = new int[5][3];
		students[0] = s1;
		students[1] = s2;
		students[2] = s3;
		students[3] = s4;
		students[4] = s5;
		
		// 학생 1의 국어 점수.
		// s1[0]
		int s1_kor = students[0][0];
		
		// 학생 3의 수학 점수.
		int s3_meth = students[2][2];
		
		// 학생 4의 영어 점수.
		int s4_eng = students[3][1];
		
		// 학생 전체의 국어 점수 합.
		int kor_sum = 0;
		for (int i = 0; i < students.length; i++) {
			kor_sum += students[i][0];
		}
		System.out.println("학생 전체의 국어 점수 합은 " + kor_sum);
	}
}

 

결과 화면1

 

 

package kr.or.ddit.study05.sec02;

import java.util.Scanner;

public class ArrayExample02 {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		ArrayExample02 obj = new ArrayExample02();
		obj.method2();
	}
	
	public void method2() {
		int[][] student = { {90, 70, 60},
							{77, 65, 82},
							{57, 90, 43},
							{63, 49, 76}
						  };
		
		// 첫번째 학생 배열 꺼내오기.
		// 2차원 배열의 값을 1차원 배열로 넣을 경우
		int[] s1 = student[0];
		
		// 첫번째 학생 국어 점수
		int s1_kor = student[0][0];
		
		// 첫번째 학생 점수 총합구하기.
		int s1_sum = 0;
		for (int i = 0; i < student[0].length; i++) {
			s1_sum += student[0][i];
		}
//		for(int i=0; i<s1.length; i++) {
//			s1_sum += s1[i];
//		}
		System.out.println("첫번째 학생의 점수 총합 : " + s1_sum);
		
		// 전체 영어 점수 구하기
		int eng_sum = 0;
		for (int i = 0; i < student.length; i++) {
			eng_sum += student[i][1];
			System.out.println(student[i]); // 주소 값 총 다섯개가 각각 출력된다.
			// 이차원 배열은 각각의 주소값을 저장한다.
		}
		System.out.println("전체 학생의 영어 점수 총합 : " + eng_sum);
	}
}

 

결과 화면2

 

 

package kr.or.ddit.study05.sec02;

import java.util.Scanner;

public class ArrayExample02 {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		ArrayExample02 obj = new ArrayExample02();
		obj.method3();
	}
    
	public void method3() {
		// 1차원 배열 건너 뛰기
		int[][] arr = new int[3][];
		arr[0] = new int[3];
		arr[1] = new int[4];
		arr[2] = new int[5];
	}
}

 

 

package kr.or.ddit.study05.sec02;

import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;

public class ArrayExample03 {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		ArrayExample03 obj = new ArrayExample03();
		obj.method5();
	}
	
	public void method5() {
		// 5명의 3과목 성적과 이름을 배열에 저장하고
		// 총점과 평균과 등수를 구하여 출력 하시오.
		
		String[] name = {"김영훈", "박채연", "최진호", "김미선", "서혜진"};
		int[][] score = { {85, 72, 81, 0, 0, 1},
						  {67, 90, 87, 0, 0, 1},
						  {77, 79, 94, 0, 0, 1},
						  {80, 90, 52, 0, 0, 1},
						  {97, 65, 77, 0, 0, 1},
						};
		/*
		 * 총점 평균 구하기
		 */
		for(int i=0; i<score.length; i++) {
			for(int j=0; j<3; j++) {
				score[i][3] += score[i][j];
			}
			score[i][4] = score[i][3]/3;
		}
		
//		for(int i=0; i<score.length; i++) {
//			score[i][3] = score[i][0] + score[i][1] + score[i][2];
//			score[i][4] = score[i][3]/3;
//		}
		
		/*
		 * 등수 구하기
		 */

		// i = 본인
		for(int i=0; i<score.length; i++) {
			// 다른사람
			for(int j=0; j<score.length; j++) {
				if(score[i][3] < score[j][3]) {
					score[i][5]++;
				}
			}
		}
		
		System.out.println("이름\t국어\t영어\t수학\t총점\t평균\t등수");
		System.out.println("-------------------------------------------------------");
		for(int i=0; i<score.length; i++) {
			System.out.print(name[i] + "\t");
			for(int j=0; j<score[i].length; j++) {
				System.out.print(score[i][j] + "\t");
			}
			System.out.println();
		}
		System.out.println("-------------------------------------------------------");
		
		
	}
}

 

결과 화면4

 

 

반응형
반응형

 

문제

 

package kr.or.ddit.homework;

import java.util.Scanner;

public class HomeWork6 {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		HomeWork6 obj = new HomeWork6();
		obj.method1();
		obj.method2();
		obj.method3();
		obj.method4();
		obj.method5();
	} 

	private void method1() {
		/*
		 * 스캐너를 통해 숫자를 입력 받고 해당 숫자에 해당하는 구구단을 출력하시오
		 * 
		 *  3*1 =3	
			3*2 =6	
			3*3 =9	
			3*4 =12
			3*5 =15
			3*6 =18
			3*7 =21
			3*8 =24
			3*9 =27
		 */
		System.out.println("숫자를 입력하세요.");
		int num = sc.nextInt();
		for (int i = num) {
			for (int j = 1; j <=9 ; j++) {
				System.out.println(num*j);
			}
		}
	}
	
	private void method2() {
		/*
		 *  for 문 2개를 이용하여 구구단 전체를 출력하시오.
		 *  아래가 아니라 옆임
		 * 
		    2*1 =2	3*1 =3	..............	
			2*2 =4	3*2 =6	4*2 =8	5*2 =10	6*2 =12	7*2 =14	8*2 =16	9*2 =18	
			2*3 =6	3*3 =9	4*3 =12	5*3 =15	6*3 =18	7*3 =21	8*3 =24	9*3 =27	
			2*4 =8	3*4 =12	4*4 =16	5*4 =20	6*4 =24	7*4 =28	8*4 =32	9*4 =36	
			2*5 =10	3*5 =15	4*5 =20	5*5 =25	6*5 =30	7*5 =35	8*5 =40	9*5 =45	
			2*6 =12	3*6 =18	4*6 =24	5*6 =30	6*6 =36	7*6 =42	8*6 =48	9*6 =54	
			2*7 =14	3*7 =21	4*7 =28	5*7 =35	6*7 =42	7*7 =49	8*7 =56	9*7 =63	
			2*8 =16	3*8 =24	4*8 =32	5*8 =40	6*8 =48	7*8 =56	8*8 =64	9*8 =72	
			2*9 =18	3*9 =27	4*9 =36	5*9 =45	6*9 =54	7*9 =63	8*9 =72	9*9 =81	
		 */
		
	
	}
	
	private void method3() {
		/*
		 *  for 문 2개를 이용하여 구구단 전체를 출력하시오.
		 *  스캐너를 통해 숫자를 입력 받고 해당 숫자에 해당하는 구구단은 <제외>. 
		 *  컨티뉴
		 *  ex ) 입력 3 
   			2*1 =2	..............	
			2*2 =4	4*2 =8	5*2 =10	6*2 =12	7*2 =14	8*2 =16	9*2 =18	
			2*3 =6	4*3 =12	5*3 =15	6*3 =18	7*3 =21	8*3 =24	9*3 =27	
			2*4 =8	4*4 =16	5*4 =20	6*4 =24	7*4 =28	8*4 =32	9*4 =36	
			2*5 =10	4*5 =20	5*5 =25	6*5 =30	7*5 =35	8*5 =40	9*5 =45	
			2*6 =12	4*6 =24	5*6 =30	6*6 =36	7*6 =42	8*6 =48	9*6 =54	
			2*7 =14	4*7 =28	5*7 =35	6*7 =42	7*7 =49	8*7 =56	9*7 =63	
			2*8 =16	4*8 =32	5*8 =40	6*8 =48	7*8 =56	8*8 =64	9*8 =72	
			2*9 =18	4*9 =36	5*9 =45	6*9 =54	7*9 =63	8*9 =72	9*9 =81	
		 */
	}
	
	private void method4() {
		/*
		 * 양의 정수 n이 매개변수로 주어질때 
		 * n이 홀수라면 n 이하의 홀수인 모든 양의 정수 합
		 * n이 짝수라면 n 이하의 짝수인 모든 양의 정수제곱의 합
		 */
		int n = (int)(Math.random()*100)+1;
	}
	
	private void method5() {
		/*
		 *   키보드로 돈을 입력 받아 화폐단위별로 개수를 구하시오.
		 *   ex ) 77550 -> 10000 7장 5000 1장 1000원 2장 500원 한개 50원 한개
		 */
		
		int[] coin = {10000, 5000, 1000, 500, 100, 50, 10};
		
	}
}

 

 

 

1번 문제

 

package kr.or.ddit.homework;

import java.util.Scanner;

public class HomeWork6 {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		HomeWork6 obj = new HomeWork6();
		obj.method1();
	} 

	private void method1() {
		/*
		 * 스캐너를 통해 숫자를 입력 받고 해당 숫자에 해당하는 구구단을 출력하시오
		 * 
		 *  3*1 =3	
			3*2 =6	
			3*3 =9	
			3*4 =12
			3*5 =15
			3*6 =18
			3*7 =21
			3*8 =24
			3*9 =27
		 */
		System.out.print("몇 단을 출력하시겠습니까? ");
		int num = sc.nextInt();
		
		for(int i = 1; i < 10; i++) {
			System.out.println(num + " * " + i +" = " + num*i);
		}
	}
}

 

결과 화면1

 

 

 

2번 문제

 

package kr.or.ddit.homework;

import java.util.Scanner;

public class HomeWork6 {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		HomeWork6 obj = new HomeWork6();
		obj.method2();
	} 
	
	private void method2() {
		/*
		 *  for 문 2개를 이용하여 구구단 전체를 출력하시오.
		 *  아래가 아니라 옆임
		 * 
		    2*1 =2	3*1 =3	..............	
			2*2 =4	3*2 =6	4*2 =8	5*2 =10	6*2 =12	7*2 =14	8*2 =16	9*2 =18	
			2*3 =6	3*3 =9	4*3 =12	5*3 =15	6*3 =18	7*3 =21	8*3 =24	9*3 =27	
			2*4 =8	3*4 =12	4*4 =16	5*4 =20	6*4 =24	7*4 =28	8*4 =32	9*4 =36	
			2*5 =10	3*5 =15	4*5 =20	5*5 =25	6*5 =30	7*5 =35	8*5 =40	9*5 =45	
			2*6 =12	3*6 =18	4*6 =24	5*6 =30	6*6 =36	7*6 =42	8*6 =48	9*6 =54	
			2*7 =14	3*7 =21	4*7 =28	5*7 =35	6*7 =42	7*7 =49	8*7 =56	9*7 =63	
			2*8 =16	3*8 =24	4*8 =32	5*8 =40	6*8 =48	7*8 =56	8*8 =64	9*8 =72	
			2*9 =18	3*9 =27	4*9 =36	5*9 =45	6*9 =54	7*9 =63	8*9 =72	9*9 =81	
		 */
		
		for (int i = 1; i < 10; i++) {
			for (int j = 2; j < 10; j++) {
				System.out.print(j + " * " + i + " = " + j*i + "\t");
			}
			System.out.println();
		}
	}
}

 

결과 화면2

 

 

 

3번 문제

 

package kr.or.ddit.homework;

import java.util.Scanner;

public class HomeWork6 {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		HomeWork6 obj = new HomeWork6();
		obj.method3();
	} 
	private void method3() {
		/*
		 *  for 문 2개를 이용하여 구구단 전체를 출력하시오.
		 *  스캐너를 통해 숫자를 입력 받고 해당 숫자에 해당하는 구구단은 <제외>. 
		 *  컨티뉴
		 *  ex ) 입력 3 
   			2*1 =2	..............	
			2*2 =4	4*2 =8	5*2 =10	6*2 =12	7*2 =14	8*2 =16	9*2 =18	
			2*3 =6	4*3 =12	5*3 =15	6*3 =18	7*3 =21	8*3 =24	9*3 =27	
			2*4 =8	4*4 =16	5*4 =20	6*4 =24	7*4 =28	8*4 =32	9*4 =36	
			2*5 =10	4*5 =20	5*5 =25	6*5 =30	7*5 =35	8*5 =40	9*5 =45	
			2*6 =12	4*6 =24	5*6 =30	6*6 =36	7*6 =42	8*6 =48	9*6 =54	
			2*7 =14	4*7 =28	5*7 =35	6*7 =42	7*7 =49	8*7 =56	9*7 =63	
			2*8 =16	4*8 =32	5*8 =40	6*8 =48	7*8 =56	8*8 =64	9*8 =72	
			2*9 =18	4*9 =36	5*9 =45	6*9 =54	7*9 =63	8*9 =72	9*9 =81	
		 */
		System.out.print("몇 단을 제외해서 출력하시겠습니까? ");
		int num = sc.nextInt();
		
		for (int i = 1; i < 10; i++) {
			for (int j = 2; j < 10; j++) {
				if(j == num) continue;
				System.out.print(j + " * " + i + " = " + j*i + "\t");
			}
			System.out.println();
		}
	}
}

 

결과 화면3

 

 

 

4번 문제

 

package kr.or.ddit.homework;

import java.util.Scanner;

public class HomeWork6 {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		HomeWork6 obj = new HomeWork6();
		obj.method4();
	} 
	
	private void method4() {
		/*
		 * 양의 정수 n이 매개변수로 주어질때 
		 * n이 홀수라면 n 이하의 홀수인 모든 양의 정수 합
		 * n이 짝수라면 n 이하의 짝수인 모든 양의 정수제곱의 합
		 */
		int n = (int)(Math.random()*100)+1;
		int sum_h = 0;
		long sum_j = 0l;
		
		for (int i = 1; i <= n; i++) {
			if(n%2 == 1 && i%2 == 1) {
				sum_h += i;
			} else if(n%2 == 0 && i%2 == 0) {
				sum_j += (i*i);
			}
		}
		
//		if(n%2 == 0) {
//			for (int i = 2; i <= n; i = i+2) {
//				sum_j += i*i;
//			}
//		} else {
//			for (int i = 1; i <= n; i = i+2) {
//				sum_h += i;
//			}
//		}
		
		System.out.println("정수 n의 값은 " + n);
		if(n%2 == 1) {
			System.out.printf("홀수 n의 값은 %d",sum_h);
		} else {
			System.out.printf("짝수 n의 값은 %d",sum_j);
		}
	}
}

 

결과 화면4

 

 

 

5번 문제

 

package kr.or.ddit.homework;

import java.util.Scanner;

public class HomeWork6 {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		HomeWork6 obj = new HomeWork6();
		obj.method5();
	} 
	
	private void method5() {
		/*
		 *   키보드로 돈을 입력 받아 화폐단위별로 개수를 구하시오.
		 *   ex ) 77550 -> 10000원 7장 5000원 1장 1000원 2장 500원 1개 50원 1개
		 */
		System.out.print("가지고 있는 값은 : ");
		int mon = sc.nextInt();
		
		int[] coin = {10000, 5000, 1000, 500, 100, 50, 10};
		int[] coin_mon = new int[7];
		
		for (int i = 0; i < coin.length; i++) {
			coin_mon[i] = mon / coin[i];
			mon = mon - ( coin_mon[i]*coin[i] );
		}
		
//		for(int i=0; i<coin.length; i++) {
//			int result = mon/coin[i];
//			mon%=coin[i];
//			if(result != 0) { // 0장인 경우 제외 되어서 출력함
//				System.out.println(coin[i] + " : " + result + "개");
//			}
//		}
		
		for (int i = 0; i < coin.length; i++) {
			if(coin[i] < 500) {
				System.out.print(coin[i] + "원 " + coin_mon[i] + "개   ");
			} else {
				System.out.print(coin[i] + "원 " + coin_mon[i] + "장   ");
			}
		}
	}
}

 

결과 화면5

 

 

반응형
1 ··· 7 8 9 10 11 12 13 ··· 16