250x250
Notice
Recent Posts
Recent Comments
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags more
Archives
Today
Total
관리 메뉴

개린이 개발노트

국비지원 JAVA(자바) 프로그래밍 자바 연습문제 모음 주사위, 별찍기) 본문

국비지원(국비교육) 웹 개발자 과정

국비지원 JAVA(자바) 프로그래밍 자바 연습문제 모음 주사위, 별찍기)

개린이9999 2022. 12. 8. 08:50
728x90
1+(1+2)+(1+2+3)...(1+2+3+..10)의 결과를 계산하시오
package 연습;
// 1+(1+2)+(1+2+3)...(1+2+3+..10)의 결과를 계산하시오
public class Test01 {

	public static void main(String[] args) {

	int sum=0;
	
	for (int i = 0; i <= 10; i++) {
		for (int j = 1; j <= i; j++) {
			sum=sum+j;
		}
	}
		System.out.println(sum);
	
	}

}

다른 정답

package 연습;

public class Test01answer {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		int sum=0;
		int tot=0;
		int i;
		
		for(i = 1; i<=10; i++) {
	         sum = sum + i;
	         tot = tot + sum;
	      } 
	      
	      System.out.println("총합 : " + tot);
	}

}

 

1+(-2)+3+(-4)... 와 같은 식으로 계속 더해나갔을 때 몇까지 더해야 총합이 100이상 되는지 구하시오. 결과: 199
package 연습;
//1+(-2)+3+(-4)... 와 같은 식으로 계속 더해나갔을 때 몇까지 더해야 총합이 100이상 되는지 구하시오. 결과: 199 

public class Test02answer {

	public static void main(String[] args) {

		int sum = 0; // 합계 저장 변수 
		int num=0; // 숫자(양수,음수 둘다 표현)
		int i=0; // 숫자( 양수, 음수 표현 x)
		int s=1;
	
	 while (true) {
		 i++;
		 num=i*s;
	 
		 sum = sum+num;
		 s=s*-1;
	 	
		 if (sum>=100) {
			 break;
		 	}
	 	}
	System.out.println("숫자: "+num);
	System.out.println("합계: "+ sum);
	}
}

두개의 주사위를 던졌을 때 두 눈의 합이 6이되는 모든 경우의 수를 출력하는 프로그램을 작성
결과 1,5   2,4    3,3     4,2  5,1 

 

package 연습;

// 두개의 주사위를 던졌을 때 두 눈의 합이 6이되는 모든 경우의 수를 출력하는 프로그램을 작성
// 결과 1,5   2,4    3,3     4,2  5,1 
public class Test03 {

	public static void main(String[] args) {

		for (int i = 1; i <= 6; i++) {
			for (int j = 1; j <= 6; j++) {
				if (i + j == 6) {
					System.out.println(i + " " + j);
				}

			}
		}
	}
}

 

int 타입의 변수 num을 입력받아 각자리의 합을 더한 결과를 출력하는 코드를 완성하라
만약 변수 num의 값이 12345라면, '1+2+3+4+5' 의 결과인 15를 출력하라
숫자입력:12345
결과:15

 

package 연습;

import java.util.Scanner;

//int 타입의 변수 num을 입력받아 각자리의 합을 더한 결과를 출력하는 코드를 완성하라
//만약 변수 num의 값이 12345라면, '1+2+3+4+5' 의 결과인 15를 출력하라
//숫자입력:12345
//결과:15
public class Test04 {

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

	        int sum = 0;
	        int number;
	        System.out.print("숫자입력: ");
	        number = sc.nextInt();


	        while (number > 0) {
	            sum += number % 10; // sum= sum+ number%10

	            number /= 10;			
	        }

	        System.out.println("결과입력: " + sum);
	    }
	}

 


다음은 숫자맞추기 게임을 작성한 것이다 1과 사이의 100값을 반복적으로 입력해서 컴퓨터가 생각한 값을 맞추면 게임이 끝난다
사용자가 값을 입력하면 컴퓨터는 자신이 생각한 값과 비교해서 결과를 알려준다
사용자가 컴퓨터가 생각한 숫자를 맞추면 게임이 끝나고
몇번만에 숫자를 맞췄는 지 알려준다
 ex) 컴퓨터가 랜덤을 1~100숫자를 정함 ->80이라고 가정
 숫자 입력 :50 -> 입력한 숫자보다크다, 숫자 입력: 90 입력한 숫자보다 작다
