길민호(ethan.mino)
코딩수첩
길민호(ethan.mino)
전체 방문자
오늘
어제
  • 분류 전체보기 (215)
    • Computer Science (0)
    • Web (6)
      • CSS (0)
      • HTML (0)
    • Node.js (0)
    • Javascript (2)
    • Java (46)
      • Spring (27)
      • Jsp (0)
    • C\C++ (2)
    • Programming (0)
    • AI (0)
    • Database (7)
    • Git (5)
    • Algorithm (119)
      • Stack (0)
      • Queue (0)
      • Linked List (0)
      • Sort (0)
      • Simulation (27)
      • Recursion (0)
      • Backtracking (4)
      • Two Pointer (3)
      • Dynamic Programming (19)
      • Greedy (10)
      • Graph (3)
      • Dijkstra (1)
      • BFS\DFS (8)
      • Floyd (1)
      • MST (4)
      • Tree (4)
      • Binary Search (8)
      • Binary Search Tree (4)
    • IntelliJ (4)
    • Vscode (0)
    • Operating System (0)
    • 후기 (3)
    • 성장일지 (13)
    • 스터디 (7)
    • 설치 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • ㅡ

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
길민호(ethan.mino)

코딩수첩

Algorithm

코딩 테스트, 알고리즘 꿀 Tip!

2022. 3. 23. 23:56
  1. 알고리즘의 잘못된 부분을 찾는거 보다는 테스트 케이스 빨리 작성하고 출력해보면서 어떤 테스트케이스가 안되는지 확인하고 수정하는 게 좋은듯
  2. 최대/최소 문제
    1. 최소 문제의 경우 최소보다 큰 값은 필요없다.
    2. 최대 문제의 경우 최대보다 작은 값은 필요없다.
  3. 결과를 도출하는데 있어서 불필요한 연산을 찾고, 줄이도록 해야함.
  • 시간 측정 방법
time_t start = clock(); 
// work 
time_t end = clock(); 
cout << (double) (end - start) / CLOCKS_PER_SEC << "(s)\\n;"
  •  초기화
// 2차원 배열
char board[1000][1000]; 
fill(&board[0][0], &board[999][1000], 0);

// 3차원 배열
int vis[5][5][5]; 
fill(&vis[0][0][0], &vis[4][4][5], 0);

// 2차원 벡터
vector<vector<int>> v; 
fill(v.begin(), v.end(), vector<int>(5, 0));
  • 벡터 중복 제거
sort(arr.begin(), arr.end()); 
arr.erase(unique(arr.begin(), arr.end()), arr.end());
  • 이차원 배열 최솟값 찾기
int s = 257, l = 0; 
for(int i = 0; i < n; i++){  
	int x = *min_element(&board[i][0], &board[i][m]); 
    int y = *max_element(&board[i][0], &board[i][m]); 
    if(x < s) s = x; if(y > l) l = y; 
}
  • 교집합, 차집합, 합집합은 Algorithm의 set_union, set_intersection, set_difference를 이용
vector<string> v(a.size() + b.size());
    auto iter = set_intersection(a.begin(), a.end(), b.begin(), b.end(), v.begin());
    v.resize(iter - v.begin());
  • 숫자 자리수 계산
int countDigit(int num){    // 숫자의 자리수를 반환하는 함수, ex. 1024 -> 4
    return to_string(num).size();
}
  • 복사
// 배열 복사
memcpy(temp, board, sizeof(temp));

// 벡터 복사
copy(maze.begin(), maze.end(), temp1.begin());

'Algorithm' 카테고리의 다른 글

[백준 11723번] 집합 (C++)  (0) 2022.04.01
[백준 17837번] 새로운 게임 2 (C/C++)  (0) 2022.04.01
[백준 1107번] 리모컨 (C/C++)  (0) 2022.03.15
[백준 1654번] 랜선 자르기 (C/C++)  (0) 2022.03.15
[백준 2805번] 나무 자르기 (C/C++)  (0) 2022.03.14
    'Algorithm' 카테고리의 다른 글
    • [백준 11723번] 집합 (C++)
    • [백준 17837번] 새로운 게임 2 (C/C++)
    • [백준 1107번] 리모컨 (C/C++)
    • [백준 1654번] 랜선 자르기 (C/C++)
    길민호(ethan.mino)
    길민호(ethan.mino)
    💻 호기심 많은 서버 개발자 길민호입니다.

    티스토리툴바