반응형

IT 프로그래밍 376

[C++] 백준 1316번 그룹 단어 체커

https://www.acmicpc.net/problem/1316 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때 www.acmicpc.net 코드 #include #include #include #include using namespace std; int main() { int n; cin >> n; string word; int count = 0; for (int i = 0; i > word; word.erase(unique(word.begin(), word.end()),..

[논리회로] 정논리 부논리

높은 전압 상태와 낮은 전압 상태의 논리값을 할당할 때 어느것을 0 혹은 1로 설정할지는 설계자의 선택에 따라 달려있습니다. 높은 전압 상태를 1의 논리값으로 할당하고 낮은 전압 상태를 0으로 하는 것을 정논리라고 합니다. 반대로 낮은 전압 상태를 1로 할당하고 높은 전압을 0으로 할당하는 것은 바로 부논리라고 합니다. 정논리와 부논리는 반대의 개념이지만 동일한 입력의 전압 레벨과 동일한 출력을 가지는 전압 레벨이 존재합니다. 정논리의 값과 부논리의 값이 같은 것은 바로 다음과 같습니다. 정논리 AND과 부논리 OR이 어떻게 같은지 보겠습니다. 정논리 AND A B F 0 0 0 0 1 0 1 0 0 1 1 1 부논리 OR A B F 1 1 1 1 0 1 0 1 1 0 0 0 여기서 부논리 OR과 NOR..

[논리회로] NAND 게이트 NOR, XOR, XNOR 게이트 설명

NAND 게이트의 기본 개념 [2입력] 입력이 모두 1인 경우에만 출력이 0이 되고, 그렇지 않은 경우에는 출력이 1이 됩니다. 이 게이트는 AND 게이트와는 반대로 작동하는 게이트로서, NOT AND 의미를 가지고서 NAND 게이트라고 부릅니다. NOR 게이트 입력이 모두 0인 경우에만 출력이 1이고, 입력에 1이 하나라도 있으면 출력이 0 XOR 게이트 입력에 1이 홀수 개면 출력 1, 짝수 개면 0 원래 F(출력) = A'*B + A*B' 로 계산해야 함 XNOR 게이트 입력 중 짝수 개의 1이 입력될 때 출력이 1이 되고, 그렇지 않은 경우에는 출력이 0이 됩니다. 출력값은 XOR 게이트에 NOT 게이트를 연결한 것이므로 XOR 게이트와 반대입니다. 2입력 XNOR의 게이트의 경우 두 개의 입력이..

[논리회로] 3상태 버퍼(3-STATE 버퍼)

3상태 버퍼란? 출력이 3개 레벨(High, Low, 하이 임피던스) 중의 하나를 갖는 논리 소자 여기서 하이 임피던스는 입력과 출력이 연결되어 있지 않은 상태입니다. 제어단자 E를 통해서 회로를 개폐합니다. E위에 바가 붙으면 Not를 의미합니다. 제어단자 E는 1일때 열리는데 ~E면 0일때 열리게 됩니다. 위의 그림처럼 제어단자가 Low(~E)일 때 동작은 이런 식으로 됩니다. 제어단자가 LOW가면 0에서 출력이 정상적으로 되므로 ~E가 0일때는 정상적으로 나오게 됩니다. 하지만 ~E 가 1일 때는 하이 임피던스가 발생하게 됩니다. 제어단자가 high 즉 E일때는 1이 나올 때 정상적으로 입력과 출력이 되므로 0과 1일 때 그대로 나오는 것을 볼 수 있습니다. 하지만 E가 0일 때는 출력이 되지 않는..

[논리회로] 패리티 비트(Parity Bit)

