본문 바로가기

전체 글

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 .. 더보기
1712 손익분기점 전에 달팽이 나무 타는 문제를 풀었는데 그때도 이런 식으로 해결했다. 부등식을 세우고 마지막에는 올림해서 n 구하기 아 그런데 문제를 잘못 읽었다. 총 수입이 총 비용보다 많아져야 하므로 같으면 안 된다. 그래서 floor(A / (C - B)) + 1을 해줘야 올바른 식이 된다. #include #include using namespace std; int main() { int a, b, c; scanf("%d %d %d", &a, &b, &c); printf("%d", (int)floor((double)a / (double)(c-b)) + 1); } 아 그런데 틀렸다! 다시 확인해봐야겠다. 머리 안 돌아가서 밥 먹고 다시 해야지 밥 먹고 다시 돌아왔다 몰랐는데 손익 분기점이 존재하지 않는 경우도 생각.. 더보기
1212 8진수 2진수 #include #include using namespace std; int main() { string num_str; cin >> num_str; string octal_number[8]; string first_octal_number[8]; octal_number[0] = "000"; octal_number[1] = "001"; octal_number[2] = "010"; octal_number[3] = "011"; octal_number[4] = "100"; octal_number[5] = "101"; octal_number[6] = "110"; octal_number[7] = "111"; first_octal_number[0] = "0"; first_octal_number[1] = "1"; fi.. 더보기
10039 평균점수 #include int main() { int a; int sum = 0; for(int i = 0; i < 5; i++){ scanf("%d", &a); if(a < 40) a = 40; sum += a; } printf("%d", sum/5); } 40점보다 작으면 40점으로 처리하므로 조건문을 통해서 40점 이하인 것들을 잡아냈다. 그런데 이렇게 if문으로 확인하는 것 말고도 라이브러리의 max와 min을 쓰는 방법도 있다. #include #include using namespace std; int main() { int a; int sum = 0; for(int i = 0; i < 5; i++){ scanf("%d", &a); sum += max(40, a); } printf("%d", sum/.. 더보기
8393 합 별 생각 없었는데 아차 싶었다! 나이브~하게 반복문으로 돌려야지 했는데, 고등학교 때 배운 합의 공식이 있었다. #include int main() { int n, sum = 0; scanf("%d", &n); n = n * (n + 1) / 2; printf("%d", sum); } 반복문으로 하면 O(n)이지만 합의 공식을 사용하면 O(1)에 가능하다! 더보기
15894 수학은 체육과목 입니다 수학은 체육과목이라더니 수학문제인것도 어이없는데 그마저도 풀었더니 틀렸다. #include int main() { int a; scanf("%d", &a); printf("%d",4*a); } 저 4n이 틀렸나 해서 다시 확인해봤더니 아니었고 알고보니 int형으로 입력을 받으니 오버플로우가 일어났다. 최대 입력값인 10^9를 입력하면 오버플로우가 발생한다,, 그래서 어찌하지 하다가 문자열은 크기 제한이 없어서 문자열로 받아야 겠다고 생각했다. #include #include using namespace std; int main() { string num; int cash = 0, tmp; cin >> num; for(int i = num.length() - 1; i >= 0; i--){ tmp = (nu.. 더보기
2588 곱셈 #include int main() { int a, b; int tmp1, tmp2, tmp3; scanf("%d %d", &a, &b); tmp3 = a * (b/100); b -= b/100 * 100; tmp2 = a * (b/10); tmp1 = a * (b%10); printf("%d\n", tmp1); printf("%d\n", tmp2); printf("%d\n", tmp3); printf("%d", tmp3*100 + tmp2*10 + tmp1); } 얼마전 수업시간에 ppt에 naive라는 단어가 있어 교수님이 이 단어가 무슨 뜻인지 물어봤다. 그래서 난 그냥 순수한 이런걸로 생각했는데 교수님이 순수같은 좋은 뜻은 아니고 순진하다와 비슷하다고 했다. 생각 많이 안 하고 단순한.. 그런뜻... 더보기