본문 바로가기
It Study/POWER JAVA(기본서)

POWER JAVA 2장 프로그래밍 6번 문제 ~ 9번 문제

by prlkt5200 2022. 9. 3.
반응형

오늘도 문제를 풀긴했는데 끝까지 못풀었네요

주말이고 하니, 일단 먼저 올려놓고 조금있다가 마저 올려야겠네요 ㅎㅎㅎ

 

모르는 문제는 주변 블로그 뒤져가면서 한번씩 참고하고, 제가 감당할 수 있는 선에서(이해 가능한 선에서) 활용해서

풀어봤습니다!

조금 더 다양한 방식으로 더 완성도 있게 해보고 싶었는데, 아직까지는 수준이 부족해서인지 결과물이 조금 시원찮기 하네요 ㅋㅋㅋㅋ 그래도 언젠가 좋아질 거라 생각하고 이만 포스팅 마치겠습니다.

 

6번 문제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package test;
 
import java.util.Scanner;
 
public class Test {
 
    public static void main(String[] args) {
 
        Scanner sc = new Scanner(System.in);
        System.out.println("받은 돈을 입력하세요");
        int reciveMoney = sc.nextInt();
 
        System.out.println("상품 가격을 입력하세요");
        int price = sc.nextInt();
        int vat = price/10;
 
        System.out.println("잔돈= " + (reciveMoney - price) +" " + "상품의 부가세= " + vat);
 
    }
 
}
 
cs

 

7번 문제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package test;
 
import java.util.Scanner;
 
public class Test {
 
    public static void main(String[] args) {
 
        Scanner sc = new Scanner(System.in);
 
        System.out.println("이름들을 하나씩 입력하세요");
        String driveName = sc.next();
        String directoryName = sc.next();
        String fileName = sc.next();
        String extension = sc.next();
 
        System.out.println("완전한 이름은= " + driveName + directoryName + fileName+ "." + extension);
 
    }
 
}
 
cs

 

8번 문제

 

ps:사실 이 부분에서 조금 이해가 안가는 점이 있어, 다른 사람들 것을 보고 베낀 점이 있습니다.

 부피를 구하는 수식이 4/3*pi*r^3인데, 막상 계산은 pi를 제외하고 하니... 왜 그런지를 모르겠네요...

 

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
package test;
 
import java.util.Scanner;
 
public class Test {
 
    public static void main(String[] args) {
 
        Scanner s = new Scanner(System.in);
 
        System.out.println("구의 반지름을 입력하세요");
        double pi = 3.14;
        double r = s.nextDouble();
 
        double c = (4.0 / 3.0* (Math.pow(r, 3));
        // Math.pow();는 거듭제곱을 위한 메소드로
        // java.lang.Math 클래스는 수학적 계산을 위한
        // 클래스라고 생각하면 편하다.
        // 그리고 Math 클래스는 시스템과 스트링 클래스와 마찬가지로
        // 스태틱? 클래스라고 한다. 따라서 인스턴스 생성없이 Math.
        // 형식으로 클래스를 사용한다.
 
        // 그리고 위에서 (4.0/3.0)으로 실수로 계산하는 이유는
        // 그렇지 않고 정수로 계산시에 1*r^3으로 계산하는 결과가 나오기 때문이다.
 
        System.out.println("구의 부피= " + c + "이다.");
 
    }
}
cs

ps:사실 이 부분에서 조금 이해가 안가는 점이 있어, 다른 사람들 것을 보고 베낀 점이 있습니다.

 부피를 구하는 수식이 4/3*pi*r^3인데, 막상 계산은 pi를 제외하고 하니... 왜 그런지를 모르겠네요...

 

9번 문제

 

ps: 9번 문제는 먼저 10진법을 2진법으로 변환하는 간단한 패턴을 이해하고 넘어가면 좋을 듯 싶어 참고사진을 남깁니다.

 

요약하면 원형 정수를 2로 나누고 나머지가 0이 나오면 0, 1이 나오면 1을 첫번째 비트에 채우고, 정수를 나눈 뒤의 몫을 다시 2로 나눠서 똑같이 0이 나오면 0, 1이 나오면 1을 채우는 것을 반복하면 2진법의 완성이다. 

 

127 정수 기준 비트 모형
10진법을 2진법으로 변환하기 위한 간단한 패턴

 

 

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
package test;
 
import java.util.Scanner;
 
public class Test {
 
