본문 바로가기

Developer/C, C++17

[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.
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.
[C/C++] C언어 파일 읽기쓰기 및 포인터 관리 최근 OS 강의를 시작하면서 기본적인 파일 입출력 코드를 짜는 일이 생겨서 정리하고자 합니다. C언어에 대해, 포인터 개념에 대해 warm up 형식으로 배우고 가는 취지로 간단하게 작성해봤습니다. 저처럼 c에 대해 이해도가 없는 분들께 도움이 되길 바라며... file 읽기 파일 읽기는 다음 코드와 같습니다. 1234567891011121314#define BUFFERSIZE 128 FILE* fp = fopen(filename, "r"); // read txt file char *buffer; // 메시지를 읽을 buffer int size; // size of the file fseek(fp, 0, SEEK_END); // move the pointer to the end size = ftell(f.. 2021. 9. 7.