-
KOSTA 교육 5일차(배열, 정렬)Review 2020. 6. 20. 21:06
18.11.2(금)
배운 내용
- 배열
- 배열복사
- 정렬
- swap
1. Array(배열)
배열은?
여러개의 데이터 값을 하나의 데이터로 모아 사용한다.
배열의 특징- 많은 변수들을 하나의 변수로 해결할 수 있다.
- 주소값이 있다면 언제든 그 주소를 사용할 수 있다.
- reference = 참조 = 주소값
- [] -> 배열을 의미
배열의 단점
- 한가지의 데이터타입 밖에 넣을 수 밖에 없다.
- 한 번 생성 하면 더 이상 늘어나지 않는다.
어제도 배열을 배웠지만 중요한 부분이기도 하고 숙달이 필요한 부분이기 때문에 추가로 학습하였다.
- 먼저 arr3 배열을 1~5로 바로 생성한다.
- 배열 안 정수 1과 2의 위치를 바꾸기 위해서 swap이라는 메소드를 만든다.
- 배열에 위치한 2개 idx1,2 의 변수를 선언하고 temp를 활용해 idx1를 삽입, 빈 idx1에 idx2를 삽입하고 idx2 자리에 temp에 넣어둔 idx1을 삽입하여 위치를 바꾸어준다.
- swap메소드를 main메소드에 호출하고 for문을 이용하여 배열을 출력한다.
- 1~5까지 선언된 배열을 5~1 순으로 swap 해야한다.
- 먼저 swap 하기 위한 반복을 해야하니 for문을 사용하여 0부터 2까지 반복하게끔 실행한다. 이유는 3은 위치를 바꿀 필요가 없기 때문이다.
- arr.length에 0일 때 4, 1일때 3과 바꾸어야 하기 때문에 -1를 넣어준다.
- 이제 출력을 하기 위해 arr[0]부터 arr[4]까지 출력시켜준다.
이제 알아볼 배열은 2차원 배열이다. 1차원과는 다르게 이해하기 난해하고 이중for문을 사용해야하는 등 복잡한 계산이 많아진다.
- 2차원 배열을 선언하는 방법으론 예제에 설명한 총 3가지 방법과 같다.
- 여기서 동시에 실행하는 방법을 풀이해보면, 저기서 나타낸 큰 중괄호 안에 3개의 중괄호는 1차 배열이라고 생각하면 된다. 1차 배열이라는 가방 안에, 2차 배열에 해당되는 숫자들이 들어간 공들이 있다고 생각하면 된다.
- 2차 배열을 출력하기 위해선 이중 for문을 이용하여 i값을 1차 배열을 불러 0부터 2까지 반복하게 하고, 2차 배열을 j값으로 선언한 후 1차 배열 안의 2차 배열값을 불러내야하므로 arr[i].length로 선언한다.
- arr[i][j]로 출력하면 숫자들이 출력될 것이다.
- 먼저 준비된 사항은 키보드입력, String으로 각 과목, 총점, 평균을 구하라는 배열이다.
- 2차원 배열을 만들 때 학생이 2명이니 1차원에 2를, 5가지가 출력이 되어야 하니 2차원에 5를 선언한다.
- 배열을 초기화 하는 과정으로 이중 for문을 이용하여 i는 학생이므로 3보다 작게, j는 세 과목을 입력해야 하므로 3보다 작게 선언한다.
- Scanner를 이용하여 arr[i][j]로 학생별 과목 입력을 키보드로 실행하고 입력받는다.
- 이제 총점을 입력받기 위해 총점은 arr[i][]의 arr[][3]에 위치하고 있으므로 arr[i][3] += arr[i][j] 로 선언한다.
- 평균을 입력받으려면 총점에서 /3을 해주면 되기 때문에 arr[i][4] = arr[i][3]/3 이다.
- 값을 다 구했으니 출력을 하기 위해 이중 for문을 이용하여 출력한다.
오늘 교육 간 느낀점
오늘 강의를 들으면서 생각한건 정말 어려운 부분이라는 것을 느꼈다. 강사님께서도 비전공자가 이해하기 굉장히 힘든 부분이라고 어제부터 누누이 말씀을 하셨는데 내심 “아무리 어렵다 한들 얼마나 어렵겠어..” 라고 생각했지만 어제부터 내 멘탈은 정상이 아니었고 오늘 정점을 찍었다. 정말 말씀하시는 하나하나가 다 의문점이었고 이해가 가지 않았다. 주말간 주변 지인과 검색을 통해 하나씩 해결하면서 배웠던 문제를 해결하고 다음 주를 맞이해야겠다고 느꼈다.
전공자가 오래한 걸 금방 따라잡으려는 욕심이 오히려 화를 불러 일으킨 것 같다. 열심히 4년을 공부 하면서 졸업한 분들을 초단기간 잡으려는건 생각을 가진다는 것 자체가 정말 이기적인 욕심이지만 내 자신은 그에 대한 상대적 열등감과 욕심이 있었기 때문에 계속 신경을 쓰는 것 같다. 못하는 것이 너무나도 당연한 것인데 말이다. 하지만 그 차이를 인정하고 조금이라도 빨리 줄여나가기 위해 입문자인 만큼 더 부단히 노력해서 차이를 좁혀나가야겠다.
'Review' 카테고리의 다른 글
KOSTA 교육 7일차(객체지향 , 생성자, 배열) (0) 2020.06.20 KOSTA 교육 6일차(객체지향, 생성자) (0) 2020.06.20 KOSTA 교육 4일차(Method, 배열) (0) 2020.06.20 KOSTA 교육 3일차(while, do~while, for, break, continue) (0) 2020.06.20 KOSTA 교육 2일차(변수, 데이터타입, 형변환, 연산자, if/else, switch) (0) 2020.06.20