3/20 월 필기 및 과제

konut ko·2023년 3월 20일
2

더존비즈온5기

목록 보기
2/46

과제

과제1_ 초급자 제어문 문제

난 우리조 자바 초급자니깐 ☆

[1번 문제]

알파벳(A~Z) 까지 출력하는 프로그램을 작성하세요
(for 문을 사용하세요)

		for(char alphabet =65; alphabet<=90; alphabet++) {
			System.out.print(alphabet + " ");
        }
		
		System.out.println();

[2번 문제]

1~100까지 10행 10열로 출력하는 프로그램을 작성하세요
(for문을 사용하세요)
ex)
1 2 3 4 5 6 7 8 9 10
11 12 13 .....
91 92 93 94 ... 100

		for(int i = 1; i <= 100; i++) {
			System.out.printf(" %d", i);
			if(i%10 == 0)  System.out.println(); 
		}
		
		System.out.println();

[3번 문제]

두개의 주사위를 던졌을 때 눈의 합이 6이 되는 모든 경우의 수를 출력하는 프로그램을 작성하세요

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

과제2_ 별찍기 세 문제 만들고 풀기

별찍기 1

정수 한개를 입력 받고, 입력받은 정수를 밑면과 높이로 하는 오른쪽이직각인 삼각형 별을 만드세요.

		Scanner sc = new Scanner(System.in);
		System.err.print("삼각형의 밑변 입력 : ");
		int num1 = Integer.parseInt(sc.nextLine());
		
		for(int i=num1; i>= 1; i--) {
			for(int j=1; j<=i; j++) {
				System.out.printf(" ");
			}
			for(int j=0; j<=num1-i; j++) {
				System.out.printf("*");
			}
			System.out.println();
		}
        

사실 이러면 별삼각형 왼쪽이 공백 포함되어있어서 의도한 풀이가 아니다.

위 그림처럼 왼쪽에 딱 붙은 오른쪽이 직각인 삼각형을 만들기 위해서는 (입력한 수)-(별수) 만큼의 공백이 필요하다.공백은 n-1번만 반복하고 별은 n번 반복하게 하면된다.

		for(int i=num1; i>= 1; i--) {
			if(i !=1) {
				for(int j=1; j<=i-1; j++) {
					System.out.printf(" ");
				}
			}
			for(int j=0; j<=num1-i; j++) {
				System.out.printf("*");
			}
			System.out.println();
		}

별찍기 2

정수 한개를 입력 받고, 입력받은 정수를 밑면과 높이로 하는 역삼각형 별을 만드세요.

		for(int i=num1; i>= 1; i--) {
			for(int j=1; j<=i; j++) {
				System.out.print("*");
			}
			System.out.println();
		}
        

별찍기 3

정수 한개를 입력 받고, 입력받은 정수를 높이로 하는 꼬불한 크리스마스 트리(사진 참고)를 만드세요.


		int n = 9;
		System.out.println("input value : " + n);
		System.out.println();
		for(int i= 1; i<=n; i++) {
			for(int j=i; j<=n; j+=2) {
				System.out.print(" ");
			}
			for(int j=1; j<=i; j++) {
				System.out.print("*");
			}
			System.out.println();
		}

과제3_ 화폐 분류기

UNIT : 화폐단위
num : 화폐매수
SW : 스위칭 변수 , 화폐의 다음 단위를 위해
MONEY : 입력받는 금액
아래 코드는 금액을 입력받아
예)
12345
10000 1개
5000 0개
1000 2개
500 0개
100 3개
50 0개
10 4개
5 1개
1 0개
를 계산하는 프로그램 입니다

플로 차트를 읽고 코드를 짜보았다.

풀이 1 ) 플로 차트 대로

계산, 출력 시작지점과 반복문 시작지점이 달라서 플로 차트 그대로 코드를 짤때 헷갈렸다.

		int unit = 10000;
		int num = 0;
		int sw = 0;
		
		Scanner sc = new Scanner(System.in);
		System.out.println("MONEY입력");
		int MONEY = Integer.parseInt(sc.nextLine());

		num = (int) ( MONEY/unit);
		System.out.printf("MONEY: %d  unit: %d 개 ", unit, num); 
		System.out.println();
		do {
			if(unit > 1 ) {
				MONEY=MONEY - unit*num;
				if(sw == 0) {
					unit=unit/2;
					sw=1;
				}else {
					unit = unit/5;
					sw=0;
				}
			}			
			num = (int) ( MONEY/unit);
			System.out.printf("MONEY: %d  unit: %d 개 ", unit, num); 
			System.out.println();
		}while(unit > 1);  // 공부! :  do while 문은 do 블록 끝까지 내려온 후 조건을 확인한다. 
		//Test case ; 98766 66666 98733 12345

다른사람풀이

다른사람 풀이 참고
1. 플로차트에 준수
2. 아래 코드
if(!(unit > 1)) {
break;
}
이부분!!

	Scanner sc = new Scanner(System.in);
	
	int unit = 10000;
	int num = 0;
	int sw = 0;

	int money = Integer.parseInt(sc.nextLine());
	
	while(true) {
		num = money / unit;
		
		System.out.println("unit : " + unit);
		System.out.println("num : " + num);
		
		if(!(unit > 1)) {
			break;
		}
		
		money = money - unit * num;
		
		if(sw == 0) {
			unit = unit / 2;
			sw = 1;
		} else {
			unit = unit / 5;
			sw = 0;
		}
	}

풀이 2 ) 플로 차트와 다르게

다른사람 풀이 참고
가장 간략
객체지향적

필기

  • static함수 객체만들지 않고 사용가능한 함수
    문자를 정수로 바꿀 때
String str = "123";
int strToInt = Integer.parseInt(str);
  • 반대 기본 => 문자열로
    String str = String.valueOf();

  • 생성한 클래스안의 지역변수

  • sc.nextLine()

// cmd 모드 (console 창에서 )  사용자가 입력한 값을 read ....
		// 설계도 == 클래스 == 타입 은 사용하고 싶다면 heap 에 올린다.
		Scanner sc = new Scanner(System.in); //(): 생성자 함수를 호출하는 괄호~ / in : static final 출력에 사용되는 자원
//		String value = sc.nextLine(); // 입력하고 enter 칠때까지 대기 (프로그램이 종료되지 않고 계속 대기)
//		System.out.println("value 입력값 : " + value);
		
		/*
		int number = sc.nextInt(); // 사용자가 입력한 값을 정수로 변환 return 하는 함수
		System.out.println(number);
		// 에러 =) 예외
		
		float fnumber = sc.nextFloat();
		
		되도록이면 
		권장사항) nextInt, nextFloat  보다는 모든 데이터를 nextLine()으로 read 해서 
		Integer.parseInt() 등으로 바꾸는 것이 낫다. 
		Today Point
		[문자를] -> 숫자로(정수, 실수)
	    String data = sc.nextLine();
	    int idata = Integer.parseInt(data);
	    
	    Integer.parseInt("10000") => 10000 으로 반환됨
	    Float.parseFloat("3.14") => 3.14
		
		*/
		
profile
보초딩코라 틀린 내용 있을 수도 있습니다. 댓글 지적 환영

0개의 댓글