-
[BOJ] 1064 : 평행사변형
1064 : 평행사변형 풀이 hypot(a, b)는 a와 b를 높이, 너비로 하는 빗변의 길이를 구해주는 함수이다. 평행사변형이 만들어질 수 없는 경우를 찾아보자. 둘 이상의 점이 겹치거나, 세 점이 한 직선 위에 있으면 (= 기울기가 같으면) 사각형이 될 수 없다. ccw에서 기울기를 구하는 식을 가져다 쓰자! 여기에 개꿀개꿀 공식이 써있으니 참고하자! 둘 이상의 점이 겹치는 경우도 한 직선 위에 있는 경우이므로 별개로 처리해줄 필요는 없다. (개꿀!) 이제 평행사변형의 둘레의 길이를 찾아보자. 먼저, 남아있는 하나의 점을 찾을 필요가...
-
[BOJ] 13269 : 쌓기나무
13269 : 쌓기나무 풀이 앞에서 보이는 최대 값들로 채워준 다음 옆에서 보이는 최대 값들을 만족하게 바꿔준다 그리고 조건을 만족하는지 체크해보자! 코드 #include <stdio.h> #define REP(k,n) for(k=0;k<n;k++) #define RRP(k,n) for(k=n-1;k>=0;k--) int main() { int n, m, i, j, a[500][500], b[500], c[500]; scanf("%d %d", &n, &m); REP(i,n) REP(j,m) scanf("%d", &a[i][j]); REP(j,m) { scanf("%d", &b[j]); REP(i,n) if (a[i][j] == 1) a[i][j] = b[j]; } RRP(i,n) { scanf("%d", &c[i]); REP(j,m) if (a[i][j] > c[i]) a[i][j] = c[i]; } REP(j,m)...
-
[BOJ] 13268 : 셔틀런
13268 : 셔틀런 풀이 달빛이 흡사 비오듯 쏟아지는 밤에도 우리는 헐어진 성(城)터를 헤매이면서 언제 참으로 그 언제 우리 하늘에 오롯한 태양을 모시겠느냐고 가슴을 쥐어뜯으며 이야기하며 이야기하며 가슴을 쥐어뜯지 않았느냐? 코드 #include <stdio.h> #include <stdlib.h> #define a(e) for(int i=1;i<=e;i++)n-=5,f(i) #define b(e) for(int i=e;i>=1;i--)n-=5,f(i) int n, k; void f(int a) { if (n <= 0) { printf("%d", a); exit(0); } } int main() { scanf("%d", &n); n %= 100; for (int j = 0; j <= 4;...
-
[BOJ] 13560 : 축구게임
13560 : 축구게임 풀이 랑주의 정리! S[i] = a[1~i]의 합, S[1~k] >= kC2 S[n] = nC2 증명 코드 #include <stdio.h> #include <algorithm> int main() { int n, i, s = 0, a[10000]; scanf("%d", &n); for (i = 0; i < n; i++) scanf("%d", &a[i]); std::sort(a, a + n); for (i = 0; i < n; i++) { s += a[i]; if (s < (i+1)*i/2) return ~printf("-1"); } printf("%d", s == n*(n-1)/2 ? 1 : -1);...
-
[BOJ] 1987 : 알파벳
1987 : 알파벳 풀이 마음도 한자리 못 앉아 있는 마음일 때, 친구의 서러운 사랑 이야기를 가을 햇볕으로나 동무 삼아 따라가면, 어느새 등성이에 이르러 눈물나고나. 코드 #include <cstdio> const int dx[] = { 1,-1,0,0 }, dy[] = { 0,0,1,-1 }; int n, m, k, ch[99]; char s[22][22]; void dfs(int x, int y, int c) { if (k < c) k = c; if (k > 25) return; ch[s[x][y]] = 1; for (int i = 0; i...
-
[BOJ] 2580 : 스도쿠
2580 : 스도쿠 풀이 태양을 의논하는 거룩한 이야기는 항상 태양을 등진 곳에서만 비롯하였다. 코드 #include <stdio.h> #include <stdlib.h> #include <vector> using namespace std; struct ABC { int x, y, z; }; int a[9][9], x[9], y[9], z[9]; vector<ABC> p; void dfs(int now) { if (now == p.size()) { for (int i = 0; i < 9; i++) { for (int j = 0; j < 9; j++) printf("%d ", a[i][j]); puts(""); } exit(0); } int nx...
-
[BOJ] 14732 : 행사장 대여
14732 : 행사장 대여 풀이 오늘도 별이 바람에 스치운다. 코드 #include <stdio.h> int n, i, j, a, b, c, d, ans; bool chk[501][501]; int main() { for (scanf("%d", &n); n--;) { scanf("%d %d %d %d", &a, &b, &c, &d); for (i = a; i < c; i++) for (j = b; j < d; j++) if (!chk[i][j]) ans++, chk[i][j] = 1; } printf("%d", ans); return 0; } 아무말 백준, 백준 온라인 저지, BOJ, Baekjoon Online...
-
[BOJ] 14731 : 謎紛芥索紀 (Large)
14731 : 謎紛芥索紀 (Large) 풀이 지수가 몹시 크다! 하지만 f`(2)라고 하지 않았던가! 2의 제곱꼴이란 뜻이다! 숫자를 제곱제곱제곱제곱 하면서 1000000000를 log로 줄이자! 나머지 연산에 주의하자! 코드 #include <stdio.h> const int mod = 1e9 + 7; int n; long long s, e, x; int main() { scanf("%d", &n); for (int i = 0; i < n; i++) { scanf("%d %d", &e, &x); long long t = 1, p = 2, q = x - 1; while (q)...
-
[BOJ] 14730 : 謎紛芥索紀 (Small)
14730 : 謎紛芥索紀 (Small) 풀이 잎새에 이는 바람에도 난 괴로워했다. 코드 n, s, e, x; main() { scanf("%d", &n); while (n--) scanf("%d %d", &e, &x), s+=e*x; printf("%d", s); } 아무말 백준, 백준 온라인 저지, BOJ, Baekjoon Online Judge, C, C++, 씨, 씨쁠쁠, JAVA, algorithm, 자바, 알고리즘, 자료구조, 문제, 문제 풀이, 풀이
-
[BOJ] 14729 : 칠무해
14729 : 칠무해 풀이 제한이 몹시 크다! 정렬하면 큰일난다! 대신, 소수점에 1000을 곱해서 정수 a로 만들어 준 다음에 카운팅 배열 cnt[a]에 체크해주자. 그래봤자 10만개이므로 cnt[0]부터 cnt[100000]까지 돌면 깔끔하게 풀 수 있다. 코드 #include <stdio.h> int n, a[100001], x, y; int main() { scanf("%d", &n); while (n--) { scanf("%d.%d", &x, &y); a[x*1000+y]++; } for (int i = 0, c = 0; i <= 100000; i++) { while (a[i]) { --a[i], ++c; printf("%d.%03d\n", i / 1000, i...