헤더 파일. import할 때 사용한다. bits/stdc++.h 는 모든 표준 라이브러리를 의미한다.
std라는 네임스페이스 사용하겠다. cin, cout 사용할 때 원래는 std::cin처럼 네임스페이스 달아서 사용해야하는데 이를 기본으로 설정한다는 뜻이다.
문자열 선언. <타입> <변수명> 이런식으로 선언한다. 예를들어 string a = 'Wix' 이렇게 선언했다면, a는 lvalue, Wix는 rvalue라고 한다. lvalue는 추후 다시 사용될 수 있는 변수이고 rvalue는 한 번 쓰고 다시 사용되지 않는 변수이다.
입력. 대표적으로 cin, scanf가 있다.
출력. 대표적으로 cout, printf가 있다.
return 0은 프로세스가 정상적으로 마무리 됨을 뜻한다.
int는 4바이트 정수를 사용할 때 사용되는 타입이다. 표현범위는 -2,147,483,648 ~ 2,147,483,647 입니다.
시간복잡도
시간복잡도란, 입력 크기에 대해 어떤 알고리즘이 실행되는데 걸리는 시간이다. 직접적인 시간을 측정하는 것이 아닌 주요 로직의 반복횟수를 중점으로 측정된다.
왜냐하면 직접적인 시간은 여러가지 요인에 따라 변경될 수 있기 때문이다.
1 2 3 4 5 6 7 8 9 10 11
for(int i = 0; i < 10; i++){ for(int j =0; j < n; j++){ for(int k = 0; k < n; k++){ if(true) cout << k << '\n'; } } }
for(int i = 0; i < n; i++){ if(true) cout << i << '\n'; }
위 코드에서 시간 복잡도는 10n^2+n이다.
빅오표기법(Big - O)
빅오표기법은 복잡도에 영향을 가장 많이 끼치는 항의 상수인자를 제거하고 나머지 항을 없애서 복잡도를 표기하는 표기법이다.
앞선 예시를 빅오표기법으로 나타내면 O(n^2)이다.
여기서 영향을 가장 많이 끼친다는 의미는 입력 크기가 커질수록 증가속도가 가장 큰 것을 의미한다.
예를 들어 n^2은 1,4,9,16,25 이런식으로 증가하는데, n은 1,2,3,4,5 이런식을로 증가하기 때문에 영향이 가장 큰 n^2 항의 상수 인자를 제거하여 빅오표기법으로 나타낸 것이다.
<!DOCTYPE html> <html> <head> <style> p:first-child { color: blue; } </style> </head> <body> <p>This is some text.</p> <p>This is some text.</p>
<div> <p>This is some text.</p> <p>This is some text.</p> </div> <section> <p>this is first element</p> <p>this is second element</p> </section> </body> </html>