패리티 비트란? 정보의 전달 과정에서 오류가 생겼을 때 검사하기 위해 추가한 비트라고 생각하시면 됩니다. 전송하고자 하는 비트의 끝에 1을 더하여 전송하는 방법으로 2가지의 패리티 비트가 존재합니다(홀수 짝수) 짝수 패리티(even parity) : 데이터에서 1의 개수를 짝수 개로 맞춤 홀수 패리티(odd parity): 데이터에서 1의 개수를 홀수 개로 맞춤 이렇게 하면 하나만 바꿔주면 홀수, 짝수 패리티를 맞출 수 있기 때문에 이런 패리티를 사용하는 것입니다. 패리티함수는 전송 과정에서 에러 검사를 위한 추가비트이며 단지 에러 검출만 할 뿐, 여러 비트에 에러가 발생한 경우에는 검출이 안될 수도 있습니다. 데이터 짝수 패리티 홀수 패리티 A 0 1000001 1 1000001 B 0 1000010 ..

[논리회로] 그레이 코드

그레이 코드란? 자료를 표현하는 방식 중 하나이다. I/O A/D 변환기, 주변장치 등에서 숫자를 표현할 때 사용된다. -가중치가 없는 코드이기 대문에 연선에는 부적당하지만, 아날로그 디지털 변환기나 입출력 장치 코드로 주로 쓰이며 연속되는 코드들 간에 하나의 비트만 변화하여 새로운 코드가 된다 위 사진을 보면 알 수 있듯이 2진수의 경우 하나의 비트간에 하나의 비트만 다른 것이 아니지만 그레이 코드는 이웃하는 코드 간에 한 비트만 다릅니다. 2진 코드를 그레이 코드로 변환 방법 1) 2진 코드의 첫 번째 비트는 그대로 사용합니다. 2) 이후 두 번째 비트부터 앞 비트와의 xor값을 사용합니다. ps. xor은 둘 중 하나가 참이거나 거짓이면 참, 비교하는 둘 다 참이거나 거짓일 때 거짓이 나옵니다. 즉..

[C++] 멤버함수 혹은 메서드

클래스라는 것은 관련있는 데이터들을 하나의 단위로 묶어두기 위한 것입니다. 하지만 이것이 전부는 아닌데요. 서로 관련있는 데이터들 뿐만 아니라, 그 데이터와 관련이 깊은 함수들도 함께 묶어둘 수 있습니다. 이렇게 함으로써 코드의 응집도를 높이고 결합도를 낮출 수 있습니다. #include #include #include #include using namespace std; class Term { public: int coef; int expo; int calcTerm(int x) { return coef * pow(x, expo); } void printTerm() { cout

[C++]클래스와 객체

클래스의 등장 배경 전화번호부 프로그램을 만든다고 가정하면 한 사람의 이름과 전화번호는 항상 같이 붙어다녀야 하는 데이터입니다. 이 두 가지 데이터를 서로 별개의 변수에 저장하면 우리가 이름 데이터를 옮길 때마다 전화번호 데이터도 따로 옮겨줘야 합니다. 만약 각 사람에 대한 이름과 전화번호 뿐만 아니라 주소, 이메일 등 여러가지 데이터를 저장한다면 이 불편함은 더 심해질 것입니다. 인덱스 메이커 프로그램에서도 하나의 단어와 그 단어가 등장한 라인 번호들은 항상 같이 붙어다녀야 하는 데이터입니다. 이런 식으로 서로 관련있는 데이터를 하나의 단위로 묶는 것은 편할 것입니다. 이것이 클래스라는 개념이 등장하는 가장 기본적인 이유입니다. 예시코드 class SalesData { public: string isb..

[C++] Inline 함수 , 함수 오버로딩, typedef

inline 함수 inline함수는 함수를 빨리 쓰기 위해서 씁니다. 이 키워드를 함수 앞에 붙이면 컴파일러에게 해당 함수가 호출되는 곳에 함수의 코드를 직접 삽입하도록 지시하기 때문에 오버헤드를 줄이고 실행 시간을 줄여주는데요. 함수 호출을 수행하는 대신에 함수 내용이 호출 지점에 직접 삽입되면서 성능 향상을 가져올 수 있습니다. 짧은 코드로 이루어진 함수나 작은 규모에 함수에는 inline을 사용하는 것을 권장하지만 긴 함수는 성능을 저하할 수 있습니다. inline int min(int x, int y) { return x > y ? y : x; } int main() { cout

반응형