코딩 연습장/JAVA

자바 2장 연습문제(조건문)-1

Do아 2021. 3. 18. 09:46
728x90

2021/03/08(월)

1-1 Scanner 클래스를 이용하여 원화를 입력받아 달러로 바꾸어 다음 에시와 같이 출력하는 프로그램을 작성하라.

$1=1100원으로 가정하고 계산하라.

1-2 Scanner 클래스를 이용하여 2자리의 정수(0~99사이)를 입력받고, 십의 자리와 1의 자리가 같은지 판별하여 출력하는 프로그램을 작성하라.

2자리수 정수 입력(10~99)>>77

Yes! 10의 자리와 1의 자리가 같습니다.

1-3 Scanner 클래스를 이용하여 정수로 된 돈의 액수를 입력받아 오만 원권, 만 원권, 천 원권, 500원짜리 동전, 100원짜리 동전 50원짜리 동전, 10원짜리 동전, 1원 짜리 동전 각 몇 개로 변환되는지 출력하라.

금액을 입력하시오 >> 65376

오만원권 1매

만원권 1매

천원권 5매

백원 3개

오십원 1개

십원 2개

일원 6개

내 풀이

1-1)

import java.util.Scanner; //Scanner 클래스를 이용하여 2자리의 정수(0~99사이)를 입력받고, 십의 자리와 1의 자리가 같은지 판별하여 출력하는 프로그램을 작성하라. 
public class Hw2_1 { 
	public static void main(String[] args) { 
		Scanner scanner = new Scanner(System.in); 
		System.out.print("원화를 입력하세요(단위 원)>>"); //한국돈 입력 저장 
		int korMoney = scanner.nextInt(); 
		System.out.println(korMoney+"원은 $"+korMoney/1100.0+"입니다."); 
	}
}

1-2)

import java.util.Scanner;  
public class Hw2_1 { 
	public static void main(String[] args) {
		//Scanner 클래스를 이용하여 2자리의 정수(0~99사이)를 입력받고, 십의 자리와 1의 자리가 같은지 판별하여 출력하는 프로그램을 작성하라. 
		Scanner scanner = new Scanner(System.in); 
		System.out.print("2자리수 정수 입력(10~99)>>"); 
		
		int number = scanner.nextInt(); //10의 자리를 10으로 나눈 몫과 나머지가 같으면 출력 
		
		if(number%10 == number/10) 
			System.out.println("Yes! 10자리와 1의 자리가 같습니다."); 
	}
}

1-3)

import java.util.Scanner;

public class Hw2_1 {
	public static void main(String[] args) {
		
		//Scanner 클래스를 이용하여 정수로 된 돈의 액수를 입력받아 
		//오만 원권, 만 원권, 천 원권, 500원짜리 동전, 100원짜리 동전 50원짜리 동전, 10원짜리 동전, 1원 짜리 동전 각 몇 개로 변환되는지 출력하라.
		
		Scanner scanner = new Scanner(System.in);
		System.out.print("금액을 입력하시오>>");
		int money = scanner.nextInt();
		
		//나머지
		int reminder = 0;
		//몫
		int portion =0;
		
		//처음 입력된 money의 값을 50000원으로 나눈 나머지와 몫을 저장
		//몫은 지폐의 수가 되고 나머지는 다시 아래 단위로 나눈다
		portion = money/50000;
		reminder = money%50000;
		//만약 50000원권이 1개 이상이면 출력
		if(money/50000>=1) 
		System.out.println("오만원권 "+ portion +"매");
		
		portion = reminder/10000;
		reminder = reminder%10000;
		if(portion>=1)
		System.out.println("만원권 "+ portion +"매");
		
		portion = reminder/1000;
		reminder = reminder%1000;
		if(portion>=1)
		System.out.println("천원권 "+ portion +"매");
		
		portion = reminder/500;
		reminder = reminder%500;
		if(portion>=1)
		System.out.println("오백원 "+ portion +"개");
		
		portion = reminder/100;
		reminder = reminder%100;
		if(portion>=1)
		System.out.println("백원 "+ portion +"개");
		
		portion = reminder/50;
		reminder = reminder%50;
		if(portion>=1)
		System.out.println("오십원 "+ portion +"개");
		
		portion = reminder/10;
		reminder = reminder%10;
		if(portion>=1)
		System.out.println("십원 "+ portion +"개");
		
		portion = reminder/1;
		reminder = reminder%1;
		if(portion>=1)
		System.out.println("일원 "+ portion +"개");
		
	}
	
}

--> 조금 비효율적인 방법으로 푼거같아서 좀 더 고민해서 배열과 반복문을 사용!

import java.util.Scanner;

public class Hw2_1 {
	public static void main(String[] args) {
		
		//Scanner 클래스를 이용하여 정수로 된 돈의 액수를 입력받아 
		//오만 원권, 만 원권, 천 원권, 500원짜리 동전, 100원짜리 동전 50원짜리 동전, 10원짜리 동전, 1원 짜리 동전 각 몇 개로 변환되는지 출력하라.
		
		Scanner scanner = new Scanner(System.in);
		System.out.print("금액을 입력하시오>>");
		int money = scanner.nextInt();
		
		//나머지
		int reminder = 0;
		//몫
		int portion =0;
		
		//나눠줘야하는 단위를 배열로 저장
		int moneyUnitArray[] = {10000,1000,500,100,50,10,1};
		//출력해야하는 단위 배열로 저장
		String korMoneyUnitArray[] = {"만원권", "천원권", "오백원", "백원","오십원", "십원", "일원"};
		
		//처음 입력된 money의 값을 50000원으로 나눈 나머지와 몫을 저장
		//몫은 지폐의 수가 되고 나머지는 다시 아래 단위로 나눈다
		portion = money/50000;
		reminder = money%50000;
		
		//만약 50000원권이 1개 이상이면 출력
		if(money/50000>=1) 
		System.out.println("오만원권 "+ portion);
		
		//만원권 부터는 반복이니까 반복문
		for(int i =0; i<moneyUnitArray.length;i++) {
			portion = reminder/moneyUnitArray[i];
			reminder = reminder%moneyUnitArray[i];
			if(portion>=1)
			System.out.println(korMoneyUnitArray[i] +" "+ portion);
		}	
	}
}

배열로 저장해서 반복문으로 돌리니까 훨씬 짧고 쉽게 코딩 가능

728x90