    public static void main(String[] args) {
 
        // 9번 문제는 정수를 2진수로 변환하여 출력하는 프로그램
        // Integer.toBinary();를 사용하면 손쉽게 변경이 가능하나
        // 여기서는 그것의 사용없이 하는 것을 전제로 한다.
 
        // 스캐너 클래스의 객체를 생성해준다.
        Scanner s = new Scanner(System.in);
 
        // 배열(array)은 같은 타입의 변수들을 다루기 위해 활용된다고 한다.
        // 구성요소는 배열 요소(변수 값), 배열에서의 위치는 인덱스, 그리고 인덱스는 0부터
        // 시작한다고 한다.
 
        // 타입[] 배열 이름; , 타입 배열 이름[]; 과 같이 변수를 선언 가능하다고 한다.
        // 그리고 위와 같이 선언된 배열은
        // 배열 이름 = new 타입[배열 길이]; 와 같이 객체 생성으로 실제로 생성할 수 있다 한다.
        // 물론 타입[] 배열 이름 = new 타입[배열 길이]; 와 같이 선언과 동시에 객체 생성이 가능하기도 하다.
 
        // char 타입의 배열로 길이는 8이며, 배열이름은 bit, 0 ~ 7까지(그래야 길이가 8이니까)의 인덱스를 가지는
        //배열 객체를 생성한다는 의미이다.
        char[] bit = new char[8];
 
        // 0 ~ 7까지의 인덱스에서의 배열요소들을 0으로 설정한 것이다.
        bit[7= '0';
        bit[6= '0';
        bit[5= '0';
        bit[4= '0';
        bit[3= '0';
        bit[2= '0';
        bit[1= '0';
        bit[0= '0';
 
        System.out.println("정수를 입력하세요");
        // 2진법으로 변환할 정수(10진법)을 입력할 변수이다.
        int integer = s.nextInt();
 
        // java에서 if문은 조건문이고 간단히만 설명하면
 
        /*
         * if(조건식){ 실행문; 실행문; }
         */
        // 조건식이 참이면 내부{}의 실행문을 실행시키고 거짓이면
        // {}를 빠져나와서 다음 단계로 넘어가는 것을 의미한다.
 
        if (integer < 0) {
            System.out.println("음수는 실행 불가능 합니다.");
            System.exit(0);
            // System.exit()는 강제적으로 JVM을 종료시키고 싶을 때
            // 사용하는 것이라 간단히 이해하자(현재 실행하고 있는 프로세스
            // 를 강제 종료)
        }
        if (integer >= 1) {
            if (integer % 2 == 1) {
                bit[0= '1';
                // integer 값이 양수면 아래 실행문(내부 if문을 실행)
                // 내부 if문에서 integer값이 2로 나눈 나머지가 1이 나오게 되면
                // bit[0]의 값을 '1'로 재선언 한다는 의미이다.
 
                // 이 과정을 인덱스 7까지 계속 반복한다.
            }
            integer = integer / 2;
        }
        if (integer >= 1) {
            if (integer % 2 == 1) {
                bit[1= '1';
            }
            integer = integer / 2;
        }
        if (integer >= 1) {
            if (integer % 2 == 1) {
                bit[2= '1';
            }
            integer = integer / 2;
        }
        if (integer >= 1) {
            if (integer % 2 == 1) {
                bit[3= '1';
            }
            integer = integer / 2;
        }
        if (integer >= 1) {
            if (integer % 2 == 1) {
                bit[4= '1';
            }
            integer = integer / 2;
        }
        if (integer >= 1) {
            if (integer % 2 == 1) {
                bit[5= '1';
            }
            integer = integer / 2;
        }
        if (integer >= 1) {
            if (integer % 2 == 1) {
                bit[6= '1';
            }
            integer = integer / 2;
        }
        if (integer >= 1) {
            if (integer % 2 == 1) {
                bit[7= '1';
            }
            integer = integer / 2;
        }
        System.out.println("입력된 값의 2진법은? " +bit[7]+bit[6]+bit[5]+bit[4]+bit[3]+bit[2]+bit[1]+bit[0]);
        s.close();
        //마지막으로 스캐너 클래스를 명시적으로 닫아준다.
    }
}
cs

 

반응형