728x90

전체 글 637

Arduino] 3색 LED 사용하기

기본적으로 3색이라 하면 RED, GREEN, BLUE의 빛의 삼원색을 말한다.옆쪽에 FND와 연결된 기판은 이것저것 시도하고 있는 것이 있어 빵판에 그대로 둔 상태고,좌측에 물려 있는 LED가 바로 3색 LED다. 2초마다 각 LED를 작동시키는데빨강, 초록, 파랑, 노랑, 보라, 청록, 흰색, 꺼짐 순으로 작동한다. 빛의 3원색은 잘 조합하면, 노랑, 청록, 자홍색을 나타낼 수 있는데노랑의 경우 빨강과 초록,자홍은 빨강과 파랑,청록은 초록과 파랑이며흰색은 3색 모두 켜지면 나타난다. 반복문을 사용해 각 LED 값을 조정해주면 무드등을 만들 수도 있다. 12345678910111213141516171819202122232425262728293031323334353637383940int redPin = ..

Data Structure] 스택 클래스를 일반화한 제네릭 클래스

템플릿 이용해서 스택을 일반화해봤다. 클래스 활용도 연습을 해볼 겸, 템플릿 사용도 연습을 해볼 겸...다른 기능 없이 아주 일반적인 push, pop, 생성자만 구현했다.다음엔 리스트도 해볼 생각. #include using namespace std; template class Stack { int tos; T data[100]; public: Stack(); void push(T element); T pop(); }; template Stack::Stack() { tos = -1; } template void Stack::push(T element) { if (tos == 99) { cout

C] memset, memcmp

알고리즘 문제를 풀다보면, 새로운 값을 입력받을 때마다,임시적으로 사용했던 데이터들을 모두 갈아 엎고,메모리에 저장된 값을 특정한 값으로 일괄초기화를 해야 하는 경우가 생기는데,그럴 때마다 골치가 아팠는데 이럴 때 사용하기 좋은 메모리 조작 함수가 있다. memset, memcmp, memcpy, memmove는 string.h에 정의되어 있으며,memory.h에도 정의되어 있는데 이 때 memmove는 정의되어 있지 않으니,고민할 것 없이 string.h를 포함시키면 된다. 1. memset 함수 원형 1void * memset(void * ptr, int value, size_t num);cs 사용법memset(메모리 블럭 첫번째 주소, 문자(문자 하나), 메모리 블럭 크기(byte)) 활용자료형이 ..

C++] 다중상속(Multiple Inheritance)

Multiple Inheritance;다중상속 하나의 파생 클래스가 여러 클래스를 동시에 상속 받는 경우를 말하며,그 효용성에 비해 반대급부가 커서 사용하지 않는 편이며,C#, Java에서는 지원하지 않음. 여러 클래스를 상속받아 재사용과 효율을 높일 수 있겠지만,치명적인 문제를 가지고 있음 12345678910111213141516171819202122232425262728293031#include using namespace std;class BaseIO{public: int mode;};class In : public BaseIO{public: int readPos;};class Out : public BaseIO{public: int writePos;};class InOut : public In,..

C++] RTTI(Run-Time Type Information)

RTTI(Run-Time Type Information)실행 중 객체의 타입과 관련된 정보를 알아내는 기법실행 중 포인터가 가리키는 객체의 실제 타입을 알아야 하는 경우,클래스가 상속 관계에 있을 때 포인터가 가리키는 객체가 파생클래스의 객체인지기본클래스의 객체인지 판단해야 하는 경우, RTTI 기법을 이용해 알아낼 수 있다.RTTI 활용을 위해서는 typeinfo 헤더를 포함시켜야 함. type_info 클래스는 typeid 연산자에 의해 반환되는 정보로,타입 이름과 같은 타입에 관한 정보를 가진 클래스임 123456789class type_info{public: bool operator==(const type_info& rhs); bool operator!=(const type_info& rhs); ..

C,C++] cin/cout, scanf/printf

