728x90
반응형
[참고자료]
https://book.naver.com/bookdb/price.naver?bid=22448175
Q1. 네 값의 최댓값을 구하는 max4 메서드를 작성하세요.
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
|
import java.util.Scanner;
public class ch1_max {
public static void main(String[] args) {
System.out.println("최댓값:"+max4(1,4,2,3));
System.out.println("최댓값:"+max4(6,8,2,3));
System.out.println("최댓값:"+max4(8,1,2,3));
System.out.println("최댓값:"+max4(2,4,9,3));
}
public static int max4(int a, int b, int c, int d) {
int max = a;
if(b>max) {
max = b;
}
if(c>max) {
max = c;
}
if(d>max) {
max = d;
}
return max;
}
}
|
cs |
Q2. 세 값의 최솟값을 구하는 min3 메서드를 작성하세요.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
public class ch1_min {
public static void main(String[] args) {
System.out.println("최솟값:"+min3(1,4,2));
System.out.println("최솟값:"+min3(6,8,2));
System.out.println("최솟값:"+min3(8,1,2));
}
public static int min3(int a, int b, int c) {
int min = a;
if (b < min) {
min = b;
}
if (c < min) {
min = c;
}
return min;
}
}
|
cs |
Q3. 네 값의 최솟값을 구하는 min4 메서드를 작성하세요.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
public class ch1_q3 {
public static void main(String[] args) {
System.out.println("최솟값:"+min4(1,4,2,3));
System.out.println("최솟값:"+min4(6,8,2,3));
System.out.println("최솟값:"+min4(8,1,2,3));
}
public static int min4(int a, int b, int c, int d) {
int min = a;
if (b < min) {
min = b;
}
if (c < min) {
min = c;
}
if(d < min) {
min = d;
}
return min;
}
}
|
cs |
Q4. 세 값의 대소 관계 13종류의 모든 조합에 대해 중앙값을 구하여 출력하는 프로그램을 작성하세요.
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
|
import java.util.Scanner;
public class ch1_q5 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("a의값:");
int a = sc.nextInt();
System.out.print("b의값:");
int b = sc.nextInt();
System.out.print("c의값:");
int c = sc.nextInt();
System.out.println("중앙값은: "+med3(a,b,c)+"입니다.");
}
static int med3(int a, int b, int c) {
if (a >= b) {
if (b >= c) {
return b;
} else if (a <= c) {
return a;
} else {
return c;
}
} else if (a > c) {
return a;
} else if (c > b) {
return b;
} else {
return c;
}
}
}
|
cs |
Q5. 중앙값을 구하는 메서드는 다음과 같이 작성할 수도 있습니다. 그러나 실습 1C-1의 med3 메서드에 비해 효율이 떨어지는데, 그 이유를 설명하시오.
-정답
가장 처음의 if문의 판단 if ((b >= a && c<= a) || (b <= a && c >= a))에 주목합니다.
여기서 b >= a 및 b <= a의 판단을 뒤집은 판단(실질적으로 같은 판단)을
이어지는 else 이후의 else if ((a > b && c < b) || (b <= a && c > b)) 으로 수행합니다.
결국 가장 처음의 if가 성립한 경우 2 번째의 if에서도 (실질적으로)같은 판단을 수행하므로 효율이 나빠집니다.
Q6. 실습 1-4에서 while문이 종료될 때 변수 i 값이 n + 1이 됨을 확인하세요. (변수 i 값을 출력하도록 프로그램을 수정하세요.)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
import java.util.Scanner;
public class ch1_while {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("1부터 n까지의 합을 구합니다.");
System.out.print("n값: ");
int n = sc.nextInt();
int sum = 0;
int i = 1;
while(i <= n) {
sum += i;
i++;
}
System.out.println("1부터 "+ n+ "까지의 합은 "+sum +" 입니다.");
System.out.println("i값:"+i);
}
}
|
cs |
Q7. 가우스의 덧셈을 이용하여 1부터 n까지의 정수 합을 구하는 프로그램을 작성하세요.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
import java.util.Scanner;
public class ch1_q7 {
public static void main(String[] args) {
Scanner sc= new Scanner(System.in);
System.out.println("1부터 n까지의 덧셈을 구해보자!");
int n = sc.nextInt();
int sum = 0;
sum = (1+n) * (n/2);
System.out.println("1부터 n까지의 합은 "+sum+"입니다.");
}
}
|
cs |
Q8. 정수 a, b를 포함하여 그 사이의 모든 정수의 합을 구하여 반환하는 메서드를 작성하세요.
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
|
import java.util.Scanner;
public class ch1_sum {
public static void main(String[] args) {
Scanner sc= new Scanner(System.in);
System.out.println("1부터 n까지의 덧셈을 구해보자!");
int n = sc.nextInt();
int sum = 0;
for(int i=1; i<=n; i++) {
sum += i;
}
System.out.println("1부터 n까지의 덧셈: "+sum);
System.out.println("가우스의 공식_1부터 n까지의 덧셈:"+ sumof(1,n));
}
//가우스의 덧셈 공식을 외우자!
// (1+n)*(n/2) = 1부터 n까지의 합
// (1+20) * (20/2) = 210
static int sumof(int a, int b) {
if(a<b) {
return (a+b) * (b/2);
}else {
return(a+b) * (a/2);
}
}
}
|
cs |
Q9. 두 변수 a, b에 정수를 입력하고 b - a를 출력하는 프로그램을 작성하세요.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("a값:");
int a = sc.nextInt();
System.out.print("b값:");
int b = sc.nextInt();
do {
System.out.println("a보다 큰 값을 입력하세요!");
System.out.print("b값: ");
b = sc.nextInt();
}while(b<=a);
System.out.println("b - a는 "+(b-a)+"입니다.");
}
}
|
cs |
Q10. 양의 정수를 입력하고 자릿수를 출력하는 프로그램을 작성하세요.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("수를 입력하시오.");
int num = sc.nextInt();
int cnt = 0;
do {
num = num - num%10;
num = num / 10;
cnt++;
}while(num > 0);
System.out.println("그 수는 "+cnt+"자리입니다.");
}
}
|
cs |
Q11. 위쪽과 왼쪽에 곱하는 수가 있는 구구단 곱셈표를 출력하는 프로그램을 작성하세요.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
public class Main {
public static void main(String[] args) {
System.out.println(" | 1 2 3 4 5 6 7 8 9");
System.out.println("---+---------------------------");
for(int i = 0; i<9; i++) {
System.out.printf("%2d %s",i+1,"|");
for(int j = 0; j< 9; j++) {
System.out.printf("%3d",(j+1) * (i+1));
}
System.out.println();
}
}
}
|
cs |
Q12. 구구단 곱셈표를 변형하여 곱셈이 아니라 덧셈을 출력하는 프로그램을 작성하세요.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
public class Main {
public static void main(String[] args) {
System.out.println(" | 1 2 3 4 5 6 7 8 9");
System.out.println("---+---------------------------");
for (int i = 0; i < 9; i++) {
System.out.printf("%2d %s", i + 1, "|");
for (int j = 0; j < 9; j++) {
System.out.printf("%3d", (i + 1) + (j + 1));
}
System.out.println();
}
}
}
|
cs |
Q13. 입력한 수를 한 변으로 하는 정사각형을 * 로 출력하는 프로그램을 작성하세요.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("정사각형을 출력합니다.");
System.out.print("변의 길이:");
int N = sc.nextInt();
for(int i = 0; i<N; i++) {
for(int j =0 ; j<N; j++) {
System.out.print('*');
}
System.out.println();
}
}
}
|
cs |
Q14. 직각이등변삼각형을 출력하는 부분을 메서드로 작성하세요.
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
|
import java.util.Scanner;
public class Main {
public static void triangleLB(int n) {
for(int i = 0; i<n; i++) {
for(int j =0; j<=i; j++) {
System.out.print('*');
}System.out.println();
}
}
public static void triangleLU(int n) {
for(int i = 0; i<n; i++) {
for(int j = n-i; j>0; j--) {
System.out.print('*');
}System.out.println();
}
}
public static void triangleRU(int n) {
for(int i = 0; i<n; i++) {
for(int j = 0; j<n; j++) {
if(i>j) {
System.out.print(' ');
}else {
System.out.print('*');
}
}
System.out.println();
}
}
public static void triangleRB(int n) {
for(int i = 0; i<n; i++) {
for(int j = n; j>=0; j--) {
if(j<=i) {
System.out.print('*');
}else {
System.out.print(' ');
}
}System.out.println();
}
}
public static void main(String[]args) {
Scanner sc = new Scanner(System.in);
int N;
do {
System.out.print("몇 단 삼각형입니까?");
N = sc.nextInt();
}while(N<=0);
System.out.println("왼쪽 아래가 직각인 이등변삼각형을 출력합니다.");
triangleLB(N);
System.out.println("왼쪽 위에가 직각인 이등변삼각형을 출력합니다.");
triangleLU(N);
System.out.println("오른쪽 위에가 직각인 이등변삼각형을 출력합니다.");
triangleRU(N);
System.out.println("오른쪽 아래가 직각인 이등변삼각형을 출력합니다.");
triangleRB(N);
}
}
|
cs |
Q15. n단의 피라미드를 출력하는 메서드를 작성하세요.
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
|
import java.util.Scanner;
public class Main {
public static void spira(int n) {
for(int i = 1; i<=n; i++) {
for(int j =n; j>1; j--) {
if(j<=i) {
System.out.print('*');
}else {
System.out.print(' ');
}
}
for(int k =1; k<=n; k++) {
if(i>=k) {
System.out.print('*');
}else {
System.out.print(' ');
}
}
System.out.println();
}
}
public static void main(String[]args) {
Scanner sc = new Scanner(System.in);
System.out.println("n단의 피라미드를 출력하는 메서드를 작성하세요.");
int n;
do {
System.out.print("n층의 피라미드:");
n = sc.nextInt();
}while(n<=0);
spira(n);
}
}
|
cs |
Q16. n단의 숫자 피라미드를 출력하는 메서드를 작성하세요.
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
|
import java.util.Scanner;
public class Main {
public static void npira(int n) {
for(int i = 1; i<=n; i++) {
for(int j =n; j>1; j--) {
if(j<=i) {
System.out.print(i%10);
}else {
System.out.print(' ');
}
}for(int k = 1; k<=n; k++) {
if(k<=i) {
System.out.print(i%10);
}else {
System.out.print(' ');
}
}
System.out.println();
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("n단의 피라미드를 출력하는 메서드를 작성하세요.");
int n;
do {
System.out.print("n층의 피라미드:");
n = sc.nextInt();
}while(n<=0);
npira(n);
}
}
|
cs |
728x90
'Java > Do it! 자료구조와 함께 배우는 알고리즘' 카테고리의 다른 글
자료구조와 함께 배우는 알고리즘 입문 자바편 3장 연습문제 (0) | 2022.07.12 |
---|---|
자료구조와 함께 배우는 알고리즘 입문 자바편 2장 연습문제 (0) | 2022.07.04 |