분류 전체보기 485

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

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

[논리회로] 2진수 음수 표현법 부호의 절대치 1의보수, 2의보수

0000(2) = 0 0001(2) = 1 0010(2) = 2 0011(2) = 3 0100(2) = 4 ⋮ 1110(2) = 14 1111(2) = 15 이것이 2진수의 표현법입니다. 하지만 이런 2진수에서큰 문제점이 하나 있다면 바로 음수의 표현법인데요. 음수를 표현하기에 애매합니다. 그래서 음수를 표현할 때에는 총 3가지 방법을 쓰는데요. 바로 부호의 절대치와 1의보수, 2의보수가 있습니다. 부호의 절대치 부호 비트만 양수와 음수를 나타내고 나머지 비트들은 같습니다. 5의 절대치는 다음과 같습니다. 5(10) = 0000 0000 0000 0000 0000 0000 0000 0101(2) 여기에서 -5를 표현하고 싶다면 최상위 비트가 0일때는 양수, 1일때는 음수를 사용합니다. -5(10) = 1..

[논리회로] 진법(2진수, 16진수, 8진수, 10진수)

진법 소개 10진수 2진수 8진수 16진수 0 0000 00 0 1 0001 01 1 2 0010 02 2 3 0011 03 3 4 0100 04 4 5 0101 05 5 6 0110 06 6 7 0111 07 7 8 1000 10 8 9 1001 11 9 10 1010 12 A 11 1011 13 B 12 1100 14 C 13 1101 15 D 14 1110 16 E 15 1111 17 F 이런식으로 각 진법을 바꿔줄 수 있습니다. 8진수는 0~7까지의 8개의 수로 표현을 한 것이며 16진수는 0~9 그리고 A~F까지의 16개의 기호로 표현한 것입니다. 각 진수의 변환 1) 2진수 - 10진수 간 상호 변환 2진수의 각 비트별 가중치를 구하여 모두 더한다. ex) 110010.011 = 1 * 2^5..

[이산수학] 조건문의 진리표 p -> q의 진리표

p q p -> q T T T T F F F T T F F T p -> q의 진리표를 처음부터 완벽히 이해하는 사람은 없을 것입니다. p가 F면 q의 진리값과 상관없이 왜 p -> q는 t일까? 이런 질문을 할 것으로 보이는데요. 논리학에서는 전제가 거짓이면 결론의 값과 상관없이 참이라고 간주합니다. 모든 명제는 참이거나 거짓입니다. p -> q의 진리값도 반드시 참 혹은 거짓이어야 하는데요. 하지만 가정부터 거짓이라면 우리는 결론을 단정지을 수 없습니다. 하지만 이런 경우라도 반드시 진리값은 정해져야 하기 때문에 이를 우리는 T로 하자고 약속을 한 것입니다. 예시 P : 내일 비가 오면 Q : 소풍을 가지 않는다. 이런 조건문이 있습니다. p -> q는 참인 것을 아실 수 있을 것입니다. 그런데 내일 ..

[이산수학] 역, 이 , 대우

논리적 동치 -p와 q가 n개의 명제들 p1,p2....pn으로 구성된 복합명제라고 하자. p1,p2,...pn의 어떤 진리값들이 주어졌을 때, 두 복합 명제 p와 q가 항상 같은 진리값을 가질 경우, p와 q는 논리적 동치라고 한다. p ≡ q or pq 라고 표기한다. 명제의 역, 이, 대우 p -> q에서 조건 p를 가정, 조건 q를 결론이라고 합니다. p와 q를 바꾸면 q -> p가 되는데 이것을 명제의 역이라고 합니다. p -> q를 부정하면 ~p -> ~q가 되는데 이것을 명제의 이라고 합니다. 가정과 결론도 바꾸고 부정도 하면 ~q -> ~p 가 되는데 이것이 바로 명제의 대우입니다. 예시 p : 날씨가 맑아지면 q : 소풍을 간다. 역 ( q -> p) : 소풍을 가면 날씨가 맑아진다. 이..

[이산수학] 명제 조건명제 진리지표 필요조건 충분조건

명제 - 참 또는 거짓 중 하나로 파정될 수 있는 선언적 문장 - 논리학의 기본 구성 요소 p와 q가 명제이면 논리연산자를 사용하여 새로운 복합명제를 만들 수 있다. 논리연산자는 명제연산자 혹은 불리언 연산자라고 불리며, 피연산자로서 명제 혹은 진리 값을 취한다. 조건명제( conditional proposition ) -또는 함축 -if p then q, p onlty if q -in symbols p -> q - p 가설 - q 결론 조건명제 진리지표 조건명제는 참 많은 분들이 헷갈리는 것인데요. 구분 P Q P -> Q 1 T T T 2 T F F 3 F T T 4 F F T 2번 빼고 다 true가 나오는 것을 보실 수 있습니다. [예시] 만약 고등학생이면 야자를 한다. p : 고등학생이다. q ..

[따배시 7.1 ~ 2 ] 매개변수와 실인자의 구분, 값에 의한 전달

#include using namespace std; int foo(int x, int y); int foo(int x, int y) { return x + y; } int main() { int x = 1, y = 2; foo(6, 7); foo(x, y + 1); } foo(6,7) 이렇게 사용할 수도 있으며 이는 argument라고 부르며 실인자라고 부르기도 합니다. (actual parameters) 이렇게 x라는 변수를 직접 넣으 수도 있습니다. x=1이라는 값을 받아서 매개변수 x로 전달이 됩니다. 항상 x에 있는 값만 여기로 전달이 되는 것은 아닙니다. y+1에서는 2 에서 1을 더하면 3이듯이 3이라는 값이 argument고 이 argument가 y parameter로 전달이 되는 것입니다..

참조에 의한 호출 c++

불필요한 부분을 잘라낼 때 trim을 하기 때문에 함수 이름을 trim이라고 합니다. #include #include #include #include #include #include using namespace std; int main() { ifstream infile("input35.txt"); string str; vector words; while (infile >> str) { str = trim(str); if (str.length() > 0); { tolowercase(str); auto it = find(words.begin(), words.end(), str); if (it == words.end()); words.push_back(str); } } infile.close(); for (..

[C++] 백준 2941번 크로아티아 알파벳

https://www.acmicpc.net/problem/2941 2941번: 크로아티아 알파벳 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= www.acmicpc.net 코드 #include #include #include #include using namespace std; int main() { vector croatian = {"c=", "c-", "dz=", "d-", "lj", "nj", "s=" ,"z=" }; string n; cin >> n; int idx; for (int i = 0; i < croatian.s..