마지막에 정답을 입력하면 맞췄습니다. 총 시도 횟수는 3번입니다. 
import java.util.Scanner;
package 연습;

// 다음은 숫자맞추기 게임을 작성한 것이다 1과 사이의 100값을 반복적으로 입력해서 컴퓨터가 생각한 값을 맞추면 게임이 끝난다
// 사용자가 값을 입력하면 컴퓨터는 자신이 생각한 값과 비교해서 결과를 알려준다
// 사용자가 컴퓨터가 생각한 숫자를 맞추면 게임이 끝나고
// 몇번만에 숫자를 맞췄는 지 알려준다
// ex) 컴퓨터가 랜덤을 1~100숫자를 정함 ->80이라고 가정
// 숫자 입력 :50 -> 입력한 숫자보다크다, 숫자 입력: 90 입력한 숫자보다 작다
// 마지막에 정답을 입력하면 맞췄습니다. 총 시도 횟수는 3번입니다. 
import java.util.Scanner;

public class Test05 {

	public static void main(String[] args) {
		int number = (int) (Math.random() * 100) + 1; // 1부터 100까지 숫자생성시키기 

		Scanner scanner = new Scanner(System.in);
		int guess = -1;
		int numGuesses = 0;
		while (guess != number) {
			System.out.println("숫자를 입력하세요 :");
			guess = scanner.nextInt();
			numGuesses++;

			if (guess < number) {
				System.out.println("입력한 숫자보다 큽니다.");
			} else if (guess > number) {
				System.out.println("입력한 숫자보다 작습니다.");
			}
		}
		System.out.println("맞췄습니다. " + " 총 시도횟수: " + numGuesses);
	}
}

입력받은 숫자가 회문수인지 아닌지 출력하는 프로그램을 완성하시오
회문수란? 12321, 15751, 131 -> 앞으로 읽어도 뒤로 읽어도 똑같은것
package 연습;

import java.util.Scanner;

// 입력받은 숫자가 회문수인지 아닌지 출력하는 프로그램을 완성하시오
//회문수란? 12321, 15751, 131 -> 앞으로 읽어도 뒤로 읽어도 똑같은것
public class Test06 {

	public static void main(String[] args) {

		int num; // 입력받는 숫자
		int tmp;	// 임시저장
		int result=0;		// 뒤집은 숫자 저장
		
		System.out.print("숫자를 입력하세요: ");
		Scanner sc = new Scanner(System.in);
		num=sc.nextInt();

		tmp= num;
		
		while(tmp!=0){
			
		result = result*10+ tmp%10;
		tmp=tmp/10; //123456의 몫이 12345가 됨
		}
		if (num==result) {
			System.out.println("회문수입니다.");
		}else {
			System.out.println("회문수가 아닙니다.");
		}
	}

}

 


 

 

다음은 배열에 담긴 데이터를 읽고 각 숫자의 개수를 세어서 개수만큼 * 을 찍어서 
그래프를 그리는 프로그램이다
 <실행 결과>
 1:***
 2:**
 3:**
 4:****
package 연습;

public class Test07 {
// 다음은 배열에 담긴 데이터를 읽고 각 숫자의 개수를 세어서 개수만큼 * 을 찍어서 
//	그래프를 그리는 프로그램이다
//	<실행 결과>
//	1:***
//	2:**
//	3:**
//	4:****

	public static void main(String[] args) {

		int[] arr = { 1, 4, 4, 3, 1, 4, 4, 2, 1, 3, 2 };
		int[] cnt = new int[4]; // 각 숫자별 개수보관배열
		int i, j;

		for (i = 0; i < arr.length; i++) {
//			arr[i] -1;                 개수를 저장하는 배열방 번호  
//		cnt[ arr[i]- 1 ]++;				해당 숫자의 개수를 저장하는 배열 위치 
			cnt[arr[i] - 1]++;
		}
		for (i = 0; i < cnt.length; i++) {
			System.out.print(i + 1 + " : ");
			for (j = 0; j < cnt[i]; j++) {
				System.out.print("*");
			}
			System.out.println();
		}
	}
}

 거슬러 줄 금액을 입력받아 계산한다.
