728x90
반응형
Q1. 키뿐만 아니라 사람 수도 난수로 생성하도록 프로그램을 작성하세요.
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
|
import java.util.Random;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Random rand = new Random();
Scanner sc = new Scanner(System.in);
System.out.println("키의 최댓값을 구합니다.");
System.out.print("사람 수:");
//0 - 9명에서 +1을 해주어서 1 - 10명
int num = rand.nextInt(10)+1;
System.out.println(num);
int[]arr = new int[num];
System.out.println("킷값은 다음과 같습니다.");
for(int i = 0; i<arr.length; i++) {
arr[i] = rand.nextInt(100)+100;
}
for(int i = 0; i<arr.length; i++) {
System.out.println("height["+i+"]: "+arr[i]);
}
System.out.println("최댓값은 "+maxOf(arr)+"입니다.");
}
static int maxOf(int[]a) {
int max = a[0];
for(int i = 1; i<a.length; i++) {
if(max < a[i])
max = a[i];
}
return max;
}
}
|
cs |
Q2. 배열 요소를 역순으로 정렬하는 과정을 하나 하나 나타내는 프로그램을 작성하세요.
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
|
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[]arr = {2,5,1,3,9,6,7};
reverse(arr);
}
static void swap(int[]a, int index1, int index2) {
System.out.println(Arrays.toString(a));
int t = a[index1];
a[index1] = a[index2];
a[index2] = t;
System.out.println("a["+index1+"]과 a["+index2+"]을 교환합니다.");
}
static void reverse(int[]a) {
for(int i = 0; i<a.length/2; i++) {
swap(a,i,a.length-i-1);
}
System.out.println(Arrays.toString(a));
System.out.println("역순 정렬을 마쳤습니다.");
}
}
|
cs |
Q3. 배열 a의 모든 요소의 합계를 구하여 반환하는 메서드를 작성하세요.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[]arr = {1,3,5,7,2};
System.out.println(Arrays.toString(arr));
System.out.println("arr배열의 합:"+sumOf(arr));
}
static int sumOf(int[]a) {
int result = 0;
for(int i = 0; i<a.length; i++) {
result += a[i];
}
return result;
}
}
|
cs |
Q4. 배열 b의 모든 요소를 배열 a에 복사하는 메서드 copy를 작성하세요.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[]arr = {1,4,5,6,7,2};
int[]arr_copy = new int[arr.length];
copy(arr_copy,arr);
}
static void copy(int[]a, int[]b) {
for(int i = 0; i<b.length; i++) {
a[i] = b[i];
}
System.out.println("복사한 배열 값: "+Arrays.toString(a));
System.out.println("기존 배열 값: "+Arrays.toString(b));
}
}
|
cs |
Q5. 배열 b의 모든 요소를 배열 a에 역순으로 복사하는 메서드 rcopy를 작성하세요.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[]arr = {1,5,6,7,8,9};
int[]arr_copy = new int[arr.length];
rcopy(arr_copy,arr);
}
static void rcopy(int[]a, int[]b) {
for(int i =0; i<b.length; i++) {
a[i] = b[b.length-i-1];
}
System.out.println("기존 배열 값: "+Arrays.toString(b));
System.out.println("역순으로 복사한 배열 값:"+Arrays.toString(a));
}
}
|
cs |
Q6. 기수 변환 과정을 자세히 나타내는 프로그램을 작성하세요.
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
|
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Random rand = new Random();
Scanner sc = new Scanner(System.in);
char[] cno = new char[32];
int dno;
System.out.println("10진수를 기수 변환합니다.");
System.out.print("변환하는 음이 아닌 정수: ");
int num = sc.nextInt();
System.out.print("어떤 진수로 변환활까요?(2~36): ");
int cd = sc.nextInt();
System.out.println(cd + "| " + num);
transform(cno, num, cd);
}
static void transform(char[] a, int num, int cd) {
int digits = 0;
String dchar = "0123456789";
while (num > 0) {
a[digits++] = dchar.charAt(num % cd);
int rmd = (num % cd);
num = num / cd;
System.out.println(" + ------------");
if (num != 0) {
if (num >= 10) {
System.out.println(cd + "| " + num + " ---" + rmd);
} else {
System.out.println(cd + "| " + num + " ---" + rmd);
}
} else {
System.out.println(" " + num + " ---" + rmd);
}
}
for (int i = 0; i < digits / 2; i++) {
char temp = a[i];
a[i] = a[digits - i - 1];
a[digits - i - 1] = temp;
}
System.out.print(cd + "진수로 ");
for (int i = 0; i < digits; i++) {
System.out.print(a[i]);
}
System.out.println("입니다.");
}
}
|
cs |
Q7. 시력 분포를 그래프로 출력하도록 수정하여 프로그램을 작성하세요.
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
|
import java.util.Arrays;
import java.util.Scanner;
class Main {
static final int VMAX = 21;
static class PhyscData {
String name;
int height;
double vision;
PhyscData(String name, int height, double vision){
this.name = name;
this.height = height;
this.vision = vision;
}
}
//키의 평균값 메소드
static double aveHeghit(PhyscData[] dat) {
double sum = 0;
for(int i = 0; i<dat.length; i++) {
sum += dat[i].height;
}
return sum / dat.length;
}
//시력 분포를 구함
static void distVision(PhyscData[] dat, int[]dist) {
int i = 0;
dist[i] = 0;
for(i = 0; i<dat.length; i++)
if(dat[i].vision>=0.0 && dat[i].vision <= VMAX / 10.0)
dist[(int)(dat[i].vision * 10)]++;
}
public static void main(String[]args) {
Scanner sc = new Scanner(System.in);
PhyscData[] x = {
new PhyscData("강민하", 162, 0.3),
new PhyscData("김찬우", 173, 0.3),
new PhyscData("박준서", 175, 0.1),
new PhyscData("홍길동", 162, 0.1),
new PhyscData("최민영", 162, 0.1),
new PhyscData("최준영", 162, 1.2),
new PhyscData("김동하", 162, 1.5),
new PhyscData("김준하", 172, 1.5),
new PhyscData("김령하", 132, 1.5),
new PhyscData("백승하", 142, 1.5),
new PhyscData("이윤태", 162, 1.5),
};
int[] vdist = new int[VMAX]; // 시력분포
System.out.println("■ 신체검사 리스트 ■");
System.out.println("이름 키 시력");
System.out.println("--------------------");
for(int i = 0; i<x.length; i++) {
System.out.printf("%-8s %3d %5.1f\n",x[i].name,x[i].height,x[i].vision);
}
System.out.printf("\n평균 키: %5.1fcm\n",aveHeghit(x));
distVision(x, vdist);
System.out.println("\n시력분포");
String[]arr = new String[vdist.length];
Arrays.fill(arr,"");
String star = "*";
for(int i = 0; i<VMAX; i++) {
for(int j = 0; j<vdist[i]; j++) {
arr[i] += star;
}
System.out.printf("%3.1f ~: %2s\n",i/10.0, arr[i]);
}
}
}
|
cs |
Q8. 년월일을 필드로 갖는 클래스를 만드세요.
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
|
public class YMD {
int y; //년
int m; //월(1 ~ 12)
int d; //일(1 ~ 31)
YMD(int y, int m, int d){
this.y = y;
this.m = m;
this.d = d;
}
@Override
public String toString() {
return "년: "+this.y +" 월: "+this.m+" 일: "+this.d;
}
static int[][] mdays = {
{31,28,31,30,31,30,31,31,30,31,30,31},
{31,29,31,30,31,30,31,31,30,31,30,31}
};
public int isLeap(int y) {
return(y % 4 == 0 && y % 100 != 0 || y % 400 == 0 ? 1:0);
}
public YMD after(int n) {
if(n < 0 )
return before(-n);
YMD temp = new YMD(y,m,d);
temp.d += n;
while(temp.d > mdays[isLeap(y)][temp.m - 1]) {
temp.d -= mdays[isLeap(y)][temp.m-1];
if(++temp.m == 13) {
temp.y++;
temp.m = 1;
}
}
return temp;
}
public YMD before(int n) {
if(n < 0)
return after(-n);
YMD temp = new YMD(y, m, d);
temp.d -= n;
while(temp.d < 1) {
temp.d += mdays[isLeap(temp.y)][temp.m-1];
if(--temp.m ==0) {
temp.y--;
temp.m = 12;
}
}
return temp;
}
public static void main(String[] args) {
YMD obj = new YMD(2020, 1,1);
System.out.println(obj.after(365));
System.out.println(obj.before(365));
}
}
|
cs |
728x90
'Java > Do it! 자료구조와 함께 배우는 알고리즘' 카테고리의 다른 글
자료구조와 함께 배우는 알고리즘 입문 자바편 3장 연습문제 (0) | 2022.07.12 |
---|---|
자료구조와 함께 배우는 알고리즘 입문 자바편 1장 연습문제 (0) | 2022.06.29 |