[ 알고리즘 ]36 [ BOJ 오답노트 ] 15683 C++ : 감시 1. 문제 해결 과정 (1) 총 가능한 경우의 수 계산 1번 CCTV는 4가지, 2번 CCTV는 2가지, 3번 CCTV는 4가지, 4번 CCTV는 4가지, 5번 CCTV는 1가지가 가능하다. 모두 4의 약수로, 총 가능한 경우의 수는 4의 거듭제곱승이다. 이 때, 지수는 CCTV의 개수이다. 예를 들면 위와 같은 경우로 나타낼 수 있다. CCTV 1번과 4번으로 총 2대가 있을 때의 경우의 수는 4의 2승으로 총 16가지이다. 여기에서 드는 의문이 예를 들어서 1번과 2번이 있다고 했을 때 총 경우의 수는 4 곱하기 2로 8인데, 4의 2승으로 총 16번을 조사하는 것이 아닌지 생각할 수 있는데, 전체적으로 시간 복잡도를 봤을 때 그 연산이 있다고 해서 시간 초과가 발생하지 않으므로 4의 거듭제곱으로 진.. 2023. 7. 26. [ BOJ 오답노트 ] 5107 C++ : 마니또 해결이 어려웠던 이유는 1. giver와 receiver가 쌍으로 존재하는데 이걸 어떤 자료구조를 써야 하는지 판단이 어려웠다. 2. BFS를 사용해야 할 것 같은데 Queue가 빈 상태가 되었다고 하나의 테스트 케이스가 끝난 것이 아니라서 어떻게 처리해야 할 지 어려웠다. 1. 문제 1번 : 'unordered_map' (1) map보다 더 빠른 탐색이 가능한 자료구조이다. map은 탐색에서 Binary Search Tree를 사용하여 O(log n)이라면, unordered_map은 Hash Table을 사용하여 O(1)이다. (2) 중복된 데이터를 허용하지 않는다. map에 비해서 데이터가 많을 때 월등히 좋은 성능을 보인다. (3) iterator로 접근해야 한다. index로 접근 불가능하다. .. 2023. 7. 10. [ BOJ 오답노트 ] 4179 C++ : 불! 예제 1에서는 올바른 결과가 나왔지만 계속 "틀렸습니다"라고 떠서.. 다른 테스트케이스를 확인해봤는데 역시나 올바르지 않았다. (1) 불이 하나가 아닌 경우 [Input] 4 4 #F## #F## ..J# #### [Output] IMPOSSIBLE [Result] 3 반례 by. dontsaymyid (2) 불이 갇혀있는 경우 5 5 ##### #F#J# ###.# ###.# ###.# output : IMPOSSIBLE answer : 4 반례 by. possible (3) 내 코드 (수정 전) # include using namespace std; # define X first # define Y second string board[1000][1000]; int fire[1000][1000]; in.. 2023. 6. 19. [ c++ ] 2차원 배열 초기화하기 / fill 함수 너무 기본적이지만 가끔 헷갈릴 때가 있는 2차원 배열 초기화하기.. 가장 좋은 방법은 fill 함수를 쓰는 것! fill 함수의 구조는 다음과 같다. #include void fill (ForwardIterator first, ForwardIterator last, const T& val); first : 배열이나 vector와 같은 iterator의 시작 주소 last : 채우고 싶은 마지막 주소 val : 채우고 싶은 값 n x m 배열에 대해서 초기화를 진행한다. int arr[500][500]; int n, m; cin >> n >> m; for (int i=0; i 2023. 6. 16. 이전 1 2 3 4 ··· 9 다음