티스토리 뷰
1. 블록 태그와 인라인 태그에 대하여 설명하시오.
2. 블록 태그와 인라인 태그의 종류를 나열 하시오.
3. 선택자 # 과 . 에 대하여 설명하시오.
4. 아래를 프로그래밍 하시오.
- 원객체 생성
- ArrayList 에 차례대로 반지름이 1인 원 부터 10인원을 입력.
- 차례대로 각각의 원 넓이 출력
- 10개의 원넓이 합산 하여 출력.
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
|
import java.util.ArrayList;
class Circle {
private double r;
public Circle(double r) {
this.r = r;
}
public double getR() {
return this.r;
}
public double getArea() {
return r * r * Math.PI;
}
}
public class ArrayListCircle {
public static void main(String[] args) {
ArrayList<Circle> cirList = new ArrayList<>();
for (int i = 1; i <= 10; i++) {
cirList.add(new Circle(i)); // add란 값을 집어 넣는 것.
}
// 차례로 원 넓이 출력
for (int i = 0; i < 10; i++) {
Circle circle = cirList.get(i);
}
// enhanced for 문
double sum = 0;
for (Circle circle : cirList) {
System.out.println("반지름:" + circle.getR() + " 넓이:" + circle.getArea());
sum += circle.getArea();
}
System.out.println("총 넓이는: " + sum);
}
}
|
cs |
5. ArrayList 와 LinkedList 의 차이는?
ArrayList는 Searching에 유리하고
LinkedList는 저장 & 삭제에 유리하다.
1) ArrayList
배열기반이며 무작위 접근이 가능하다.
참조가 빠른데 이는 searching(=검색)이 빠르다는 의미이기도 하다.
이유는 인스턴스 참조가 빠르기 때문인데 A의 1, A의 2 이런게 빠르다는 의미이다.
또한 배열기반이라 연속된 공간이다. 그래서 생기는 단점이 있는데..
저장 공간을 늘리려면 하나를 복사해야 한다.
그래서 기존 공간을 늘리지는 못하기에 LinkedList에 비해 저장 공간 늘릴때 시간이 걸린다.
삭제하는 것도 마찬가지이다.
그래서 삭제하고 저장할게 많으면 Linked List쓰는게 나은 선택이다.
결론은 어레이리스트의 장점은 주소를 한 방에 찾아갈 수 있다는 것이다.
2) LinkedList
연속된 공간이 아니고 그 다음에 있는 주소를 담는 것이다.
그래서 저장공간 늘리고 삭제할 때 좋다.
그냥 가운데 있는 주소 삭제하고 그 담에 있는 주소 공간만 바꿔주면 되기 때문이다.
그리고 중간에 넣는 insult도 쉽다. 그렇다고 주소만 하나 만들어서 넣으면 안 된다.(?)
아무튼 삽입, 삭제, 인설트 등 할게 많으며 닥 링크드리스트 사용.
6. 아래를 프로그래밍 하시오.
5명의 별명을 입력 받아 ArrayList에 저장하고 이들 중 별명의 길이가
제일 긴 별명을 출력하시오. (단, 각 별명의 길이는 모두 다르게 입력한다.)
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
|
import java.util.ArrayList;
import java.util.Scanner;
class NickNameGame {
// 1차로 생성
public static final int COUNT = 5;
// 실무에서 변수 이름도 중요함.
// arrylist하면 보통 이름 어두에 arr 붙이거나 어미에 list붙임
ArrayList<String> nickNamelist;
public NickNameGame() {
nickNamelist = new ArrayList<>();
}
// 3차로 생성
public int getMaxName() {
int index = 0;
int max = 0;
String name = null;
for (String str : nickNamelist) {
if (max <= str.length()) {
max = str.length();
name = str;
}
}
System.out.println("가장 긴 별명:" + name);
return index;
}
// 2차로 생성
public ArrayList<String> getNickName() {
Scanner sc = new Scanner(System.in);
// 왜 0부터 안하냐면 i번째 사람 출력하려고
for (int i = 1; i <= COUNT; i++) {
System.out.println(i + "번째 사람의 별명을 입력하시오.");
String name = sc.next();
// 이 문제의 핵심은 별명의 길이는 모두 다르게 하는 로직
// 로또 중복체크 로직과 같음. >> 이중포문 돌리면 됨
if (i > 1) {
for (int j = 0; j < i - 1; j++) {
if (nickNamelist.get(j).length() == name.length()) {
System.out.println("별명의 길이는 같을 수 없습니다. 하지만 그냥 넘어감 ㅅㄱ");
name = sc.nextLine();
/*System.out.println("별명의 길이는 같을 수 없습니다. 다시 입력하세요.");
i -- ;
continue;
이런 식으로 하면 안 넘어가고 다른 거 쓸 때까지 되돌림 됨*/
}
}
}
// 위에서 중복체크 하고 나면 name 뽑을 때 같은게 없어짐.
nickNamelist.add(name);
}
return nickNamelist;
}
}
public class ArrayListNickname {
public static void main(String[] args) {
// 4차 마지막으로 생성
NickNameGame game = new NickNameGame();
game.getNickName();
game.getMaxName();
}
}
|
cs |
중복일 경우
7. 아래를 프로그래밍 하시오.
Scanner 클래스로 -1이 입력될 때까지 양의 정수를 입력받아 List에 저장하고
List를 검색하여 가장 큰 수를 출력하는 프로그램을 작성하라.
정수(-1이 입력될 때까지)>> 10 6 22 6 88 77 -1
가장 큰 수는 88
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
|
import java.util.ArrayList;
import java.util.Scanner;
class ListIntMax {
private ArrayList<Integer> arrList;
private int max;
public ListIntMax() {
// arrList 초기화
arrList = new ArrayList<>();
}
// 게터 세터 생성
public ArrayList<Integer> getArrList() {
// 여기에 6개 집어 넣자
try {
Scanner sc = new Scanner(System.in);
System.out.print("정수(-1이 입력될 때까지)>> ");
while (true) {
int num = sc.nextInt(); // 10 6 22 6 88 77 -1
if (num == -1)
break;
arrList.add(num);
}
} catch (Exception e) {
System.out.println("잘못된 입력입니다");
getArrList(); // 다시 자기거 호출하도록
}
return arrList;
}
public void setArrList(ArrayList<Integer> arrList) {
this.arrList = arrList;
}
public int getMax() {
// max값 구하기
max = 0;
for (Integer i : arrList) {
if (i > max)
max = i;
}
return max;
}
public void setMax(int max) {
this.max = max;
}
}
public class ArrayListInteger {
public static void main(String[] args) {
ListIntMax listIntMax = new ListIntMax();
listIntMax.getArrList();
System.out.println("가장 큰 수는 " + listIntMax.getMax());
}
}
|
cs |
8. 아래를 프로그래밍 하시오.
Scanner 클래스를 사용하여 6개 학점('A', 'B', 'C', 'D', 'F')을
문자로 입력받아 ArrayList에 저장하고,
ArrayList를 검색하여 학점을 점수(A=4.0, B=3.0, C=2.0, D=1.0, F=0)로 변환하여
평균을 출력하는 프로그램을 작성하라.
6개의 학점을 빈 칸으로 분리 입력(A/B/C/D/F) >> A C A B F D
2.3333333333333335
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
|
import java.util.ArrayList;
import java.util.InputMismatchException;
import java.util.Scanner;
public class ArrayListGPA {
public static void main(String[] args) {
final int SCORE_COUNT = 6;
// Char의 레퍼클래스는 Character
ArrayList<Character> arrList = new ArrayList<>();
try {
Scanner sc = new Scanner(System.in);
System.out.print("6개의 학점을 빈 칸으로 분리 입력(A/B/C/D/F) >> ");
for (int i = 0; i < SCORE_COUNT; i++) {
char ch = sc.next().charAt(0); // 문자를 받아냐는데 제일 앞 한글자 받음
switch (ch) {
case 'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'F', 'f':
break;
default:
throw new InputMismatchException(); // 던지면 trycatch가 받음
}
arrList.add(ch);// 그렇게 여섯게 받음
}
int sum = 0;
// 이제 평균 받자
for (int i = 0; i < arrList.size(); i++) {
char ch = arrList.get(i); // A학점인지 B학점인지 받아내
switch (ch) {
case 'A', 'a':
sum = sum + 4;
break;
case 'B', 'b':
sum = sum + 3;
break;
case 'C', 'c':
sum = sum + 2;
break;
case 'D', 'd':
sum = sum + 1;
break;
case 'F', 'f':
sum = sum + 0;
break;
default:
System.out.println("잘못된 점수입니다.");
}
}
double avg = (double) sum / arrList.size();
System.out.println(avg);
} catch (Exception e) {
System.out.println("잘못된 입력입니다. 처음부터 다시 입력 ㄱㄱ");
main(args); // 메인을 다시 호출
}
}
}
|
cs |
9. 아래를 프로그래밍 하시오.
하나의 학생 정보를 나타내는 Student 클래스에는
이름, 학과, 학번, 학점 평균을 저장하는 필드가 있다.
(1) 학생마다 Student 객체를 생성하고
4명의 학생 정보를 ArrayList<Student> 컬렉션에 저장한 후에,
ArrayList<Student>의 모든 학생(4명) 정보를 출력하고
학생 이름을 입력받아 해당 학생의 학점 평균을 출력하는 프로그램을 작성하라.
학생 이름, 학과, 학번, 학점평균 입력하세요.
>> 황기태, 모바일, 1, 4.1
>> 이재문, 안드로이드, 2, 3.9
>> 김남윤, 웹공학, 3, 3.5
>> 최찬미, 빅데이터, 4, 4.25
----------------------------------
이름: 황기태
학과: 모바일
학번: 1
학점평균: 4.1
----------------------------------
이름: 이재문
학과: 안드로이드
학번: 2
학점평균: 3.9
----------------------------------
이름: 김남윤
학과: 웹공학
학번: 3
학점평균: 3.5
----------------------------------
이름: 최찬미
학과: 빅데이터
학번: 4
학점평균: 4.25
----------------------------------
학생 이름 >> 최찬미
최찬미, 빅데이터, 4, 4.25
학생 이름 >> 이재문
이재문, 안드로이드, 2, 3.9
학생 이름 >> 그만
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
|
import java.util.ArrayList;
import java.util.Scanner;
import java.util.StringTokenizer;
class Student {
private String name, major, number;
private double gpa;
public Student(String name, String major, String number, double gpa) {
this.gpa = gpa;
this.major = major;
this.name = name;
this.number = number;
}
//게터세터 생성
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMajor() {
return major;
}
public void setMajor(String major) {
this.major = major;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public double getGpa() {
return gpa;
}
public void setGpa(double gpa) {
this.gpa = gpa;
}
public void findStudent(String name) {
if (this.name.equals(name))
System.out.println(this.name + ", " + this.major
+ this.number + ", " + this.gpa);
}
}
public class ArrayListStudentInfo {
public static void main(String[] args) {
final int STU_NUM = 4; // 4명이니까
Scanner sc = new Scanner(System.in);
System.out.println("학생 이름, 학과, 학번, 학점평균 입력하세요.");
// 4개 받아야하니 for문 4번 돌려
ArrayList<Student> arrList = new ArrayList<>();
for (int i = 0; i < STU_NUM; i++) {
System.out.print(">> ");
String text = sc.nextLine(); // nextLine이란 한 줄 전체를 받는 것.
StringTokenizer st = new StringTokenizer(text, ","); // text에 쉼표로 잘라
// trim이란 사이드 자르는것(=공백자르는거) 실무에서 많이 씀
String name = st.nextToken().trim();
String major = st.nextToken().trim();
String number = st.nextToken().trim();
double gpa = Double.valueOf(st.nextToken().trim());
arrList.add(new Student(name, major, number, gpa));
}
// arrayList에 있는 정보 뽑아내기
for (int i = 0; i < arrList.size(); i++) {
System.out.println("----------------------------------");
Student student = arrList.get(i);
System.out.println("이름: " + student.getName());
System.out.println("학과: " + student.getMajor());
System.out.println("학번: " + student.getNumber());
System.out.println("학점평균: " + student.getGpa());
}
// 이제 검색해보자
System.out.println("----------------------------------");
while (true) {
System.out.print("학생 이름>> ");
String name = sc.next();
if (name.equals("그만"))
break;
for (int i = 0; i < arrList.size(); i++) {
Student s = arrList.get(i);
s.findStudent(name);
}
}
System.out.println("종료");
}
}
|
cs |
'면접준비 > KOSMO 허쌤 숙제' 카테고리의 다른 글
학습정리-11-09 (0) | 2021.11.09 |
---|---|
학습정리-11-08 (0) | 2021.11.08 |
학습정리-11-04 (0) | 2021.11.04 |
학습정리-11-03 (0) | 2021.11.03 |
학습정리-11-02(compareTo) (0) | 2021.11.02 |