Algorithm 72

[백준 10816번] 숫자 카드 2 ( map / 이분탐색(upper,lowerbound) )

캡쳐한게 깨져서 올라가길레 그냥 링크 걸었습니다. 나중에 이분탐색으로 다시 풀어보기 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net #include using namespace std; map m; int main(void) { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int N,M; cin >> N; for (int i = 0; i > temp; m[temp]++..

[백준 1157번] 단어 공부

배열로 푸는사람들이 많아보이던데.. 여러번 탐색하기 싫어서 map으로 풀었다. map의 iteration 쓰는게 익숙치 않아서 여러번 해보면 좋을듯하다. #include using namespace std; string input; map m; int main(void) { char max_char; int max_value= 0; cin >> input; //input을 string으로 받고 for(int i = 0; isecond > max_value) //가장 큰 value값과 그에 해당하는 char값 찾음. { max_char = it->first; max_value = it->second; } } int cnt =0;// max값의 중복을 찾기위함. for(auto it =m.begin(); i..

[백준 1920번] 수 찾기

이진탐색에서 right범위를 맨처음에 100000주고 했는데 33%쯤에서 계속틀렸다. N-1으로 수정하니 정답. 아무래도 input수가 적을 때 못찾는걸까? 그래서 memset(arr, 0x7f,sizeof(arr))해서 큰값을 주고 시작했는데도.. 안되더라.. ㅠ; 시간은 이진탐색 52ms, map 100ms로 2배차이가 난다. 이진탐색으로 한 풀이. #include using namespace std; map m; int in_array[100001]; int N,M; bool binary_search(int target) { int left=0,right=N-1, mid; while(left N ; for(int i = 0 ; i> temp; in_array[i] = temp; } sort(in_a..

[백준1260번] BFS와 DFS

자료구조 시험공부 하다가 너무 재미없어서 ㅠㅠㅠ 문제푸는거 재밌는데, 수업이 너무.. (할많하않;) 방문할 수 있는 정점이 여러개인경우 작은것을 먼저 방문하라고 해서 sort하고 시작했고, 입력으로 주어지는 간선은 양방향이라서 push_back 엇갈리게 푸쉬. #include using namespace std; int N, M, V; vector vec[1001]; // 총 노드수 bool visited[1001]; // 방문한 노드 queue q; // bfs에서 사용할 거. void dfs(int node, int d){ if(d == N+1) return; for(int i = 0; i> b; vec[a].push_back(b); vec[b].push_back(a); } for(int i = 1 ..

[백준 1654번] 랜선자르기

이분탐색이 익숙치않아서 다시한번 풀어봤다. K길이 최댓값에서 하나씩 감소시키는걸로 푸니 시간초과났었다. 굳이 sort해서 max값 안찾아도 되고, 입력받을때 max취해서 최대 K값 찾아놓고 시작하는게 나을것 같다. 괜히 시간만 잡아먹은듯. #include using namespace std; int N, K; vector vec; bool check(int mid) { int cnt = 0; for(int i = 0; i= N) return true; else return false; } int main(void) { cin >> K >> N; long long sum = 0; for(int i = 0 ; i< K; i++) { i..