본문 바로가기

백준

16917 양념 반 후라이드 반 먼저 문제 정의부터 했다. 그리구 어렵다.. 어떻게 손을 대야할지 모르겠었음 일단 경우를 나눠서 생각하기로 했다. 치킨은 세 종류가 있으니 총 경우의 수가 6개가 나온다. 먼저 반반이 가장 싼 경우인데 이러면 반반을 가장 많이 사는게 이득이라 최대한 반반으로 사고 남은 닭을 양념이나 후라이드로 채워 넣는다. 다음으로 반반이 가장 비싼 경우이다. 이때는 반반을 버리고 그냥 양념 & 후라이드로 개수를 채운다. 반반 가격이 중간에 있을 때가 제일 애매했다. 일차 함수로 비교를 해야하나 싶었는데 어려워서 말았다. 그래서 이 경우도 다시 반반과 양념+후라, 두개의 단가를 비교해서 위의 경우처럼 나눌 수 있지 않을까 생각했다. 보니깐 처음부터 양념+후라 랑 반반의 단가를 비교해서 계산하면 좋다고 생각했다. 알고리즘.. 더보기
시간복잡도와 공간복잡도 나름 자료구조와 알고리즘 수업을 들은 짬으로 시간복잡도 O가 몇이냐는 건 구할 수 있다. 그런데 시간 복잡도가 얼마냐에 따라 몇 초안에 돌 수 있는지는 잘 몰랐다. --- 더보기
14568 2017 연세대학교 프로그래밍 경시대회 어렵다.. 어려워서 생각 많이 했다. 일단 먼저 조건부터 적고 어떻게 할지 고민했음 생각한게 하나하나 구하기는 너무 어렵고 (어떻게 하는지도 모르겠고) 한 사람의 범위를 정한 다음 그 범위에 경우의 수가 몇 개나 있는지 세는게 좋을 것 같다. 택희가 짝수개만 사탕을 먹어서 for문으로 개수 세려고 했는데 보니깐 그냥 반 나누니깐 짝수의 개수가 나온다. 조건을 정리했다. 짝수 개 사탕을 구할 때 0이면 빠져나오게 짜려 했는데 안 그래도 될 것 같아서 뺐다. 로직 생각하는건 어려웠는데 막상 코드는 간단하다. 앞으로 이런 문제들을 계속 보겠지,... 아무튼 맞았음 더보기
3009 네 번째 점 #include using namespace std; int main() { int x1, x2, x3; int y1, y2, y3; scanf("%d %d %d %d %d %d", &x1, &y1, &x2, &y2, &x3, &y3); if(x1 == x2) printf("%d ", x3); else if(x3 == x2) printf("%d ", x1); else printf("%d ", x2); if(y1 == y2) printf("%d", y3); else if(y3 == y2) printf("%d", y1); else printf("%d", y2); } 조건문으로 다른 거 하나 찾았다! #include int main() { int x1, x2, x3; int y1, y2, y3; scanf(".. 더보기
2566 최댓값 #include int main() { int num, max = -1; int x, y; for(int i = 1; i 더보기
2501 약수 구하기 #include int main() { int n, k, count = 0; scanf("%d %d", &n, &k); for(int i = 1; i 더보기
2965 캥거루 세마리 처음에 아니 이게 무슨 문제야 싶었는데 그려보니 어떻게 굴러가는지 알겠다. 그리고 최댓값도 알겠다. 둘 사이 거리가 큰 쪽으로 뛰어야 하고, 뛰는 양은 그 사이 공간의 길이만큼 뛸 수 있다. if문으로 짜려다가 아차하고 바로 max문으로 짰다. #include #include using namespace std; int main() { int a, b, c; scanf("%d %d %d", &a, &b, &c); printf("%d", max(b-a-1, c-b-1)); } 간단한 코드~~ 더보기
10824 네 수 #include using namespace std; using i64 = long long; int main() { string a, b, c, d; cin >> a >> b >> c >> d; a.append(b); c.append(d); i64 sum1 = stoll(a); i64 sum2 = stoll(c); cout 더보기