본문 바로가기

전체 글405

[C++] 프로그래머스 - 위장 (해시) 이번 포스팅에서는 프로그래머스의 위장 (해시) 문제를 다뤄보겠습니다. 해시 부분이 사실 직관적이고 다소 쉬운편인 것 같아서 C++ 연습하는 데 활용하고 있는데요. 그럼에도 불구하고 사소한 문법 하나하나가 생소하다보니 시간이 많이 걸리고 있네요. 문제 정의 스파이들은 매일 다른 옷을 조합하여 입어 자신을 위장합니다. 예를 들어 스파이가 가진 옷이 아래와 같고 오늘 스파이가 동그란 안경, 긴 코트, 파란색 티셔츠를 입었다면 다음날은 청바지를 추가로 입거나 동그란 안경 대신 검정 선글라스를 착용하거나 해야 합니다. (이하 생략) 접근방법 해시로 옷의 종류에 따른 수를 저장합니다. 옷의 종류는 key, 수는 value가 되겠습니다. 이 이후는 사실 수학적인 계산 정도인데요. 모든 아이템의 옷의 수, 즉 valu.. 2021. 12. 31.
[C++] 프로그래머스 - 베스트 앨범 (해시), sorting 이번 포스팅에서는 프로그래머스 코딩 테스트 중 해시 베스트 앨범에 대한 글입니다. 최근 C++을 공부하고 있는데 STL 라이브러리들을 사용하는 방식이 다소 생소하게 느껴지네요. 그간 python에서 얼마나 편하게 여러 기능들을 제공했었는지 새삼 깨닫고 있습니다. 문제 정의 (프로그래머스 사이트 발췌) 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. ["classic", "pop", "classic", "classic", "pop"] [500, 600, 150, 800, 2500] [4, 1, 3, 0] 입출력 예 설명 classic 장르는 1,450회 재생되었으며, classic .. 2021. 12. 30.
Self driving car - Particle Filter 파티클 필터 지난 칼만필터 포스팅에 이어, 이번 포스팅에서는 particle filter에 대해 다뤄보겠습니다. cs7638 과제를 하면서 가장 재밌고 직관적으로 다가왔던 필터이기도 합니다. 이번 포스팅도 cs7638 AI4R의 유다시티 강의와, Jonathan Hui의 글에서 번역하고 리소스들을 발췌해왔습니다. 자율주행자동차는 주행하면서 센서로부터 다양한 정보를 받습니다. 아마도 초당 어마어마한 데이터들을 수집하고 있을텐데, 그 중에는 분명 현재 자동차나 기타 오브젝트의 정확한 위치를 파악하기 위해 쓰이는 landmark 정보들이 있을 것입니다. 즉, 현재 측정되고 있는 랜드마크로부터의 거리나 관련 정보들을 참조해서 상세 위치 파악에 사용하는 것입니다. 칼만필터로 landmark와의 정보를 이용해서 위치를 찾는 방.. 2021. 12. 29.
Self Driving car - Kalman Filter 칼만 필터 이번 포스팅에서는 지난 학기 수강했던(Udacity) cs7838 (Artificial Intelligence for Robotics) 과목과 Jonathan Hui의 글을 번역하여 구성하였습니다. 모든 자료 위 강의와 포스팅에서 발췌했습니다. 대학교 시절, mpu6050 센서를 통해 각도를 계산하는 일이 필요했는데, 사람들이 칼만필터를 사용한다는 글을 본 적이 있습니다. 그 때는 칼만필터에 대한 이해가 전혀 없었던 시절이라 단순히 칼만 필터가 노이즈를 잡아준다고 생각했었는데요. 이번에 아주 깊게는 아니지만, 칼만 필터의 기초에 대해 공부하게 되면서 여러가지를 배우게 되어 내용을 기록하고자 합니다. 자율 주행의 주요 요소로는 Localization, Perception, Planning 등이 있습니다. .. 2021. 12. 28.
C, C++, Python, Java // Complie 언어, Interpreter언어 이번 포스팅은 순수하게 나를 위한 글. 흔히들 얘기하는 컴파일언어, 인터프리터 언어의 차이점이 뭔지, C++과 C의 차이점이 뭔지 등에 대해 생각해봤다. 먼저 c++은 절차지향적인 c대비 멀티 패러다임을 지원하는 언어다. 절차지향적이면서 객체지향적이고, 내가 느끼기엔 굉장히 짬뽕되어있는 언어. 그래서 더 어렵고 배울 것도 많고 고수가 별로 없다는 것 같다. 나는 아두이노부터 시작해서 제어기, OS IPC 등에서 보통 C로 공부를 했었다. 그 후 안드로이드 앱을 만들겠다고 Java를 공부했었다. C는 포인터 등을 통해 메모리에 직접 접근하는 굉장히 로우 레벨의 언어인 반면, 자바는 메모리까지는 관리안하는 것 같고.. 자동으로 처리해주는 영역이 많은 것 같았다. 객체지향적이기도 하고. 이번에 c++를 보게 .. 2021. 12. 26.
[C/C++] 네트워크 프로그래밍 (server, client, socket, ...) 기본적인 네트워크 프로그래밍 방식에 대해서는 Beej's Guide to Network Programming을 많이 참조하는 것 같습니다. 홈페이지에 전문이 소개되어 있기도하고, 수 많은 사람들이 Beej의 가이드를 보라고 얘기합니다. 언젠간 저도 정독해보는 걸로... 서버와 클라이언트는 소켓을 통해 통신합니다. 각각의 구동되는 방식에는 아래와 같은 차이점이 있습니다. 그림은 Beej의 가이드에서 퍼왔습니다. socket: 서버와 클라이언트 모두 생성이 필요합니다. 생성되는 소켓을 통해 정보를 주고 받을 수 있습니다. bind : 서버에서 port를 처리하기 위해 필요합니다. connect : 클라이언트에서 서버에 연결하기 위해 필요합니다. 커넥트를 통해 연결 여부를 확인할 수 있습니다. list.. 2021. 9. 9.