본문 바로가기

BackEnd/Java

[java] 2022.12.08 추가 연습 문제 풀이

728x90
반응형
10. 문제 10번

 

문제10) 한 도시의 시장을 뽑기 위한 지방 선거가 다가오고 있다. 도시 선거관리위원회는 선거 결과를 알려주는 프로그램을 원한다. 시장에 입후보한 두 명의 후보가 있다. 도시에는 여러개의 구가 있다. 프로그램은 각 구에서 각 후보가 얻은 득표 수를 입력 받아 각 후보의 총 득표수와 득표율을 구해서 출력해야 한다. 또한 당선자를 출력해야 한다. 프로그램은 먼저 보고할 구가 있는지를 사용자에게 물어 보아야 한다.

사용자는 보고할 구가 있으면 'Yes'를 입력하고 없으면 'No'를 입력해야 한다. 사용자가 'Yes'를 입력하면 각 후보가 한 구로부터 얻은 득표 수를 일겅 들이고 총 득표수를 갱신해야 한다. 그 다음에 다시 보고할 구가 있는지를 사용자에게 물어보고 같은 과정을 반복해야 한다. 사용자가 'No'를 입력하면 결과를 출력해야 한다. 프로그램을 작성하기 전에 설계를 하라. 다음은 모범 출력이다.


출력 ] 
보고할 구가 있나요(있으면 Yes 없으면 No를 입력하세요): Yes
첫번째 후보가 그 구에서 얻은 득표 수를 입력하세요: 35382
두번째 후보가 그 구에서 얻은 득표 수를 입력하세요: 53287

보고할 구가 있나요(있으면 Yes 없으면 No를 입력하세요): Yes
첫번째 후보가 그 구에서 얻은 득표 수를 입력하세요: 39019
두번째 후보가 그 구에서 얻은 득표 수를 입력하세요: 29040

보고할 구가 있나요(있으면 Yes 없으면 No를 입력하세요): Yes
첫번째 후보가 그 구에서 얻은 득표 수를 입력하세요: 78569
두번째 후보가 그 구에서 얻은 득표 수를 입력하세요: 95209

보고할 구가 있나요(있으면 Yes 없으면 No를 입력하세요): No

첫번째 후보가 얻은 총 투표수는 152970이고 득표율은 46.3%이다.
두번째 후보가 얻은 총 투표수는 177536이고 득표율은 53.7%이다.

두번째 후보가 시장으로 당선되었습니다.

 

package java1209;

import java.util.Scanner;

public class ex10 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		Scanner scan = new Scanner(System.in);
		
		String fName = "첫 번째 후보";
		String sName = "두 번째 후보";
		String yn;
		int fGet, sGet;
		int fSum = 0;
		int sSum = 0;
		double fPercent;
		double sPercent;
		
		do {
			System.out.print("보고할 구가 있나요(있으면 : Yes, 없으면 : No를 입력하세요) : ");
			yn = scan.next();
			yn = yn.toUpperCase();
			
			if(yn.equals("YES")) {
				System.out.print(fName + "가 그 구에서 얻은 득표 수를 입력하세요 : ");
				fGet = scan.nextInt();
				fSum += fGet;
				
				System.out.print(sName + "가 그 구에서 얻은 득표 수를 입력하세요 : ");
				sGet = scan.nextInt();
				sSum += sGet;
				
			} else {
				if(yn.equals("NO")) break;
				
				System.out.print("보고할 구가 있나요(있으면 : Yes, 없으면 : No를 입력하세요) : ");
				yn = scan.next();
				yn = yn.toUpperCase();
			}
		}while(true);
		
		fPercent = (double)fSum / (fSum + sSum) * 100;
		sPercent = (double)sSum / (fSum + sSum) * 100;
		
		fPercent = Math.round(fPercent * 100) / 100.0;
		sPercent = Math.round(sPercent * 100) / 100.0;
		
		System.out.println(fName + "가 얻은 총 투표수는 " + fSum + "이고 득표율은 " + fPercent);
		System.out.println(sName + "가 얻은 총 투표수는 " + sSum + "이고 득표율은 " + sPercent);
		
		if(fPercent > sPercent) {
			System.out.println(fName + "가 시장으로 당선되었습니다.");
		} else if (fPercent < sPercent){
			System.out.println(sName + "가 시장으로 당선되었습니다.");
		} else {
			System.out.println("동률입니다. 재투표를 실시해주세요");
		}
		
	}
}

 

 


11. 문제 11번

 

문제11) 은행에서 정기예금을 복리로 돌려고 한다. 원금과 연이율을 키보드를 통해 입력 받아 원리금이 원금의 두 배를 초과할 때까지 필요한 연도 수를 출력하는 프로그램을 설계한 후 작성하라. 또한 매년 원금과 이자를 합한 원리금을 출력해야 한다. 1년 정보예금을 복리로 신규로 든다면 원리금을 구하는 공식은 다음과 같다.

 

원리금 = 원금 * (1+연이율/100)

 

예를 들면 다음은 1,000,000원을 연이율 6%로 정기예금을 원리금이 원금의 두 배를 초과할 때까지 매년 복리로 계속 드는 경우의 출력 결과이다.


