[Java] 2_예제1

나영원·2020년 8월 30일
0

Java_basic2

목록 보기
6/37
문제1)
import java.util.Scanner;

public class Main {

    /**
     * 환자 레코드 출력하기
     *
     * 환자 레코드를 열전사 프린터로 보기좋게 프린트하려 한다.
     * 환자의 ID, 환자의 병명, 그리고 비고 사항을 입력받아
     * 포맷에 맞게 출력하는 프로그램을 작성하시오.
     *
     * 제한 사항
     * - 환자의 ID는 1 이상 999999 이하의 정수로 입력된다고 가정한다.
     * - 환자의 병명은 5자 이하의 문자열로 입력되며, 좌측 정렬하여 출력한다.
     * - 비고 사항은 10자 이하의 문자열로 입력되며, 좌측 정렬하여 출력한다.
     *
     * 출력 포맷
     * *----------*--------*---------------*
     * | ID004029 | 코로나19 | 자가 격리 조치   |
     * *----------*--------*---------------*
     *
     */


    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        System.out.println("ID 입력(1~999999) :");
        int patientID = scanner.nextInt();
        System.out.println("병명 입력(5자 이하) :");
        String nameOfaDisease = scanner.next();
        System.out.println("비고 사항(10자 이하) :");
        String note = scanner.next();


        System.out.println("*----------*--------*---------------*");
        System.out.printf("|ID %06d | %-5s | %-10s   |\n",patientID,nameOfaDisease,note);
        System.out.println("*----------*--------*---------------*");


    }
}
- nextInt를 엔터로 입력받기 위해서 nextLine()을 한줄 추가 해주었다

 

 

문제2)

import java.util.Scanner;

public class InputOutput {
/**
 * 입력받아 처리하기
 *
 * 3개의 정수를 입력받아, 그 중 최대값을 출력하고자 한다.
 * 이를 수행하는 프로그램을 작성하시오.
 *
 */

public static void main(String[] args) {

    Scanner scanner = new Scanner(System.in);
    System.out.println("최대값을 구할 숫자 3개를 입력하시오");
    int a = scanner.nextInt();
    int b = scanner.nextInt();
    int c = scanner.nextInt();
    
    int val_MAX = a > b ? a :b;
    val_MAX = val_MAX > c ? val_MAX : c;

    System.out.println(val_MAX);


}

}
- 여러개의 변수가 아닌 val_MAX변수 하나로 2가지 식을 다구할 수 있었다(변수 줄여서 사용하기)

 

문제3

import java.util.Scanner;

public class RingCounter {

    /**
     * 링카운터 출력기
     *
     * 크기가 4인 링카운터는 아래와 같이 동작한다.
     *
     * 0b0001 -> 0b0010 -> 0b0100 -> 0b1000 -> 0b0001 ...
     *
     * 즉, 링카운터는 하나의 비트만 1의 값을 가지며 1의 위치가 N번마다 반복되는 형태로 동작한다.
     *
     * 링카운터의 크기 numBits 와 카운트된 횟수 numCount를 이용하여
     * 현재 링카운터의 값을 10진수로 출력하는 프로그램을 작성하시오.
     */

    public static void main(String[] args){

         int numBits = 12;
        int numCount = 19;

        int currentCount = (numCount - 1) % numBits;
        System.out.println(1 << currentCount);

    }
}

예제 풀고 배운점

  • 입력필요없는 문제에서 불필요하게 Scanner 넣엇던 것 수정하였음

  • 불필요한 변수 생성 줄이고 출력문에서 shift를 해주었음

  • 모듈러스 연산자와 비트 연산자를 활용하는 문제 였음

profile
배우는 개발 일기

0개의 댓글