알고리즘 문제를 풀다 보면, Time Limit(시간 제한)에 대해서 신경 쓰지 않을 수가 없다.제한된 메모리에서 최대한 빠른 시간 내에 정확한 답을 찾는 것이 좋은 알고리즘이고,그렇지 못한 알고리즘은 TLE나 시간 초과 등을 이유로 답을 처리해주지 않는다. 입출력이 수천 번에 머무르면 시간 초과가 발생하면거의 대부분 알고리즘에 문제가 있지만,입출력이 수십만 개, 수백만 번에 이르면 이야기가 좀 다르다. 한 예를 들어서 설명을 해볼까 한다. https://www.acmicpc.net/problem/11004 백준 사이트의 11004번 : K번째 수라는 문제다.N개의 숫자들을 입력 받고 오름차순 정렬을 했을 때,K번째의 수를 출력하는 것이다. 문제는 되게 간단하다.입력 값이 5백만개에 이르며 숫자 중복도 ..

Algorithm] 동적계획법 - 편집 거리(Edit Distance)

문서 편집 시 삽입, 삭제, 대체 연산이 사용되며이 때 어떤 특정 문자열 S를 다른 문자열 S`으로 변환시키 과정에서 필요한최소 편집 연산 횟수를 편집 거리(Edit Distance)라고 한다. stable이라는 문자열을 strike로 바꾼다고 할 때를 생각해보자.여러 가지 방법이 존재한다. 첫 번째 방법은 s, t, e는 그대로 두고 ‘abl’을 삭제하고 ‘rik’를 삽입하는 방식으로,3회의 삭제 연산과 3회의 삽입 연산으로 총 6회의 편집 연산이 실행되었다. 두 번째 방법은, s, t, e를 그대로 사용하고 ‘abl’을 ‘rik’로 바꾸기만 하면 stable을 strike로 바꿀 수 있고,3번의 대체가 발생했기 때문에 이 때 총 3회의 편집 연산 실행되었다. 두 문자열을 바꾸는 데 필요한 편집 거리를..

Algorithm] KOI(한국정보올림피아드) 지역본선 - 탑

KOI 통신연구소는 레이저를 이용한 새로운 비밀 통신 시스템 개발을 위한 실험을 하고 있다. 실험을 위하여 일직선 위에 N개의 높이가 서로 다른 탑을 수평 직선의 왼쪽부터 오른쪽 방향으로 차례로 세우고, 각 탑의 꼭대기에 레이저 송신기를 설치하였다. 모든 탑의 레이저 송신기는 레이저 신호를 지표면과 평행하게 수평 직선의 왼쪽 방향으로 발사하고, 탑의 기둥 모두에는 레이저 신호를 수신하는 장치가 설치되어 있다. 하나의 탑에서 발사된 레이저 신호는 가장 먼저 만나는 단 하나의 탑에서만 수신이 가능하다. 예를 들어 높이가 6, 9, 5, 7, 4인 다섯 개의 탑이 수평 직선에 일렬로 서 있고, 모든 탑에서는 주어진 탑 순서의 반대 방향(왼쪽 방향)으로 동시에 레이저 신호를 발사한다고 하자. 그러면, 높이가 4..

스팀 게임 추천 – 3

Stanley Parable(스탠리 패러블) 스팀 정가로는 16000원에 판매되는 게임이지만,심심하면 세일하는 게임에 할인율도 80%나 되기 때문에3200원이면 구매해 즐길 수 있다는 큰 장점까지 갖추고 있어 추천하는 게임이다. 이 게임은 무언가를 강화하고 죽이고 하는 게임이 아니다.혼자 일터에 덩그러니 남겨진 스탠리가 되어,일터를 탈출할 수도 있고 자신이 있는 공간의 실체를 깨달을 수도 있는,그러니까 흔해 터졌던 일상의 진실을 파헤치는 형식의 게임이다. 모든 부분이 선택의 연속이고, 그 선택은 엔딩을 결정짓는 중요한 역할을 한다.몇 가지 엔딩을 보고 나면 일정한 패턴으로 반복되는 걸 깨닫고 나면,맨땅에 헤딩을 하던 게임 플레이 방식에서 벗어나주변을 좀 더 차분히 둘러보며 여러 방식을 시도하는 방식으로 ..

게임 2017.05.25
728x90