객체 지향 프로그래밍을 향한 마지막 관문이다. reference는 object에 specific 한 개념은 아니지만, 종종 자주 쓰이기 때문에 알아두면 좋다. // By pointer void foo(int* num) { *num *= 2; } // By reference void foo(int& num) { num *= 2; } 어떤 변수의 값을 함수를 통해 변경하는 방법은 C를 이용한 포인터의 개념을 설명할 때 언급한 적이 있다. 바로 변수의 주소를 보내고, 그 주소를 역참조하여 변수의 값을 변경시키는 것이다. 이와 같이 포인터를 이용하여 주어진 변수의 값을 변경할 수도 있지만 reference를 이용하는 방법도 있다. 왜 두 가지 방법이 존재하는 걸까? 그리고 이들의 장단점은 뭘까? 포인터의 장점 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/KNMWQ/btsgmIv2GrP/0CKmcKbvaOVyAGHHbfqbE1/img.png)
지난 시간에 이어서 이번에도 주어진 csv 파일 속 데이터를 필터링 및 매핑하여 원하는 그래프(Stack Bar Chart)로 시각화해 보자. 주어진 데이터는 나라별/날짜별 인구수, 코로나 19 백신 접종자 수(부분 및 전체 포함), 코로나 19 백신 완전 접종자 수를 Key로 가지고 있다. 해당 데이터로 각 나라별 최신 정보 중 접종률이 가장 높은 국가 15개국을 부분/전체/인구수를 스택으로 담는 스택 바 차트로 표현해보려 한다. 주어진 조건은 다음과 같다. 1. 나라별 최신 데이터만을 사용(국가별 최신 정보가 달라도 좋다.) 2. 모든 인구가 접종한 경우는 제거(접종률이 100% 이상인 경우) 3. 접종률을 내림차순으로 정렬, 상위 15개 국가만을 필터링 이를 통해 표현하고자 하는 그래프는 다음과 같..
pointer, array, struct, enum, enum class... 이 정도만 하면 얼추 C++에서 객체 지향 프로그래밍을 하기 위한 준비는 끝마쳤다고 볼 수 있겠다. class에 관한 syntax는 OOP와 함께 다뤄볼 예정이다. 함수와 구조체를 사용하는 이유는 복잡한 반복되는 과정을 효율적으로 처리하기 위함이다. 이번 시간에는 주어진 입력이 정수, 실수, 허수인지를 알아서 분기하여 사칙연산을 수행할 수 있게 하는 계산기를 만들 예정이다. 더하기와 빼기는 비교적 쉬우므로, 곱하기와 나누기 정도만 구현해 보도록 하자. 1. 수를 담는 구조체 (타입은 enum으로 분기, union으로 한 수에는 하나의 타입 매칭) 2. 수를 로그에 출력하는 함수 3. 수의 실수 부분(real_component)..
지난 시간에 이어서 구조체를 활용한 다각형 둘레 구하기를 해보자. 구현에 필요한 조건은 다음과 같다. 1. 2차원 정수 좌표(x, y)를 요소로 갖는 point struct를 선언 2. 각 꼭짓점의 좌표 배열과 꼭짓점의 개수를 담은 polygon struct를 선언 3. polygon 내 배열의 좌표를 순차적으로 접근하며 변의 길이를 구하는 함수 구현 point struct point { double x, y; }; 좌표는 정수로 받지만 변의 길이는 실수가 나올 수 있으니 double로 선언한다. polygon struct polygon { point points[20]; size_t vertex; }; 최대 이십각형까지로 한다. vertex는 다각형의 꼭짓점의 개수를 의미한다. 두 좌표 간 거리 dou..
C++ 문법을 연습할 겸 두 날짜가 주어졌을 때 며칠이 차이 나는지를 계산할 수 있는 코드를 구현해보려 한다. 해당 조건에 맞춰 구현해 보자. 1. 당해 연도에서만, 그러므로 윤년 또한 고려해주지 않는다. 2. 월을 나타내는 enum class를 선언한다. 3. 해당 enum class와 날짜를 요소로 하는 struct를 선언한다. 4. 해당 월에 해당하는 날짜(28, 30, 31)를 반환하는 함수를 작성한다. 5. 해당 struct에 대한 메모리 주소를 인자로 받는 함수를 작성한다. enum class enum class month { jan, fab, mar, apr, may, jun, jul, aug, sep, oct, nov, dec }; enum class와 enum의 대표적인 차이는 예기치 못..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/y2llC/btsf3QiaIpa/5bZYdBbYjtCOkQAyTfrEZK/img.png)
D3로 데이터를 조작하다 보면, 이게 마치 SQL을 다루는 듯한 느낌이 든다. 그도 그럴 것이, 주어진 데이터를 가공하여 원하는 데이터만을 뽑아내는 과정도 비슷하고, select 같은 문법도 주로 쓰이기 때문이다.이번 시간에는 주어진 csv파일을 가공하여 2차원 그래프에 나타내 위와 같은 최종본을 완성시킬 것이다. 해당 그림은 예시이고, 필터링하는 부분에서 요구하는 조건이 살짝 다르다. csv파일은 country_code, country_name, year, value의 키 값으로 이루어진 딕셔너리를 요소로 가진 배열을 담고 있다. 학습 목표1. 국가별로 모아서(group) value의 최댓값과 최솟값을 차이를 구한다. 2. 최댓값과 최솟값의 차이가 큰 상위 다섯 국가를 고른다. 3. 년도별로 이들의 v..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cGsWPh/btr8LjDHv8P/U4LucJh6DiDKjggl1m1mJk/img.png)
HTML에서의 속성과 CSS의 스타일 D3에서 가장 중요한 특징 중 하나는 HTML에서의 attr와 CSS의 style을 동시에 사용할 수 있다는 점이다. 사용 문법은 다음과 같다. .attr("속성의 이름", "값"); .style("프로퍼티", "값"); 지난 시간 예제를 attr와 style을 이용해 꾸며보자. const provinces = ['AB', 'BC', 'MB', 'NB', 'NL', 'NT', 'NS', 'NU', 'ON', 'PE', 'QC', 'SK', 'YT']; // Append paragraphs and highlight one element let p = d3.select('body').selectAll('p') .data(provinces) .enter() .append(..
다양한 파일들에 들어있는 정보들을 시각화해서 보여줄 수 있는 자바스크립트 라이브러리인 D3.js를 사용해보려 한다. 폴더에는 index.html, main.js, d3.v6.min.js를 넣어주고, vscode로 index.html을 Live Server로 열어 실시간으로 화면을 테스트할 수 있게 해 주자. 초기 세팅 js 파일을 어디에도 불러와도 상관없긴 하다. 혹은 GitHub - dryjins/d3-starter-template Contribute to dryjins/d3-starter-template development by creating an account on GitHub. github.com 해당 링크에서 clone이나 내려받기를 해도 좋다. 아래서 다룰 내용 또한 해당 링크에서 다루는 ..
- Total
- Today
- Yesterday
- DFS
- SVG
- D3
- PS
- 보라매사옥
- how to start without storyboard
- 곱셈의 역원
- ios
- 파이썬
- SceneDelegate
- 백트래킹
- BOJ
- xcode
- 하노이탑이동순서
- 정보시각화
- pyrebase
- TIP
- c++
- Python
- Array
- CSV
- 자료구조
- how to remove border of tabbarcontroller
- 알고리즘
- DP
- HTML
- Javascript
- CSS
- 백준
- swift
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |