본문 바로가기

Algorithm159

#18870 좌표 압축 # 문제 # 입력 및 출력 # 풀이 처음 풀이는 원본과 복사 배열을 하나씩 만들어서 복사배열엔 중복을 없앤 다음 원본 배열과 중복을 없앤 복사 배열을 비교해서 원본 배열의 값이 몇 번째로 큰 값인지 찾도록 했다 #include #include #include #pragma warning (disable:4996) using namespace std; vector arr; vector num; int main() { int n; cin >> n; for (int i = 0; i < n; i++) { int t; scanf("%d", &t); num.push_back(t); arr.push_back(t); } sort(arr.begin(), arr.end()); arr.erase(unique(arr.begi.. 2022. 5. 13.
#11650 좌표 정렬하기 # 문제 # 입력 및 출력 # 풀이 문제가 너무 쉬워서 그냥 풀고 블로그에 올리진 않으려고 했는데 문제를 하나 발견해서 쓰게 됐다 1) 처음에 작성한 코드 #include #include #include #pragma warning (disable:4996) using namespace std; int main() { int n; cin >> n; vector coo; for (int i = 0; i < n; i++) { int x, y; scanf("%d %d", &x, &y); coo.push_back(make_pair(x, y)); } sort(coo.begin(), coo.end()); while(!coo.empty()){ printf("%d %d\n", coo.front().first, coo... 2022. 5. 13.
#2108 통계학 # 문제 # 입력 및 출력 # 풀이 일단 산술평균은 입력받을 때 총합을 구해놓으면 되고, 중앙값도 vector를 정렬해서 n/2의 값을 가져오면 됨 최빈값이 가장 복잡했는데 가장 많은 빈도를 가진 인덱스를 구하고 그 인덱스와 같은 빈도를 가진 수를 벡터에 넣어두고 같은 빈도 수를 가진 숫자가 2개 이상이면 두번째 값을 가져와서 출력함 마지막 범위는 벡터의 끝 - 벡터의 처음 하면 됨 * -0 문제는 floor함수를 사용해서 해결했음 (cmath 헤더) * 자세한건 아래 블로그 참고 https://code-examples.net/ko/q/874dc 소수점 - ceil c++ code-examples.net #include #include #include // floor 함수용 #include // sort.. 2022. 5. 12.
#10989 수 정렬하기 3 # 문제 # 입력 및 출력 # 풀이 처음 문제를 풀 땐 10,000,000칸 짜리 int형 배열을 써놓고 sort함수를 이용해서 정렬하도록 했다 이렇게 하니까 메모리 초과가 떠서 계산해보니 int형이 4byte이므로 대략 40MB를 사용하게 된다 그래서 short형 배열로 바꿨음에도 short가 2byte이므로 20MB라서 안된다 https://www.acmicpc.net/board/view/26132 글 읽기 - ★☆★☆★ [필독] 수 정렬하기 3 FAQ ★☆★☆★ 댓글을 작성하려면 로그인해야 합니다. www.acmicpc.net 이 페이지의 1번 힌트를 보고 알아냈다ㅋㅋ 입력받는 수의 범위는 1~10000이므로 sort 필요 없이 입력받는 수의 개수를 배열에 저장해두면 그만큼 출력하면 되기 때문에 1.. 2022. 5. 12.
#1436 영화감독 숌 # 문제 # 입력 및 출력 # 풀이 1) string::find() 사용 #include #include using namespace std; int main() { int n, result = 666, index = 0; string s; cin >> n; while (true) { s = to_string(result); if (s.find("666") != string::npos) { index++; if (index == n) { cout > n; while (n) { result++; tmp = result; while (tmp) { if (tmp % 1000 == 666) { n--; break; } tmp /= 10; } } cout 2022. 5. 12.
#1018 체스판 다시 칠하기 # 문제 # 입력 및 출력 # 풀이 처음에 배열을 따로 만들어두지 않고 반복문으로만 확인하니까 너무 복잡해졌다 그래서 함수를 만들어서 최소값을 찾도록 했다 #include #include #include using namespace std; string chess[50]; string w[8] = { "WBWBWBWB", "BWBWBWBW", "WBWBWBWB", "BWBWBWBW", "WBWBWBWB", "BWBWBWBW", "WBWBWBWB", "BWBWBWBW" }; string b[8] = { "BWBWBWBW", "WBWBWBWB", "BWBWBWBW", "WBWBWBWB", "BWBWBWBW", "WBWBWBWB", "BWBWBWBW", "WBWBWBWB" }; int wb(int x, int.. 2022. 5. 11.