-
[자료구조][배열] 코딩테스트, 정보처리기사를 위한 기초 1코딩테스트 2023. 7. 8. 09:15
- 시작하며
개발자의 길을 걷고자 했다면 무시할 수 없는 관문 아닌 관문들이 있다. 네카라쿠배 나 중견 이상의 대기업들을 도전하고자 한다면 당연 코테를 통해 적정성을 통과해야 하고, 프리랜서 시장에서의 정보처리기사는 당연히 있어야 하는 것 중에 하나가 되었다.
어떤 학문이든 기초가 탄탄해야 하는 법이다. 코테를 준비하는 것도, 정보처리기사를 또다시 취득하려고 하는 것도 아니지만 기본기를 다시 다진다는 마음으로 공부에 임하고자 한다.
모든 내용은 초등학생도 이해 가능 할 수준으로 설명하고자 노력하였다 :)
- 배열이란?
- 동일한 자료형(문자, 숫자, 실수등)을 연속된 공간에 저장하여 사용하기 위한 자료 구조이다.
- 동일 자료형을 효율적으로 관리하기 위해 사용하며, 하나의 그룹으로 지정하여 관리가 가능하다.
철수는 3학년 1반 반장이다. 현장 학습을 위해 반 애들과 회의를 하였다. 총 10명의 학생이 있어 2개 조로 구성하기로 하였다.
A조 = [민우, 마리, 동우, 제인, 수연]
B조 = [언년, 정우, 길동, 홍년, 워니]
이렇게 조를 구성 하였다고 할 때 A조, B조를 배열이라 생각하면 쉽다.- 자바 배열 예시
public class Main { public static void main(String[] args) { String[] aGroup = {"민우","마리","동우","제인","수연"}; String[] bGroup = {"언년","정우","길동","홍년","워니"}; //Arrays.toString 은 java.util 패키지에서 지원하는 클래스로 배열 데이터를 문자열로 출력 하도록 해준다. System.out.println("aGroup : " + Arrays.toString(aGroup)); System.out.println("bGroup : " + Arrays.toString(bGroup)); } } /** 결과 - aGroup : [민우, 마리, 동우, 제인, 수연] bGroup : [언년, 정우, 길동, 홍년, 워니] */
- 장점
- 순자적으로 저장되어 있는 구조이기 때문에 인덱스 번호를 통해 특정 위치로 빠르게 접근 가능하다.
A조를 보면 3번째에 동우가 있다. 5번째에 수연이 있다 이런 식으로 순번을 통해 몇 번째에 누가 있는지 알 수 있다.
위 예시를 프로그래밍적 관점에서 본다면 3번째에 동우가 아니라 2번째의 동우로 봐야 한다. 왜냐하면 배열의 인덱스 번호는 1번부터 시작하는 게 아니라 0번부터 시작하기 때문이다.- 자바 배열 장점 예시
public class Main { public static void main(String[] args) { String[] aGroup = {"민우","마리","동우","제인","수연"}; System.out.println("aGroup 0번: " + aGroup[0]); System.out.println("aGroup 1번: " + aGroup[1]); System.out.println("aGroup 2번: " + aGroup[2]); System.out.println("aGroup 3번: " + aGroup[3]); System.out.println("aGroup 4번: " + aGroup[4]); } } /** 결과 - aGroup 0번: 민우 aGroup 1번: 마리 aGroup 2번: 동우 aGroup 3번: 제인 aGroup 4번: 수연 */
- 단점
- 무작위로 저장되어 있는 배열을 특정 기준으로 정렬할 때 많은 시간이 소요된다.
- 배열은 지정된 사이즈 이상으로 저장하고 자 한다면 추가로 생성해야 한다.
- 데이터를 특정 위치에 추가하거나 삭제할 때 복잡도가 크다.
B조의 길동이가 갑자기 참석 못한다고 한다. 명단에서 길동이를 찾아 지우면 간단하지만 배열에서의 해당 삭제 작업은 좀 더 추가적인 작업들이 필요하다.
[as is]
B조 = [언년, 정우, 길동, 홍년, 워니]
[to be]
B조 = [언년, 정우, 홍년, 워니]
위 예시를 프로그래밍적 관점에서 본다면
1. 기존 2번째에 있는 길동이를 지운다.
B조 = [언년, 정우, null, 홍년, 워니]
2. 3번째에 있던 홍년이를 2번째로 이동한다.
B조 = [언년, 정우, 홍년 , null, 워니]
3. 4번째에 있던 워니를 3번째로 이동한다.
B조 = [언년, 정우, 홍년 , 워니, null]
✵ null은 아무 값도 없는 걸 뜻한다.- 자바 배열 단점 예시
public class Main { public static void main(String[] args) { String[] bGroup = {"언년","정우","길동","홍년","워니"}; //1. 기존 2번째에 있는 길동이를 지운다. bGroup[2] = null; System.out.println("aGroup : " + Arrays.toString(bGroup)); //2. 3번째에 있던 홍년이를 2번째로 이동한다. bGroup[2] = bGroup[3]; bGroup[3] = null; System.out.println("aGroup : " + Arrays.toString(bGroup)); //3. 4번째에 있던 워니를 3번째로 이동한다. bGroup[3] = bGroup[4]; bGroup[4] = null; System.out.println("aGroup : " + Arrays.toString(bGroup)); } } /** 결과 - aGroup : [언년, 정우, null, 홍년, 워니] aGroup : [언년, 정우, 홍년, null, 워니] aGroup : [언년, 정우, 홍년, 워니, null] */
다음 시간에는 배열 보다 쉽게 사용 가능한 ArrayList에 대해 알아보자.
끝 :)
'코딩테스트' 카테고리의 다른 글
[자료구조][이중 연결 리스트] 코딩테스트, 정보처리기사를 위한 기초 6 (0) 2024.01.26 [자료구조][단일 연결 리스트] 코딩테스트, 정보처리기사를 위한 기초 5 (1) 2024.01.26 [자료구조][스택] 코딩테스트, 정보처리기사를 위한 기초 4 (2) 2024.01.25 [자료구조][큐] 코딩테스트, 정보처리기사를 위한 기초 3 (1) 2024.01.25 [자료구조][List] 코딩테스트, 정보처리기사를 위한 기초 2 (0) 2023.07.15