보유한 동전의 개수로 거스름돈을 지불할 수 없으면
 '거스름 돈이 부족합니다.' 라고 출력하고 종료한다.
지불할 돈이 충분히 있으면 거스름돈을 지불한 만큼 가진돈에서 뺴고
남은 동전의 개수를 화면에 출력한다.
출력 결과  
거스름 받을 금액을 입력하세요. 2680
money:2680
500원:5
100원:1
50원:1
10원:3
// ==남은 동전의개수==
500원:0
100원:4
50원:4
10원:2
package 연습;

import java.util.Scanner;

public class Test08 {

	public static void main(String[] args) {
		// 거슬러 줄 금액을 입력받아 계산한다.
		// 보유한 동전의 개수로 거스름돈을 지불할 수 없으면
		// '거스름 돈이 부족합니다.' 라고 출력하고 종료한다.
		// 지불할 돈이 충분히 있으면 거스름돈을 지불한 만큼 가진돈에서 뺴고
		// 남은 동전의 개수를 화면에 출력한다.
		// 출력 결과
//		거스름 받을 금액을 입력하세요. 2680
//		money:2680
//		500원:5
//		100원:1
//		50원:1
//		10원:3
//		==남은 동전의개수--
//		500원:0
//		100원:4
//		50원:4
//		10원:2

		int[] coinUnit = { 500, 100, 50, 10 }; // 동전 단위 저장 배열
		int[] coin = { 5, 5, 5, 5 }; // 동전 개수 저장 배열
		int coinTmp; // 동전 개수 임시 저장
		int money;

		System.out.print("거스름 받을 금액을 입력하세요: ");
		Scanner sc = new Scanner(System.in);
		money = sc.nextInt();

		for (int i = 0; i < coin.length; i++) {
			coinTmp = 0; // coinTmp=0;반복을 내부에서 하는 이유는 500원짜리 돌고 다시 100원짜리 할 때 0으로 바뀌어야 하기 떄문!

			coinTmp = money / coinUnit[i]; // 금액에서 동전 단위 나눠서 동전 개수를 구함

			if (coinTmp > coin[i]) { // 가지고 있는 동전 개수보다 큰 지 물어본느 것
				coinTmp = coin[i]; // 임시저장된 공간에 내가 가지고 있는 동전 개수로
				coin[i] = 0;
			} else {
				coin[i] = coin[i] - coinTmp; // 내가 가진 동전개수에서 임시저장 동전 개수를 뺴줌
			}

			money = money - (coinUnit[i] * coinTmp); // 2700원 이라면 500원짜리 다섯개로 2500원 빼줘서 200원 남기는 작업
			System.out.println(coinUnit[i] + "원" + coinTmp + "개");

		}
		System.out.println("===남은동전개수====");
		for (int i = 0; i < coin.length; i++) {
			System.out.println(coinUnit[i] + "원" + coin[i] + "개");
		}
	}

}

다른방법 2

package 연습;

import java.util.Scanner;
import java.util.function.IntPredicate;

public class Test08 {

