본문 바로가기

전체 글

[코드포스 Practice14] 후기 ㅋㅋㅋㅋ 이렇게 말하면 곧 북님이 난이도 올리겠지만 이 난이도에도 적응한 것 같다. 전에는 아 너무 어렵고 한문제도 못 풀겠고ㅠㅠ 이걸 어떻게 풀지 1문제도 할까말까 하는데.. 거렸지만 지금은 시간만 된다면 c까지는 풀 수 있을 것 같다! 워후! 혹시 너무 어려워 해서 깜짝으로 난이도 낮춰주신거 아닐까 ^___^ 뿌듯스 암튼 오늘은 시간이 부족할 뿐 잡은 문제는 다 풀었다. 다만 문제가 있다면 서버 두번이나 터졌음ㅋㅋㅋ 진짜 이 화면만 10분씩 두번ㄴ이나 봤다고 진짜 어이없고 화나고 ????? 했는데 서버 터짐ㅋㅋㅋ C번이라도 열어놨으면 C번 풀고 있을텐데 이런 상황을 처음 겪어봐서 그냥 10분동안 기다렸음ㅋㅋㅋㅋㅋ ㅇㄴ 겨우 기다렸더니 B번 틀렸다라ㅎ B번 좀 더 만지다가 1시간 지났길래 놔두고 C번 .. 더보기
[코드포스 Practice13] D. Which floor? 코포 끝나기 좀 전에 어떻게 풀지 감 잡아서 결국 못 풀었다. 로직은 저 아래쪽에 있는 거 그대로 짰다. step이 1일때 ~ 50까지 배열 전부를 확인한다. 주어진 거랑 맞으면 위치 저장하고 다음거 계속 확인한다. 만약 일치하는게 있는데 이미 위치가 저장되었다면 그건 모호하게 되므로 -1출력하고 종료.. 진짜 짜면서 너무 재밌고 즐겁고 내 코드에 확신하면서 제출했는데 3번에서 틀렸다. 이 경우에서 틀렸는데 나는 이렇게 하면 1 1 1 1 2 2 2 2 도 되고 1 1 1 1 1 2 2 2 2 2 도 되니깐 틀린거로 봤다. 알고보니 이 두 경우 모두 8이 2이므로 참으로 해야했다. 그래서 step 확인하는 부분만 바꿨고 맞았다. if (ans == 0) ans = (n + step - 1)/step; e.. 더보기
[코드포스 Practice13] C. Save the problem! 처음 이 문제 봤을 때 너무 방대해서 어떻게 하나 했다ㅋㅋㅋ 너무 방대해! 조건도 없어! 뭐부터 건드려야할지 몰라서 패스했다. 다시봐도 모르겠다. 그래서 힌트 얻어왔음 이렇게 조건없이 탁 트인 문제는 직접 제약조건을 걸어주면 좋다. 동전 종류가 1개일 때, 2개일 때.... 동전 개수 제약을 걸면 이렇게 규칙이 나온다. 종류가 1개일 때는 무조건 1가지이고 종류가 2개일 때는... 1원과 2원만 있으면 모든 수를 다 만들 수 있다! #include using namespace std; int main() { int a; scanf("%d", &a); if (a == 1) { printf("%d %d\n", 1, 1); printf("%d", 1); } else { printf("%d %d\n", 2 * .. 더보기
[코드포스 Practice13] B. SwapSort 그냥 바꾸기만 하면 되나?? 되나?? 된다. 이게 다라고?? 이생각 들어서 두번 읽어봤음 음.. 저거 바꾸는 거 더 좋은 방법이 있을 것 같은데 난 이게 최선이었다. 게다가 시간복잡도 내에 돌아가서 그냥 이 방법대로 짰다. #include #include #include #include #include #include using namespace std; using i64 = long long; using ii = pair; int main() { int n, m; scanf("%d", &n); vector v(n); for(int i = 0; i < n; i++) scanf("%lld", &v[i]); int ans = 0; vector vij(n); for(int i = 0; i < n - 1; i+.. 더보기
[코드포스 Practice13] A. Kuriyama Mirai's Stones 문제 풀 때 저게 너무 궁금했다. 문제랑 상관없을 것 같아서 바로 패스하고 코딩했는데 지금은 시간 많으니 걍 친구한테 물어봤다. 불쾌하다? 그런거라는데 음.. 그렇구나 이거 딱 보자마자 그 부분합이었나? 그거 떠올랐다. 부분합? 음 명칭이 이게 맞군 합을 구해놓으면 밑의 m개의 쿼리에서 그대로 갖다쓰기만 하면 끝~~ 질문이 2개라 문제 따라 배열을 2개 만들어줬다. 하나는 그냥 배열 하나는 정렬한 배열 #include #include #include #include #include #include using namespace std; using i64 = long long; int main() { int n, m; scanf("%d", &n); vector v1(n + 1, 0); vector v2(n .. 더보기
[코드포스 Practice13] 후기 A와 B를 풀었다! B 풀면서 혹시 이거 난이도 낮아진 건 아닐까 싶었다ㅋㅋ 쉬운문제 걸린 것 같음. A한 20분정도 풀다가 제출했는데 틀려서 좀 고민하다 long long 안 써준 거 생각났음. 그래서 오래 안 걸리고 바로 수정해서 제출했다. 이상한 꼼수가 생겼는데 보통 코포에서 예제 케이스 다음으로 바로 가장 큰 값 넣어서 터뜨려본다. 그래서 3-4번에서 틀렸으면 그건 오버플로우 때문에 터진겨,,, 그 외 B는 30분 정도 푼 것 같고.. C는 문제보고 뭐지 싶었는데 이해하고 나서도 어떻게 풀지 몰라서 패스.. 나머지 시간동안 D만 잡고 있었다. D 헤매다가 10분 정도 남았을 때 감 잡혀서ㅋㅋ 코드 짜다가 끝났다. 그래도 나름 만족함,, A, B success 뜬 것 보고 눈물났음 ㅠ__ㅠ 예아~ .. 더보기
[코드포스 Practice12] D. White Sheet 전에 색종이로 덮는 문제 푼 적 있었는데.. 있었지... 그 때는 색종이 만큼의 배열을 만들어서 덮은 수를 1로 바꿔가며 확인했었는데 이번에는 범위가 너무 커서 그렇게 못했다. 그래서 덮는 조건을 확인해가면서 몇 가지 유형으로 나눴다. 조건은 세 가지로 나눌 수 있다. 첫번째는 다 덮는거 두번째는 깔끔히 직사각형으로 덮는 거 그 외는 나머지 경우 조건은 다음 검은 종이를 얼마만큼 확인해야할지 기준으로 나눴다. 첫번째 경우는 다음 검은 종이를 확인할 필요가 없다. 그래서 그냥 NO를 출력하고 종료 그 외 경우는 어쩔 수 없이 다음 종이로 다 덮히는지 판단... 두번째 경우는 다 덮히는 지 확인하는 건 같지만 흰 종이의 범위를 줄일 수 있다. ~~나머지는 집 가서~~ #include #include #inc.. 더보기
[코드포스 Practice12] C. Given Length and Sum of Digits... -1 -1 안 되는 거 제외하기 그 후 되는 거 생각해보기 앞에서 부터 - 뒤에서 부터 힌트 받았당 최소 최대 전부 다 손코딩 했는데 북님이 더 깔끔한 코드를 알려주셨다. push_back() 최대랑 최소 그냥 역순 아닌가? 생각 들었는데 다른 점이 있어서 따로 짰다. 그런데 이거 조금 더 생각해보면 최소는 맨 첫자리가 1이어야 하므로 s-1을 구한 다음 첫번째 자리에 1을 더해주면 끝난다ㅋㅋ 짱신기함 #include #include using namespace std; int main() { int m, s; int start, end; scanf("%d %d", &m, &s); vector min_ans(m, 0); vector max_ans(m, 0); if (m == 1 && s == 0) { p.. 더보기