본문 바로가기

코드포스

[코드포스 Practice20] D. BerOS File Suggestion 아 저번주 토요일날 밤을 새서라도 끝냈어야 했는데 5일 지나니깐 기억이 안 나서 힘들었음 풀이 듣고 재밌었던 문제 전처리 하는 문제는 항상 신기하고 기발한 것 같음 어떻게 이렇게 풀 수 있지??? 휴 map 쓴다고 힘들었다. map이랑 pair형 벡터랑 자꾸 헷갈려 가지고 m[s] 이런식으로 접근 하는걸 자꾸 까먹는다. sudstr도 처음 써보는데 잘 돌아가는지 궁금해서 확인해봤음 다행히 잘 돌아간다. 이 문제 처음 풀 때 틀렸었다. 디버깅 해보니 aaa이런 문자열이 들어오면 a 한 번만 인덱스를 넣어줘야 하는데 중복 제거를 안 했었다ㅋㅋ sort(m[s].begin(), m[s].end()); m[s].erase(unique(m[s].begin(), m[s].end()), m[s].end()); 정렬 .. 더보기
[코드포스 Practice19] E. Tell Your World 코포 장난하나! 왤케 어려워!! 싶은 문제 였는데 점 세 개만 비교하면 돼서 안도했다. 이걸 어떻게 하면 점 세 개만 써도 된다는 생각이 떠오를까 암튼,, 점 두개는 직선 만들고 하나는 다른 점과 비교하는 용도로 쓰면 될거라 생각했다. 그런데 기울기 구하는 부분에서 문제였다. y차에서 x차를 나눠야 하는데 그럼 실수값이 되버리고 만다. 분명 실수끼리 비교하면 소숫점 때문에 문제 생길텐디 북님한테 물어보니 기약분수로 나눈 다음 분모 곱해서 정수로 비교하면 된다고 했다. 아 근데 또 기약분수가 문제였다. 좀 생각해보니 최대 공약수로 나누면 되겠다 싶었음. 최대공약수... 지금까지 4번은 쓴 듯 하지만 아직까지 기억 못하고 있음 눈 닿는 곳에 적어두면 언젠가 외우겠지 코드는 이렇게 짰다. #include #i.. 더보기
[코드포스 Practice19] D. Minimize the error 아 이거 열심히 생각했는데 입력 1000밖에 안 돼서 간단한 방법으로 풀 수 있었다. 이게 왜 D번이지?? #include #include #include #include #include #include #include #include #include using namespace std; using i64 = long long; using ii = pair; using ii64 = pair; int main() { int n, k1, k2; scanf("%d %d %d", &n, &k1, &k2); vector a(n); vector b(n); for (int i = 0; i < n; i++) scanf("%d", &a[i]); for (int i = 0; i < n; i++) scanf("%d", &b.. 더보기
[코드포스 Practice20] C. Gabriel and Caterpillar https://burningjeong.tistory.com/37 2869 달팽이는 올라가고 싶다 애증의 달팽이 문제.. 저렇게 했는데 틀려서 다시 알고리즘 짜봤다 근데 또 똑같은 알고리즘이 나왔다. 알고보니 (a-b)만큼 n일을 올라가고 마지막 낮에 a만큼 올라가므로 1을 더해줘야 한다. 해결 burningjeong.tistory.com 헉ㅋㅋㅋ 보자마자 너무 반가웠다 이거 전에 푼 달팽이 문제 아녀!! 빨리 푼다고 풀었는데 그래도 시간 좀 걸렸네; You can consider that Gabriel noticed the caterpillar just after the classes at 2 pm. 이 문장에서 좀 헷갈렸다. 가브리엘이 (가브리살 먹고싶다) 2시에 하교할 때만 확인하는지 아니면 2시 이.. 더보기
[코드포스 Practice20] B. OR in Matrix 어휴.. 애증의 B번... 얼른 풀고 D번으로 가려 했는데 못갔다 처음 풀 때 연산 그대로 하면 N^4 나올 것 같아서 rowa, cola 따로 빼서 연산했는데 지금 보니 N^3 밖에 안 나올 것 같아서 바로 풀어도 됐을 것 같다. 풀이는.. 일단 B가 0인 경우는 i, j 모두 0일거라 i, j 값을 기록해둔다. 다음으로 B값이 맞는지 확인한다. i, j가 둘 다 0인데 B가 1이면 안되므로 NO 출력해주고 i, j가 둘 다 1이고 B도 1이면 그건 ans 배열에 1 적어둔다. 마지막으로 ans 배열 출력해주면 끝~~ 하지만 틀렸다ㅠㅠ 알고보니 B -> A를 만들 때 이 자리에 반드시 1이 있어야 하는 조건은 만족하는데 이게 다시 B를 만드느냐는 확인하지 못했다 그래서 A -> B가 되는지 확인하는 부.. 더보기
[코드포스 Practice20] A. Inventory 이런 문제 많이 풀어봤는데 항상 일케 푸는게 맞나??? 생각하면서 하게 됨 푸는 건.. 먼저 배열 쭉 돌면서 count++로 기록한다. 그 다음 count 배열 돌면서 0인걸 따로 저장해놓는다 (이건 없는 값이라 나중에 추가해야 하므로) 다시 배열 돌면서 이번에는 1이 아닌 수를 위의 저장해놓은 배열의 수로 대체한다. 근데 틀렸다ㅋㅋㅋ 난 a가 더보기
[코드포스 Practice20] 후기 아이고~~ 또 밀린다 밀려~~~ 19 DE랑 20 DE 내일 꼭 끝내야지. 오늘도 저번주랑 푸는 게 비슷했다. A번 20분 정도 풀다가 틀림 -> B번 30분 잡다가 틀림 -> C번 30분 풀고 해결! -> A번 10분만에 해결! 이까지 했을 때가 30분 남았어서 나름 B 10분만에 풀고 20분동안 D번 풀 계획이었다. 그런데 결국 끝까지 못 풀었다ㅠㅠ 아 너무 아쉬움 그래도 오늘 C번 쉬워서 시간 좀 남은듯ㅋㅋㅋ 이거 보자마자 백준! 달팽이 문제! 생각났다. 반가웠음ㅎㅎ 암튼 얼른 ABC 문제 마무리 해야지 ucpc 문제는 언제 끝내냐 ~.~ 더보기
[코드포스 Practice19] E. Tell Your World [미완] ucpc 다시 풀고 풀 예정 더보기