	public static void main(String[] args) {
		// 거슬러 줄 금액을 입력받아 계산한다.
		// 보유한 동전의 개수로 거스름돈을 지불할 수 없으면
		// '거스름 돈이 부족합니다.' 라고 출력하고 종료한다.
		// 지불할 돈이 충분히 있으면 거스름돈을 지불한 만큼 가진돈에서 뺴고
		// 남은 동전의 개수를 화면에 출력한다.
		// 출력 결과
//		거스름 받을 금액을 입력하세요. 2680
//		money:2680
//		500원:5
//		100원:1
//		50원:1
//		10원:3
//		==남은 동전의개수--
//		500원:0
//		100원:4
//		50원:4
//		10원:2

		int[] coinUnit = { 500, 100, 50, 10 }; // 동전 단위 저장 배열
		int[] coin = { 5, 5, 5, 5 }; // 동전 개수 저장 배열
		int[] passCoin = new int[4];
		int money;

		System.out.print("거스름 받을 금액을 입력하세요: ");
		Scanner sc = new Scanner(System.in);
		money = sc.nextInt();

		for (int i = 0; i < coin.length; i++) {

			passCoin[i] = money / coinUnit[i]; // 금액에서 동전 단위 나눠서 동전 개수를 구함

			if (passCoin[i] > coin[i]) { // 가지고 있는 동전 개수보다 큰 지 물어본느 것
				passCoin[i] = coin[i]; // 임시저장된 공간에 내가 가지고 있는 동전 개수로
				coin[i] = 0;
			} else {
				coin[i] = coin[i] - passCoin[i]; // 내가 가진 동전개수에서 임시저장 동전 개수를 뺴줌
			}

			money = money - (coinUnit[i] * passCoin[i]); // 2700원 이라면 500원짜리 다섯개로 2500원 빼줘서 200원 남기는 작업

		}
		if (money > 0) {
			System.out.println("거슬러줄 잔돈이 부족합니다.");
		} else {

			System.out.println("거슬러준 동전개수");
			for (int i = 0; i < coin.length; i++) {
				System.out.println(coinUnit[i] + "원" + coin[i] + "개");

				System.out.println("===남은동전개수====");
				for (i = 0; i < coin.length; i++) {
					System.out.println(coinUnit[i] + "원" + coin[i] + "개");
				}
			}
		}
	}
}

 

 


package 연습2;

public class Student {
	
	String name;
	int ban;
	int no;
	int kor, eng, math;
	

	int getTotal() {
		
		return kor + eng + math;
	}
	
	double getAverage(){
		
		return getTotal()/3.0;
	}
}
package 연습2;

/*
 * 다음과 같은 변수를 가지는 Student 클래스를 완성하시오
 * 데이터 타입	변수명	설명
 * 문자열		name	이름
 * 정수		ban		반
 * 정수		no		번호
 * 정수		kor		국어점수
 * 정수		eng		영어점수
 * 정수		math	수학점수
 * 
 * 메서드
 * 메서드명 : getTotal
 * 기능 : 국어, 영어, 수학점수를 다 더해서 반환함
 * 리턴타입 : 정수
 * 매개변수 없음
 * 
 * 메서드명 : getAverage
 * 기능 : 총점을 과목수(3)로 나눈 평균을 반환함
 * 리턴타입 : 실수
 * 매개변수 없음
 */

public class YTT {

	public static void main(String[] args) {
		
		Student s = new Student();
		
		s.name ="홍길동";
		s.ban = 1;
		s.no = 2;
		s.kor = 100;
		s.eng = 60;
		s.math = 76;
		
		System.out.println("이름: " + s.name);
		System.out.println("총점: " + s.getTotal());
		System.out.println("평균: " + s.getAverage());

	}

}




1번 모든 생성자의 이름은 클래스의 이름과 동일해야한다.->정답!

2번 생성자는 객체를 생성하기 위한 것이다. -> X  객체 생성은 new라는 키워드가 해주는 것이고 생성자의 정확한 목표는 초기값 설정하는 것! 

3. 클래스에는 생성자가 반드시 하나 이상 있어야 한다. -> 정답! 

4. 생성자가 없는 클래스는 컴파일러가 기본 생성자를 추가한다->정답! 

5. 생성자는 오버로딩을 할 수 없다. X ->  오버로딩 가능함(오버라이딩도 마찬가지) 

 

1. 메서드의 이름이 같아야 한다 -O

2. 매개변수의 개수나 타입이 달라야 한다-O

3. 리턴타입이 달라야한다-X

4. 매개변수 이름이 달라야 한다-X



package 연습2;

import java.util.Arrays;

public class Test {

// 여기에 메서드 생성
public static int[] shuffle(int[] arr) {
int temp;
for (int i = 0; i < arr.length; i++) {
int j = (int) (Math.random() * arr.length);

temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
return arr;
}

public static void main(String[] args) {

int[] arr = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int[] result = shuffle(arr);

System.out.println(Arrays.toString(result));

}

}
728x90