c++5 [알고리즘 풀이] 치킨 배달 / 백준 15686 / C++ // 크기가 NxN인 도시. 각 칸은 빈칸(0), 집(1), 치킨집(2)// '치킨거리'는 집(x1,y1)에서 치킨집(x2,y2)까지의 거리 |x1-x2|+|y1-y1|// '도시의 치킨거리'는 각 집의 최소치킨거리의 합이다.// M개의 치킨집의 개수가 주어지고, 이는 도시에 유지할 치킨집의 최댓값이다.// 나머지는 폐업한다. // 폐업시키지 않을 치킨집을 최대 M개 골랐을 때, 도시의 치킨거리의 최댓값을 출력하라 #include using namespace std;int n, m, a[54][54], result = 987654321; vector> chicken_index_lists;vector> home_coordinates, chicken_coordinates;void make_combinati.. 2025. 1. 10. [알고리즘 풀이] 일곱난쟁이 / 백준 2309 / C++ #include using namespace std;// 난쟁이 7명의 키의 합 : 100// 아홉개의 줄에 난쟁이 9명의 키가 입력// 7명의 난쟁이를 찾아 키를 오름차순으로 출력하라 // 가능한 답이 여러개일 경우 아무거나 정답int a[9];int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); for(int i=0; i> a[i]; } sort(a, a+9); do{ int sum = 0; for(int i=0; i 2025. 1. 10. [알고리즘 풀이] 미로탐색 / 백준 2178 / C++ #include using namespace std;//NxM 배열의 미로, 1은 통로, 0은 벽// 1,1 에서 출발해서 N,M 위치까지 지나야하는 최소 칸의 수(시작,끝 위치 포함)//첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다.const int max_n = 104;int dy[4] = {-1,0,1,0};int dx[4] = {0,1,0,-1};int n, m, a[max_n][max_n], visited[max_n][max_n], y, x;int main(){ //입력 scanf("%d %d",&n, &m); for(int i=0; i> q; //탐색 대기열 큐.. 2025. 1. 10. Basic C++ : split() C++은 STL에서 split() 함수를 지원하지 않기때문에 만들어서 써야한다.vector split(const string& input, string delimiter){ vector result; auto start = 0; // 시작위치 auto end = input.find(delimiter); // 첫번째 구분자 위치 while(end != string::npos){ result.push_back(input.substr(start, end - start)); //result에 substring으로 시작위치부터 end위치(구분자 전)까지 잘라서 넣음 start = end + delimiter.size(); // start.. 2024. 12. 17. Basic C++ : unsync with stdio #include using namespace std;int main(){ ios::sync_with_stdio(false); // C의 printf,scanf과 C++의 iostream(cin, cout ..)의 동기화를 해제하고, c++ 의 입출력 스트림만 사용하겠다고 명시하는것. 속도가 빨라짐. 하지만 사용시 C스타일 입출력을 섞어쓰면 출력 순서가 보장되지 않는다. cin.tie(NULL); // cin과 cout은 기본적으로 연결(tie) 되어있어 cin을 사용하면 자동으로 cout이 flush되어 출력버퍼를 비운다. 디버깅이 편하지만 끊으면 cin후 cout을 하지 않아 성능이 좋아짐. cout.tie(NULL);// cout은 다른 스트림과 연결되있지 않아서 할필요.. 2024. 12. 17. 이전 1 다음