자료구조 프로젝트 발표
10318 정원일
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
>>
목차
1
프로젝트 설명(주제) 및 개발동기
2
기본 로직 (+ 실행화면)
3
사용한 자료구조 (+ 코드 설명)
4
끝 (+ 느낀점)
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
프로젝트 설명
1
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
암호화폐 모의투자 CLI 프로그램
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
>>
왜 만들었을까
Part 1
CLI 프로그램
만들고 싶다
자료구조를
다양하게
사용 해야한다
C언어로 API를 사용하고 싶다
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
>>
왜 CLI 일까?
Part 1
직관적
가벼움
빠름
….
숙달된 사용자면
GUI보다 효율적으로
작업 가능
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
기본 로직
2
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
>>
프로그램 흐름 (유저)
Part 2
기존 계정 OR 새 계정 생성
입력받은 메뉴 실행
코인 조회, 매수, 매도, 포트폴리오 등
로그인 및 회원가입
메뉴 선택
메뉴 실행
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
>>
메뉴(내장기능들)
Part 2
암호화폐 시세 조회
매수
시가총액 순
9개만
시세 변동률, 가격 등
이름으로 매수
개수 지정 가능
매수시 가격 표시
포트폴리오
현재 잔고
구매한 암호화폐 수
코인마다 보유 수량
매도
이름으로 매도
개수 지정 가능
매도시 가격 표시
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
>>
코인 시세 조회
Part 2
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
>>
매수
Part 2
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
>>
매도
Part 2
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
>>
포트폴리오 확인
Part 2
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
사용한 자료구조
3
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
>>
DB 기능 (feat. 동적배열)
Part 3
동적배열 - init
초기 메모리 할당
capacity : 현재 얼마나
더 데이터를 넣을 수
있는지 지정
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
>>
DB 기능 (feat. 동적배열)
Part 3
동적배열 - 푸쉬백
동적배열 맨 뒤에 삽입
현재 저장공간이
부족하면 공간 2배
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
>>
DB 기능 (feat. 동적배열)
Part 3
동적배열 - 팝백
맨 뒤 데이터 삭제
데이터가 없으면 리턴
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
>>
DB 기능 (feat. 동적배열)
Part 3
회원가입
중복 확인
새 유저 객체 생성
동적 배열에 저장
파일에 세이브
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
>>
DB 기능 (feat. 동적배열)
Part 3
로그인
순차적으로
유저 닉네임 일치 확인
입력한 패스워드 해싱
기존 패스워드와 비교
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
>>
포트폴리오 확인 기능
Part 3
포트폴리오 확인
사용자 정보 출력
해시맵을 돌면서
코인 정보 출력
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
>>
매수 기능
Part 3
매수
구매수량 입력
빈 입력인지 확인
api로 코인 가격 요청
구매 확정
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
>>
매도 기능
Part 3
매수 & 매도 api
api GET 요청
응답 확인
JSON으로 파싱
krw 아이템 저장
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
>>
해시맵
Part 3
해시맵?
키 값을 배열의 인덱스로 바꿔서 O(1)의 속도로 탐색할 수 있는 자료구조
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
>>
해시맵
Part 3
해시맵 init
초기 저장 공간 할당
used와 key 세팅
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
>>
해시맵
Part 3
해시맵 해싱
이전까지 계산한
값에 31을 곱하고
새 문자 더하기
음수 보정
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
>>
해시맵
Part 3
해시맵 삽입
key를 해싱한다
해싱함수는 다른 값
넣어도 같은 값이
나올 수 있기에 충돌
검사
테이블을 순환하며
키가 있으면 값만
바꾼다
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
>>
해시맵
Part 3
해시맵 탐색
key를 해싱한다
테이블을 순환하며
키를 비교하여 같은
키의 값을 넘겨준다
보통 O(1) 근사
최악 O(n)
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
끝
4
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
- 코드를 1500줄 짜느라 힘들었다
- API 키를 숨겨서 실행파일에 넣어야 하는데 시간이 없어서 못했다
- .dat 파일 처리와 API 처리 부분이 많이 힘들었다
후기
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
Q&A
ⓒSaebyeol Yu. Saebyeol’s PowerPoint