출력 ]
원금을 입력하세요: 1000000
연 이율을 입력하세요: 15.0

연도수  원리금
1 1150000.0
2 1322500.0
3 1520874.9999999998
4 1749006.2499999995
5 2011357.1874999993

필요한 연도수 = 5

 

package java1209;

import java.util.Scanner;

public class ex11 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		Scanner scan = new Scanner(System.in);

		double input;
		double con;
		int year = 0;
		double inter = 0.0;
		double get = 0;
		
		System.out.print("원금을 입력하세요 : ");
		input = scan.nextInt();
		
		con = input;			
		
		System.out.print("연 이율을 입력하세요 : ");
		inter = scan.nextInt();
		
		System.out.println("연도수\t\t원리금");
		
		
		do {
			year++;
			
			get = input * (1 + inter/100);
			
			input = get;
			
			System.out.println(year + "\t\t" + get);
			
			if(get > con * 2) {
				break;
			}
						
		}while(true);
		
		System.out.println("돈 찾아가시면 됩니다.");
		System.out.println("필요한 연도수 = " + year);
	}
}

 

 


12. 문제 12번


문제12. 양의 정수를 키보드로부터 입력 받아 역순으로 출력하는 프로그램을 설계한 후 작성하라.
예를 들면 사용자가 키보드를 통해 1234를 입력하면 4321을 출력해야 한다. 다음은 모범 출력이다.

 

출력 ]
양의 정수를 입력하세요: 1234
역순으로 표시한 입력 정수 = 4321

입력 받은 양의 정수와 역순으로 변환한 정수를 각각 정수형 변수에 저장해야 한다. 반복문을 사용하라.
또한 프로그램은 위의 모범 출력과 같은 결과를 출력해야 한다.

 

package java1209;

import java.util.Scanner;

public class ex12 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		Scanner scan = new Scanner(System.in);
		
		int num;
		int rest = 0;
		
		System.out.print("양의 정수를 입력하세요 : ");
		num = scan.nextInt();
		
		System.out.print("역순으로 표시한 입력 정수 = ");

		while(num > 0) {
			rest = num % 10;
			num /= 10;
			System.out.print(rest);
		}
		scan.close();
	}
}

 

 


13. 문제 13번


문제13) 사용자로부터 0보다 큰 정수 n을 입력 받아 다음과 같은 조건을 만족하는 1과 n 사이에 있는 정수들의 쌍(i, j)을 출력하는 프로그램을 설계하고 작성하라.


(1) i는 j로 나누어 떨어져야 한다.
(2) i != j    i와 j는 같지 않다.

다음은 표준 출력이다.


출력 ]
한 정수를 입력하세요: 6
모든 나누어 떨어지는 정수들의 쌍은 다음과 같다.
(2, 1)
(3, 1)
(4, 1)
(4, 2)
(5, 1)
(6, 1)
(6, 2)
(6, 3)

 

package java1209;

import java.util.Scanner;

public class ex13 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		Scanner scan = new Scanner(System.in);
		
		int n;
		int cnt = 0;
		
		do {
	
			System.out.print("한 정수를 입력하세요 : ");
			n = scan.nextInt();
			
		}while(n <= 0);
		
		System.out.println("모든 나누어 떨어지는 정수들의 쌍은 다음과 같다.");

		for(int i=1; i <= n; i++) {
			for(int j=1; j <= n; j++) {
				if(i > j) {
					if(i % j == 0) {
						cnt++;
						System.out.println("(" + i + ", " + j + ")");	
					}
				}
			}
		}
		System.out.println("모든 정수 쌍의 수는 : " + cnt);
		scan.close();
	}
}

 

 


14. 문제 14번


문제14) 사용자로부터 입력 받은 정수 값에 있는 홀수 숫자들의 수와 짝수 숫자들의 수를 계산하여 출력하는 프로그램을 설계하고 작성하라. 입력받은 정수는 정수형 변수에 저장해야 한다.

 

package java1209;

import java.util.Scanner;

public class ex14 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		Scanner scan = new Scanner(System.in);
		
		int even = 0; //짝수
		int odd = 0;  //홀수
		int num;
		int input;
		
		System.out.print("입력받을 숫자의 수를 지정해주세요 : ");
		input = scan.nextInt();
		
		int[] arr = new int[input];

		for(int i=0; i<arr.length; i++) {
			arr[i] = scan.nextInt();
			
			if(arr[i] % 2 == 0) {
				even++;
			} else {
				odd++;
			}
		}
		
		System.out.println("홀수 숫자들의 수 : " + odd);
		System.out.println("짝수 숫자들의 수 : " + even);
	}
}
728x90
반응형

'BackEnd > Java' 카테고리의 다른 글

[java] 조건문(if, switch문)  (0) 2022.12.12
[java] 배열(array)  (0) 2022.12.12
[java] 2022.12.08 연습 문제 풀이  (2) 2022.12.12
[java] 반복문(for, while, do~while)  (0) 2022.12.12
[java]연산자  (0) 2022.12.11