본문 바로가기

전체 글38

그래프 : 인접 행렬 / 인접 리스트 이진 트리 균형잡는 법 : AVL 트리, 레드 블랙 트리 그래프를 컴퓨터에게 알려줄때인접 행렬 / 인접 리스트 (인접 : 연결되어 있음) 정점과 간선의 관계를 나타내는 bool 타입의 정사각형 행렬0은 경로 없음,1은 경로 있음 / 자기 자신은 cyclea[from][to] = 1 or 0 int a[4][4] = {{0, 1, 1, 0},{1, 1, 0, 1},{1, 0, 0, 0},{0, 1, 0, 0}}for(int i = 0; i 여러개의 연결리스트로 그래프 표현 #include using namespace std;const int V = 5;//vector a; //단일vector adj[V]; //벡터가 여러개 있음.(정점마다 필요하므로)int main(){ //adj[현재정점].. 2026. 8. 10.
문자열 출력할 때 주의할 점 #include #include #include using namespace std;string str = "어벤져스";int main(){ printf("아이엠어 아이언맨 : %s\n", str);}string str을 출력할 때, printf를 기반으로 문자열을 출력하려면 포인터 타입으로 바꾸어줘야한다, printf("아이엠어 아이언맨 : %s\n", str.c_str()); 즉 문자열에 대한 포인터(char *)으로 변환해줘야 한다.cout 은 그대로 출력해주면 됨. 2026. 7. 15.
cout의 실수 출력(setprecision()) cout에서 원하는 소수점 자리까지 출력 하는 방법 #include #include //추가해주어야 함.using namespace std;double a = 1.23456789;int main(){ cout 2026. 7. 15.
개행문자(한 칸 또는 한 줄 띄어쓰기) 제거 int T;cin >> T;cin >> T는 숫자만 읽고 엔터(\n)은 버퍼에 남겨둔다.즉, 입력 : 3\nT = 3버퍼에 남은 것 : \n getline은 줄바꿈이 나올때까지 읽는 함수이므로 버퍼에 남아있는 \n을 보고 빈 문자열을 바로 리턴해버림. 입력:3helloworldfoo출력: ← 첫 getline이 남은 \n만 먹고 빈 줄 출력helloworld ← foo는 못 읽음 (T=3인데 이미 한 번 낭비됨) int T;string bufferFlush;cin >> T;getline(cin, bufferFlush); //버퍼에 남은 \n을 일부러 버리는 용도첫 getline을 한 번 사용해서 남아있는 \n을 버림.즉 변수 이름 그래도 버퍼를 비우는 역할로 사용함. 또는 ci.. 2026. 7. 15.
시간복잡도 구해보기 N개의 데이터에 따라 함수가 몇번 실행 되는 디버깅 해봤을 때,N = 1, 4번 (1 + 3)N = 2, 13번 ( 1 + 3 + 3x3)N = 3, 40번 ( 1 + 3 + 3x3 + 3x3x3) 이럴땐, 차이를 먼저 보기4 (+ 9) 13 (+27) 403의 배수로 증가 a(r^n -1) / r-1a = 1r = 3n = n(3^n -1) / 2O( 3^n ) ============================================tip)이러한 구조에서 재귀함수에서 함수가 호출되는 시간복잡도는 함수 하나당 호출돠는 횟수 (호출횟수^n)void solve(int N) { cnt++; //main logic => O(1) cout O(3^n) } return;} 2026. 7. 14.
시간 복잡도 시간 복잡도입력값이 커짐에 따라 알고리즘이 실행되는데 걸리는 연산 횟수 빅오(Big-O) 표기법을 사용하며, 연산에 가장 영향력이 큰 최고차항만 남긴다O( n! ) > O( 2ⁿ ) > O( n² ) > O(nlogn) > O(n) > O(1), O(logn) 시간복잡도 구하기 어려우면 몇번 호출 되었는지 디버깅 코드를 작성해보기 +, -, *, / 같은 연산은 상수 시간복잡도를 갖는다. tip) logO(logN) == O(log₂N)1. 2를 몇번 곱해야 N이 나오는가?log₂8은 2x2x2 이므로 3이다.log₂8 = 3 2. 결과가 1이 되려면 N을 2로 몇번 나눠야할까?log₂8은 8/2/2/2 = 1 이므로 3이다log₂8 = 3 즉, 데이터가 N개 일 때, 알고리즘은 몇번 실행 되는가?O.. 2026. 7. 14.