본 영상은 2021-2 KMOOC-데이터엔지니어링 강의의 원본이며, 강좌 오픈 이후에는 질의 응답 채널으로 이용 예정입니다. 각 Topic에 질문 해주시면 가능한 답은 달아드리도록 하겠습니다.
강의노트 (SlideShare) - https://www.slideshare.net/ssuser4a9113
코드 (GitHub) - https://github.com/JaewookByun/data_engineering
총 11강
구성
- ArrayList 연산
- MyArrayList - 배열 기반 List interface 구현
- LinkedList 연산
- MyLinkedList - 참조 기반 List & Queue interfaces 구현
- HashSet/HashMap 연산
- Lambda Expression
- Stream - Open JDK 15에서 이용가능한 거의 대부분의 연산을 다루려고 노력함
데이터 분석 4 - 나만의 배열 기반 LIST, MyArrayList를 만들어보자Jaewook Byun
본 영상은 2021-2 KMOOC-데이터엔지니어링 강의의 원본이며, 강좌 오픈 이후에는 질의 응답 채널으로 이용 예정입니다. 각 Topic에 질문 해주시면 가능한 답은 달아드리도록 하겠습니다.
강의노트 (SlideShare) - https://www.slideshare.net/ssuser4a9113
코드 (GitHub) - https://github.com/JaewookByun/data_engineering
총 11강
구성
- ArrayList 연산
- MyArrayList - 배열 기반 List interface 구현
- LinkedList 연산
- MyLinkedList - 참조 기반 List & Queue interfaces 구현
- HashSet/HashMap 연산
- Lambda Expression
- Stream - Open JDK 15에서 이용가능한 거의 대부분의 연산을 다루려고 노력함
데이터 분석 6 - 나만의 배열 기반 LIST, MyLinkedList를 만들어보자Jaewook Byun
본 영상은 2021-2 KMOOC-데이터엔지니어링 강의의 원본이며, 강좌 오픈 이후에는 질의 응답 채널으로 이용 예정입니다. 각 Topic에 질문 해주시면 가능한 답은 달아드리도록 하겠습니다.
강의노트 (SlideShare) - https://www.slideshare.net/ssuser4a9113
코드 (GitHub) - https://github.com/JaewookByun/data_engineering
총 11강
구성
- ArrayList 연산
- MyArrayList - 배열 기반 List interface 구현
- LinkedList 연산
- MyLinkedList - 참조 기반 List & Queue interfaces 구현
- HashSet/HashMap 연산
- Lambda Expression
- Stream - Open JDK 15에서 이용가능한 거의 대부분의 연산을 다루려고 노력함
본 영상은 2021-2 KMOOC-데이터엔지니어링 강의의 원본이며, 강좌 오픈 이후에는 질의 응답 채널으로 이용 예정입니다. 각 Topic에 질문 해주시면 가능한 답은 달아드리도록 하겠습니다.
강의노트 (SlideShare) - https://www.slideshare.net/ssuser4a9113
코드 (GitHub) - https://github.com/JaewookByun/data_engineering
총 11강
구성
- ArrayList 연산
- MyArrayList - 배열 기반 List interface 구현
- LinkedList 연산
- MyLinkedList - 참조 기반 List & Queue interfaces 구현
- HashSet/HashMap 연산
- Lambda Expression
- Stream - Open JDK 15에서 이용가능한 거의 대부분의 연산을 다루려고 노력함
데이터 분석 5 - Java Collection Framework - LinkedList 파헤치기Jaewook Byun
본 영상은 2021-2 KMOOC-데이터엔지니어링 강의의 원본이며, 강좌 오픈 이후에는 질의 응답 채널으로 이용 예정입니다. 각 Topic에 질문 해주시면 가능한 답은 달아드리도록 하겠습니다.
강의노트 (SlideShare) - https://www.slideshare.net/ssuser4a9113
코드 (GitHub) - https://github.com/JaewookByun/data_engineering
총 11강
구성
- ArrayList 연산
- MyArrayList - 배열 기반 List interface 구현
- LinkedList 연산
- MyLinkedList - 참조 기반 List & Queue interfaces 구현
- HashSet/HashMap 연산
- Lambda Expression
- Stream - Open JDK 15에서 이용가능한 거의 대부분의 연산을 다루려고 노력함
데이터 분석 3 - Java Collection Framework와 ArrayListJaewook Byun
본 영상은 2021-2 KMOOC-데이터엔지니어링 강의의 원본이며, 강좌 오픈 이후에는 질의 응답 채널으로 이용 예정입니다. 각 Topic에 질문 해주시면 가능한 답은 달아드리도록 하겠습니다.
강의노트 (SlideShare) - https://www.slideshare.net/ssuser4a9113
코드 (GitHub) - https://github.com/JaewookByun/data_engineering
총 11강
구성
- ArrayList 연산
- MyArrayList - 배열 기반 List interface 구현
- LinkedList 연산
- MyLinkedList - 참조 기반 List & Queue interfaces 구현
- HashSet/HashMap 연산
- Lambda Expression
- Stream - Open JDK 15에서 이용가능한 거의 대부분의 연산을 다루려고 노력함
데이터 분석 4 - 나만의 배열 기반 LIST, MyArrayList를 만들어보자Jaewook Byun
본 영상은 2021-2 KMOOC-데이터엔지니어링 강의의 원본이며, 강좌 오픈 이후에는 질의 응답 채널으로 이용 예정입니다. 각 Topic에 질문 해주시면 가능한 답은 달아드리도록 하겠습니다.
강의노트 (SlideShare) - https://www.slideshare.net/ssuser4a9113
코드 (GitHub) - https://github.com/JaewookByun/data_engineering
총 11강
구성
- ArrayList 연산
- MyArrayList - 배열 기반 List interface 구현
- LinkedList 연산
- MyLinkedList - 참조 기반 List & Queue interfaces 구현
- HashSet/HashMap 연산
- Lambda Expression
- Stream - Open JDK 15에서 이용가능한 거의 대부분의 연산을 다루려고 노력함
데이터 분석 6 - 나만의 배열 기반 LIST, MyLinkedList를 만들어보자Jaewook Byun
본 영상은 2021-2 KMOOC-데이터엔지니어링 강의의 원본이며, 강좌 오픈 이후에는 질의 응답 채널으로 이용 예정입니다. 각 Topic에 질문 해주시면 가능한 답은 달아드리도록 하겠습니다.
강의노트 (SlideShare) - https://www.slideshare.net/ssuser4a9113
코드 (GitHub) - https://github.com/JaewookByun/data_engineering
총 11강
구성
- ArrayList 연산
- MyArrayList - 배열 기반 List interface 구현
- LinkedList 연산
- MyLinkedList - 참조 기반 List & Queue interfaces 구현
- HashSet/HashMap 연산
- Lambda Expression
- Stream - Open JDK 15에서 이용가능한 거의 대부분의 연산을 다루려고 노력함
본 영상은 2021-2 KMOOC-데이터엔지니어링 강의의 원본이며, 강좌 오픈 이후에는 질의 응답 채널으로 이용 예정입니다. 각 Topic에 질문 해주시면 가능한 답은 달아드리도록 하겠습니다.
강의노트 (SlideShare) - https://www.slideshare.net/ssuser4a9113
코드 (GitHub) - https://github.com/JaewookByun/data_engineering
총 11강
구성
- ArrayList 연산
- MyArrayList - 배열 기반 List interface 구현
- LinkedList 연산
- MyLinkedList - 참조 기반 List & Queue interfaces 구현
- HashSet/HashMap 연산
- Lambda Expression
- Stream - Open JDK 15에서 이용가능한 거의 대부분의 연산을 다루려고 노력함
데이터 분석 5 - Java Collection Framework - LinkedList 파헤치기Jaewook Byun
본 영상은 2021-2 KMOOC-데이터엔지니어링 강의의 원본이며, 강좌 오픈 이후에는 질의 응답 채널으로 이용 예정입니다. 각 Topic에 질문 해주시면 가능한 답은 달아드리도록 하겠습니다.
강의노트 (SlideShare) - https://www.slideshare.net/ssuser4a9113
코드 (GitHub) - https://github.com/JaewookByun/data_engineering
총 11강
구성
- ArrayList 연산
- MyArrayList - 배열 기반 List interface 구현
- LinkedList 연산
- MyLinkedList - 참조 기반 List & Queue interfaces 구현
- HashSet/HashMap 연산
- Lambda Expression
- Stream - Open JDK 15에서 이용가능한 거의 대부분의 연산을 다루려고 노력함
데이터 분석 3 - Java Collection Framework와 ArrayListJaewook Byun
본 영상은 2021-2 KMOOC-데이터엔지니어링 강의의 원본이며, 강좌 오픈 이후에는 질의 응답 채널으로 이용 예정입니다. 각 Topic에 질문 해주시면 가능한 답은 달아드리도록 하겠습니다.
강의노트 (SlideShare) - https://www.slideshare.net/ssuser4a9113
코드 (GitHub) - https://github.com/JaewookByun/data_engineering
총 11강
구성
- ArrayList 연산
- MyArrayList - 배열 기반 List interface 구현
- LinkedList 연산
- MyLinkedList - 참조 기반 List & Queue interfaces 구현
- HashSet/HashMap 연산
- Lambda Expression
- Stream - Open JDK 15에서 이용가능한 거의 대부분의 연산을 다루려고 노력함
2D 컴퓨터비젼에 대한 설명. 영상으로부터 정보를 추출해내는 공학/과학 분과인 컴퓨터비젼의 기술에 대한 쉬운 설명. 파이썬(Python)의 컴퓨터비젼/영상처리 라이브러리인 scikit-image를 주로 활용하였으며 코드를 함께 담음.
R컨퍼런스 발표본 (2014.5.30) 임.
오픈서베이의 새로운 결과 분석 서비스인 오픈애널리틱스를 개발하던 중 발생한 자바 메모리 이슈를 계기로 미시적 관점에서 JVM 메모리 할당을 분석/정리했습니다.
구체적으로, Integer / Long 등의 Object 형 타입과, ArrayList, / LinkedList / Set 등의 자료구조의 메모리 사용을 JDK코드 분석과 각종 도구를 통해 측정하고, 이를 효과적으로 사용하기 위한 방법을 탐구합니다.
2시간만에
자바 데이터처리를
쉽게 배우고 싶어요.
가위,바위,보와 승률 (난수와 배열, ArrayList)
주머니속의 데이터 (HashMap)
데이터 다루기 (Sort, Collection Framework)
데이터를 두고보자 (Database와 SQL)
자바로 데이터베이스 사용하기 (JDBC)
JDBC를 조금 더 편하게 (MyBatis)
2D 컴퓨터비젼에 대한 설명. 영상으로부터 정보를 추출해내는 공학/과학 분과인 컴퓨터비젼의 기술에 대한 쉬운 설명. 파이썬(Python)의 컴퓨터비젼/영상처리 라이브러리인 scikit-image를 주로 활용하였으며 코드를 함께 담음.
R컨퍼런스 발표본 (2014.5.30) 임.
오픈서베이의 새로운 결과 분석 서비스인 오픈애널리틱스를 개발하던 중 발생한 자바 메모리 이슈를 계기로 미시적 관점에서 JVM 메모리 할당을 분석/정리했습니다.
구체적으로, Integer / Long 등의 Object 형 타입과, ArrayList, / LinkedList / Set 등의 자료구조의 메모리 사용을 JDK코드 분석과 각종 도구를 통해 측정하고, 이를 효과적으로 사용하기 위한 방법을 탐구합니다.
2시간만에
자바 데이터처리를
쉽게 배우고 싶어요.
가위,바위,보와 승률 (난수와 배열, ArrayList)
주머니속의 데이터 (HashMap)
데이터 다루기 (Sort, Collection Framework)
데이터를 두고보자 (Database와 SQL)
자바로 데이터베이스 사용하기 (JDBC)
JDBC를 조금 더 편하게 (MyBatis)
[ http://infiniflux.com/download ]
The world's fastest time series DBMS.
What is InfiniFlux?
1) InfiniFlux is a time-series database which performs real-time data processing, i.e., data are inserted at high speed, retrieved and analyzed without elapsed time.
2) InfiniFlux also compresses and stores data in real-time. Its query language and syntax complies with the SQL standard. The extended SQL syntax provides additional features such as the text search tool.
– Elastic stack과 Data pipeline의 개념
– 데이터의 종류와 형태 / Document 데이터 모델링 (mapping, data type)
– 분산 데이터 저장소 관점에서의 Elasticsearch (index, shard & replica, segment)
https://learningspoons.com/course/detail/elastic-stack/
[소스 코드]
https://github.com/kyuuuunmi/DataStructure_TREE
[설명]
대학생 연합 IT 벤처 창업 동아리 S.O.P.T (Shout Our Passion Together - http://sopt.org) 에서 내부적으로 진행하는 전공 과목 기초 스터디 자료입니다.
이번주에 다룬 내용은 이진 트리 및 우선순위 큐에 대한 내용입니다.
스터디 자료는 다음과 같은 순서대로 올라갈 예정입니다.
1. 데이터 구조 및 알고리즘
2. 운영체제
3. 네트워크
[소스 코드]
https://github.com/donghyundonghyun/Sorting
https://github.com/henlix/counting-sort
[설명]
대학생 연합 IT 벤처 창업 동아리 S.O.P.T (Shout Our Passion Together - http://sopt.org) 에서 내부적으로 진행하는 전공 과목 기초 스터디 자료입니다.
이번주에 배운 내용은 대학 서적에서 주로 다루는 정렬 (기본, 효율, 초효율) 에 대한 것입니다.
스터디 자료는 다음과 같은 순서대로 올라갈 예정입니다.
1. 데이터 구조 및 알고리즘
2. 운영체제
3. 네트워크
1. DataAnalysis
(Lecture 2 - Motivation)
1
Jaewook Byun
Ph.D. Assistant Professor, Department of Software, Sejong University
Associate Director, Auto-ID Labs, Korea
jwbyun@sejong.ac.kr , bjw0829@gmail.com
https://sites.google.com/view/jack-dfpl/home
2. 목차
• 간단한 실 세계 데이터 분석 수행
• 데이터 구조 사용의 필요성 이해
• 적절한 데이터 구조 사용의 필요성 이해 – 리스트
• 적절한 데이터 구조 사용의 필요성 이해 – 해시
• 적절한 데이터 구조 사용의 필요성 이해 – 트리
2
3. 실 세계 데이터셋 추출 및 모델링 실습
• 간단한 분석 수행
1. 줄 수 구하기
• line이라는 변수를 0으로 두고
• 파일의 줄을 읽을 때 마다 line을 하나씩 늘려 줌
• 예제의 답: 11
3
# Directed graph (each unordered…
# Email network of a large Europe…
# Nodes: 265214 Edges: 420045
# FromNodeId ToNodeId
0 1
0 2
0 4
1 3
2 5
3 1
3 4
0이 1에게 메일을 보낸 이벤트
d:email.txt 예제
4. 실 세계 데이터셋 추출 및 모델링 실습
• 간단한 분석 수행
1. 줄 수 구하기
• 유튜브: https://youtu.be/9I9TzDa__so
4
5. 실 세계 데이터셋 추출 및 모델링 실습
• 간단한 분석 수행
2. 이벤트의 수 구하기
• 줄 수를 구할 때 #로 시작되는 줄에서는 line을 늘려주지 않음
• 예제의 답: 7
5
# Directed graph (each unordered…
# Email network of a large Europe…
# Nodes: 265214 Edges: 420045
# FromNodeId ToNodeId
0 1
0 2
0 4
1 3
2 5
3 1
3 4
0이 1에게 메일을 보낸 이벤트
d:email.txt 예제
6. 실 세계 데이터셋 추출 및 모델링 실습
• 간단한 분석 수행
2. 이벤트의 수 구하기
• 유튜브: https://youtu.be/3Cr3YS_2DPw
6
7. 실 세계 데이터셋 추출 및 모델링 실습
• 간단한 분석 수행
3. 최소 사람 ID를 구하기
• min이라는 변수를 아주 큰 수로 두고
• 각 줄마다 확인되는 ID가 min보다 작으면 갱신
7
# Directed graph (each unordered…
# Email network of a large Europe…
# Nodes: 265214 Edges: 420045
# FromNodeId ToNodeId
0 1
0 2
0 4
1 3
2 5
3 1
3 4
0이 1에게 메일을 보낸 이벤트
d:email.txt 예제
8. 실 세계 데이터셋 추출 및 모델링 실습
• 간단한 분석 수행
3. 최소 사람 ID를 구하기
• 유튜브: https://youtu.be/ayniDgWBktQ
8
9. 실 세계 데이터셋 추출 및 모델링 실습
• 간단한 분석 수행
4. 최대 사람 ID를 구하기
• max라는 변수를 아주 작은 수로 두고
• 각 줄마다 확인되는 ID가 max보다 크면 갱신
9
# Directed graph (each unordered…
# Email network of a large Europe…
# Nodes: 265214 Edges: 420045
# FromNodeId ToNodeId
0 1
0 2
0 4
1 3
2 5
3 1
3 4
0이 1에게 메일을 보낸 이벤트
d:email.txt 예제
10. 실 세계 데이터셋 추출 및 모델링 실습
• 간단한 분석 수행
4. 최대 사람 ID를 구하기
• 유튜브: https://youtu.be/jLa_NYYxE78
10
11. 데이터 구조 사용의 필요성
• 간단한 분석 수행
• 파일을 4번 읽어 다음의 분석 수행
1. 줄 수 구하기
2. 이벤트의 수 구하기
3. 최소 사람 ID를 구하기
4. 최대 사람 ID를 구하기
11
email.txt
파일시스템
분석1
분석2
분석3
분석4
12. 데이터 구조 사용의 필요성
• 간단한 분석 수행
• 파일을 4번 읽어 다음의 분석 수행
• 유튜브: https://youtu.be/P9C8ZQp-YrA
12
13. 데이터 구조 사용의 필요성
• Data Structure(데이터 구조)의 필요성
• Data Structure: 효율적인 접근 조작을 가능하게 하는 데이터 조직/관리/저장 구조
• Array(배열)
• Homogeneous(동종)한 Value(값)의 모음
• int 모음, bool 모음, String 모음, Object 모음
• 연속된 메모리 공간에 고정된 개수의 Value들을 저장
• Index에 의해 Value를 GET 혹은 SET 할 수 있음
13
int[] GET
int[] array = new int[5];
array[0] 1 2 3 4 5
array[1]
array[2]
array[3]
array[4]
첫 인덱스
length 5의 Array
14. 데이터 구조 사용의 필요성
• Data Structure(데이터 구조)의 필요성
• Data Structure: 효율적인 접근 조작을 가능하게 하는 데이터 조직/관리/저장 구조
• Array(배열)
• Homogeneous(동종)한 Value(값)의 모음
• int 모음, bool 모음, String 모음, Object 모음
• 연속된 메모리 공간에 고정된 개수의 Value들을 저장
• Index에 의해 Value를 GET 혹은 SET 할 수 있음
14
int[] (Reference type)
int[] array = new int[5]; 0 0 0 0 0
15. 데이터 구조 사용의 필요성
• Data Structure(데이터 구조)의 필요성
• Data Structure: 효율적인 접근 조작을 가능하게 하는 데이터 조직/관리/저장 구조
• Array(배열)
• Homogeneous(동종)한 Value(값)의 모음
• int 모음, bool 모음, String 모음, Object 모음
• 연속된 메모리 공간에 고정된 개수의 Value들을 저장
• Index에 의해 Value를 GET 혹은 SET 할 수 있음
15
int[] SET
int[] array = new int[5];
array[0] = 1;
1 0 0 0 0
16. 데이터 구조 사용의 필요성
• Data Structure(데이터 구조)의 필요성
• Data Structure: 효율적인 접근 조작을 가능하게 하는 데이터 조직/관리/저장 구조
• Array(배열)
• Homogeneous(동종)한 Value(값)의 모음
• int 모음, bool 모음, String 모음, Object 모음
• 연속된 메모리 공간에 고정된 개수의 Value들을 저장
• Index에 의해 Value를 GET 혹은 SET 할 수 있음
16
int[] SET
int[] array = new int[5];
array[0] = 1;
array[1] = 2;
array[2] = 3;
array[3] = 4;
array[4] = 5;
1 2 3 4 5
17. 데이터 구조 사용의 필요성
• Data Structure(데이터 구조)의 필요성
• Data Structure: 효율적인 접근 조작을 가능하게 하는 데이터 조직/관리/저장 구조
• Array(배열)
• Homogeneous(동종)한 Value(값)의 모음
• int 모음, bool 모음, String 모음, Object 모음
• 연속된 메모리 공간에 고정된 개수의 Value들을 저장
• Index에 의해 Value를 GET 혹은 SET 할 수 있음
17
int[] GET
int[] array = new int[5];
array[0] 1 2 3 4 5
array[1]
array[2]
array[3]
array[4]
18. 데이터 구조 사용의 필요성
• Data Structure(데이터 구조)의 필요성
• Data Structure: 효율적인 접근 조작을 가능하게 하는 데이터 조직/관리/저장 구조
• Array(배열)
• Homogeneous(동종)한 Value(값)의 모음
• int 모음, bool 모음, String 모음, Object 모음
• 연속된 메모리 공간에 고정된 개수의 Value들을 저장
• Index에 의해 Value를 GET 혹은 SET 할 수 있음
18
int[] 순회 방법
for(int index = 0 ; index < array.length ; index++)
System.out.println("array["+index+"]value:"+array[index]);
for(int value : array)
System.out.println(value);
19. 데이터 구조 사용의 필요성
• Array를 이용한 데이터 재사용 실습
• Email[]에 데이터 셋을 적재하여 재사용
• 공간: 파일 시스템 > 메모리
• 속도: 메모리 > 파일 시스템
• 유튜브: https://youtu.be/mBAWGfTdCZw
19
20. 적절한 데이터 구조 사용의 필요성 - 리스트
• List(리스트) 자료구조의 필요성
• Array(배열)
• Homogeneous(동종)한 Value(값)의 모음
• 연속된 메모리 공간에 고정된 개수의 Value들을 저장
• Index에 의해 Value를 GET 혹은 SET 할 수 있음
• 적절한 배열 크기는?
20
new Email[100000];
이벤트
420045개
부족
new Email[999999];
공간낭비
21. 적절한 데이터 구조 사용의 필요성 - 리스트
• List(리스트) 자료구조의 필요성
• 편리성: 길이가 자유로운 가변 데이터 구조를 통해 원 자료를 순서대로 저장
• 효율성: 데이터 크기의 변화에 따른 적절한 크기를 효율적으로 관리함
21
Head
8 1 9
6
22. 적절한 데이터 구조 사용의 필요성 – 해시
• 간단한 데이터 분석
5. 265213이라는 ID가 있는지 확인하기
• 접근 방법
• Email[]을 순회하며, 265213이 발견되면 “발견"을 출력하고 종료
22
23. 적절한 데이터 구조 사용의 필요성 – 해시
• 간단한 데이터 분석
5. 265213이라는 ID가 있는지 확인하기
• 유튜브: https://youtu.be/Cfc_f7EsRts
23
24. 적절한 데이터 구조 사용의 필요성 – 해시
• 간단한 데이터 분석
6. 이메일을 보낸 사람의 수 구하기
• 풀이 방법
1. ID를 중복없이 유지할 충분한 크기의 Integer[] senders 생성
2. Email[]을 순회하며, 각 ID에 대해 ID가 senders에 존재하지 않는 다면 추가
3. Email[]의 순회가 종료되었을 때, senders는 중복되지 않는 ID를 담고 있음. senders에서
null을 제외한 값의 수가 답
24
Integer[] senders = new Integer[999999];
null null null null null null null null null null
Integer[] Email
0 0 0 1 1 1 3 3 5 10
~ null null
265212 265213
~
25. 적절한 데이터 구조 사용의 필요성 – 해시
• 간단한 데이터 분석
6. 이메일을 보낸 사람의 수 구하기
• 풀이 방법
1. ID를 중복없이 유지할 충분한 크기의 Integer[] senders 생성
2. Email[]을 순회하며, 각 ID에 대해 ID가 senders에 존재하지 않는 다면 추가
3. Email[]의 순회가 종료되었을 때, senders는 중복되지 않는 ID를 담고 있음. senders에서
null을 제외한 값의 수가 답
25
Integer[] senders
0 null null null null null null null null null
Integer[] Email
0 0 0 1 1 1 3 3 5 10
~ null null
265212 265213
~
0 1 null null null null null null null null ~ null null
0 1 3 null null null null null null null ~ null null
26. 적절한 데이터 구조 사용의 필요성 – 해시
• 간단한 데이터 분석
6. 이메일을 보낸 사람의 수 구하기
• 풀이 방법
1. ID를 중복없이 유지할 충분한 크기의 Integer[] senders 생성
2. Email[]을 순회하며, 각 ID에 대해 ID가 senders에 존재하지 않는 다면 추가
3. Email[]의 순회가 종료되었을 때, senders는 중복되지 않는 ID를 담고 있음. senders에서
null을 제외한 값의 수가 답
26
Integer[] senders
0 1 3 5 10 null null null null null ~ null null
….
0 1 3 5 10 11 12 14 15 16 ~ 265212 265213
Integer[] senders
27. 적절한 데이터 구조 사용의 필요성 – 해시
• 간단한 데이터 분석
6. 이메일을 보낸 사람의 수 구하기
• 유튜브: https://youtu.be/a8lrjUKVCak
27
28. 적절한 데이터 구조 사용의 필요성 - 해시
• Hash(해시) 자료구조의 필요성
• 간단한 분석 5,6
• 5번 문제: 빠른 탐색의 필요성
• 6번 문제: 중복 제거의 필요성
28
KEY
DATA
Hash 함수
KE
Y
DATA
29. 적절한 데이터 구조 사용의 필요성 - 트리
• 간단한 데이터 분석
7. 100000의 다음 ID 찾기
• 접근 방법
1. 해당 ID를 유지할 int higher를 아주 큰 수로 초기화 한다.
2. Email[]을 순회하며, 각 ID에 대해 100000보다 크면서 higher 보다 작은 수가 발견되면, 갱
신한다.
3. 순회가 종료된 후, higher 의 값이 100000의 다음 값이다.
29
30. 적절한 데이터 구조 사용의 필요성 - 트리
• 간단한 데이터 분석
7. 100000의 다음 ID 찾기
• 유튜브 - https://youtu.be/vYbXHJKnhEg
30
31. 적절한 데이터 구조 사용의 필요성 - 트리
• 간단한 데이터 분석
8. 100000의 이전 ID 찾기
• 접근 방법
1. 해당 ID를 유지할 int lower를 아주 작은 수로 초기화 한다.
2. Email[]을 순회하며, 각 ID에 대해 100000보다 작으면서 lower 보다 큰 수가 발견되면, 갱
신한다.
3. 순회가 종료된 후, lower 의 값이 100000의 이전 값이다.
31
32. 적절한 데이터 구조 사용의 필요성 - 트리
• 간단한 데이터 분석
8. 100000의 이전 ID 찾기
• 유튜브 - https://youtu.be/9JbrvpKENlw
32
33. 적절한 데이터 구조 사용의 필요성 - 트리
• Tree(트리) 자료구조의 필요성
• 간단한 분석 7,8
• Key 간의 전후 관계를 효율적으로 유지할 수 있는 데이터 구조의 필요성
33
8
3 10
1 6
4 7
14
13
Key DATA
최소값 최대값
8의 다음값
`