본문 바로가기

분류 전체보기

(233)
[C++] 백준 9063번 - 대지 문제 9063번https://www.acmicpc.net/problem/9063  x와 y 각각의 최댓값과 최솟값을 빼주고 그 두 값을 곱해주면 된다. #include using namespace std;int main() { int n, x, y; cin >> n; int max_x = -10000, max_y = -10000, min_x = 10000, min_y = 10000; for (int i = 0; i > x >> y; if (x >= max_x) { max_x = x; } if (x = max_y) { max_y = y; } if (y
[C++] 백준 1735번 - 분수 합 문제 1735번https://www.acmicpc.net/problem/1735 일단 분수의 분모끼리 곱해준 수를 분모로 정하여 분수를 계산한다. 그리고 분자와 분모에 A, B값으로 구한 최대공약수를 각각 나눠준다. 그러면 더 이상 약분되지 않는 분수인 기약분수로 만들 수 있다. #include using namespace std;int gcd(int x, int y) {//최대공약수 if (y == 0) { return x; } else { return gcd(y, x % y); }}int main() { int a, b, aa, bb; cin >> a >> b >> aa >> bb; int A = a * bb + aa * b; int B = b * bb; cout
[C++] 백준 25192번 - 인사성 밝은 곰곰이 문제 25192번https://www.acmicpc.net/problem/25192 ENTER라는 입력이 들어오고 새로운 사람에게만 곰곰티콘을 사용하기 위해 중복을 없앨 수 있는 set을 이용한다.여기서 ENTER가 다시 들어오면 그 전에 들어왔던 사람이라도 새로운 사람의 입장이다. 그러므로 ENTER가 아닐 때는 계속 insert해주고 ENTER가 들어온다면 개수를 sum에 저장해두고 set을 비워준다.#include #include #include using namespace std;int main() { int n, sum = 0; string str; set s; cin >> n; while (n--) { cin >> str; if (str != "ENTER") { s.insert(str)..
[C++] 백준 15894번 - 수학은 체육과목 입니다 오늘은 오랜만에 햇빛받으면서 걸으니까 너무 피곤하다...  문제 15894번https://www.acmicpc.net/problem/15894 이번 문제를 보니 상자가 1개일 때는 길이가 4, 2일때는 8, 3일 때는 12인 것을 알 수 있었다.따라서 입력값에 4를 곱해서 출력해주면 된다. 그런데 int로 한다면 자리수가 부족한 부분도 있기 때문에 long long으로 해준다. #include using namespace std;int main() { long long n; cin >> n; cout
[C++] 백준 2667번 - 단지번호붙이기 문제 2667번https://www.acmicpc.net/problem/2667 map에 넣을 입력값을 받을 때 공백이 없기 때문에 문자열로 한줄씩 받아줘야하는데 그냥 int로 받아버렸다. 그래서 한참 고민했다... 게다가 문자 하나하나를 비교하여 '1'이면 정수 1을 map에 넣어주고 '0'이면 0을 넣어줘야한다. 그런데 '1'인지 확인할 때 문자 표시인 작은따옴표를 쓰지 않아 숫자로 인식했다... #include #include #include #include #include using namespace std;int map[26][26];bool visited[26][26];vector result;int n;int x[4] = { 0,0,-1,1 };int y[4] = { 1,-1,0,0 };vo..
[C++] 백준 1934번 - 최소공배수 문제 1934번https://www.acmicpc.net/problem/1934 최대공약수를 유클리드 호제법으로 풀고 a*b/최대공약수를 하면 최소공배수가 나온다고 한다. #include #include using namespace std;int GCD(int a, int b) { if (b == 0) { return a; } else { return GCD(b, a % b); }}int main() { int t; cin >> t; for (int i = 0; i > a >> b; max = GCD(a, b); cout
[C++] 백준 24445번 - 알고리즘 수업(너비 우선 탐색 2) 문제 24445번https://www.acmicpc.net/problem/24445 어제 문제에서 오름차순이 내림차순으로 바뀌었다. 그래서 정렬을 해줄 때 greater()를 추가해주면 내림차순으로 정렬할 수 있다. #include #include #include #include using namespace std;vector graph[100001];bool visited[100001];int result[100001];int cnt = 0;void bfs(int r) { queue q; q.push(r); visited[r] = true; cnt++; result[r] = cnt; while (!q.empty()) { int first = q.front(); q.pop(); for (int i ..
[C++] 백준 24444번 - 알고리즘 수업(너비 우선 탐색 1) 문제 24444번https://www.acmicpc.net/problem/24444  이번에는 너비 우선 탐색이다. 깊이 우선 탐색과는 bfs() 함수가 있는 부분만 다르다. 먼저 큐를 만들어 해당 정점을 넣어주고 방문처리를 한다. cnt를 하나 증가시킨 후 결과 배열에 넣어준다.  큐의 맨 앞 요소를 변수에 저장한 후 pop으로 빼준다. 그리고 해당 요소를 인덱스로 하여 그것과 이어져있는 점들의 크기만큼 반복해준다. 만약 방문한 점이라면 cnt를 1증가시키고 result 배열에 넣어준다. 그리고 넣어준 인덱스를 큐에 삽입하고 방문처리를 한다. 이 과정을 큐가 빌때까지 계속 반복해준다. #include #include #include #include using namespace std;vector gra..