본문 바로가기

전체 글

16673 고려대에는 공식 와인이 있다 수학 문제였다. #include int main() { int n, k, p; scanf("%d %d %d", &n, &k, &p); printf("%d", k*n*(n+1)/2 + p*n*(n+1)*(2*n + 1)/6); } 간단한 코드 더보기
1297 TV크기 문제를 읽고 정리했다. 배운 강정, 이제는 floor 안 쓰고 몫으로 계산하려 하고있다. 그런데 이 문제는 어쩔 수 없이 루트 떄문에 sqrt를 써야한다. #include #include using namespace std; int main() { double a, b, c, result; scanf("%lf %lf %lf", &c, &a, &b); //printf("%lf %lf %lf", c, a, b); result = sqrt(c*c / (a*a + b*b)); //printf("%lf", result); printf("%d %d", a*result/1 , b*result/1); } 계산을 다 double형으로 할거라 바로 double형으로 받았다. 몰랐는데 double형은 %f로 받으면 안 되고.. 더보기
2355 시그마 문제를 보자마자 입력 사이즈 떄문에 문제가 생기겠다는 생각이 들었고 두번째로 시간도 얼마 주지 않으므로 수학 공식을 써야 겠다고 느낌이 왔다. 저 등차수열의 합 공식이 기억 안 나서 검색해서 찾았다. 내가 이 공식을 다시 보게 될줄이야. #include #include using namespace std; using i64 = long long; int main() { i64 a, l, n; scanf("%lld", &a, &l); printf("%lld", (max(a, l) - min(a, l) + 1)*(a+l)/2); } 처음에 코드를 이렇게 작성했다. 그런데 값이 너무 크고 이상하게 나와서 난 max 함수가 문제있는 줄 알았다. 아.. 얘가 int형만 인자로 받아서 long long 타입을 넣어.. 더보기
10707 수도요금 #include #include using namespace std; int main() { int a, b, c, d, p; scanf("%d %d %d %d %d", &a, &b, &c, &d, &p); int coast_x = p * a; int coast_y = b; if(p > c) coast_y += d * (p - c); printf("%d", min(coast_x, coast_y)); } 입력을 정의했다 어떻게 풀지 적어봤다. 쉬워서 할말이 없다 #include #include using namespace std; int main() { int a, b, c, d, p; scanf("%d %d %d %d %d", &a, &b, &c, &d, &p); int coast_x = p * a; i.. 더보기
5532 방학 숙제 먼저 문제 정리부터 했다. 정리하면서 어떻게 풀지 감이왔다. 그래서 바로 식으로 적어버렸다. 그런데 만약 페이지가 딱 떨어지지 않으면 하루를 더해야 하고 나누어 떨어지면 하루를 더하면 안된다. 여기서 조금 애매했다. 그냥 조건문으로 확인하면 쉽지 근데 더 간결하게 짜고 싶어서 고민이었다. #include #include using namespace std; int main() { int l, a, b, c, d; scanf("%d %d %d %d %d", &l, &a, &b, &c, &d); printf("%d", l - max(a/c + max(a%c>0?1:0,0), b/d + max(b%d>0?1:0,0))); return 0; } 결론은 이렇다 조건문으로 구구절절하게 하기 싫어서 삼항연산자로 때려.. 더보기
10162 전자레인지 문제 정의를 했다 전에 알고리즘 수업을 들을 때 이런 문제를 푼 것 같아서 설마 그건가 했는데 그냥 나누는 문제였다. 지금 생각해보니 그리드 할 때 배웠던 것 같다. 이상한 나라 동전 문제 (..) #include int main() { int t; scanf("%d", &t); if(t % 10 != 0){ printf("-1"); return 0; } printf("%d ", t / 300); t %= 300; printf("%d ", t / 60); t %= 60; printf("%d", t/10); return 0; } 별로 어렵지는 않았다. 그냥 무난.. 더보기
2480 주사위 세 개 먼저 문제를 정의했다 다음으로 전자종이에 알고리즘을 짜려 하다 이 알고리즘은 제대로 동작하지 않는다는 걸 깨달았다. #include #include using namespace std; int main() { int a, b, c; scanf("%d %d %d", &a, &b, &c); if(a == b && b == c) printf("%d", 10000 + a*1000); else if(a == b || b == c ) printf("%d", 1000 + b*100); else if(c == a) printf("%d", 1000 + a*100); else printf("%d", max({a, b, c})*100); return 0; } 그래서 그냥 조건문으로 풀었다. stl의 algorithm에 ma.. 더보기
2530 인공지능 시계 먼저 문제를 읽고 이런 식으로 조건을 정리했다. 그리고 생각한 풀이 전에는 눈에 힘 빡 주고 풀었는데 이제는 그냥 적는게 편하다. 정리도 되고 놓친 조건 찾기도 쉽고 저기 오른쪽에 sec %= 60으로 적었는데 (59 + 2) % 60이 되어야 할 것 같다 (코드에는 반영 함) #include int main() { int now_hour, now_min, now_sec; int time; scanf("%d %d %d %d", &now_hour, &now_min, &now_sec, &time); int hour = time / 3600; time %= 3600; int minute = time / 60; time %= 60; int sec = time; int add = 0; add = (now_sec .. 더보기