본문 바로가기

분류 전체보기

(23)
Codeforces Global Round 12 어제 밤부터 진행된 코드포스 글로벌 라운드 12의 풀이이다. A. Avoid Trygub 주어진 문자열을 정렬해 출력하기만 해도 trygub을 없앨 수 있다. #include using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0); int T; cin >> T; while (T--) { long long N; cin >> N; string str; cin >> str; mapm; for (char i : str)m[i]++; for (int i = 0; i 0) { m[i + 'a']--; cout T; while (T--) { long long N, k; cin >> N >>..
Codeforces Round #687 (Div.2) 어제 있었던 코드포스 라운드 687 풀이이다. 3솔브를 했고, D를 업솔브했다. A. Prison Break \(max( r + c - 2, m - r + c - 1,n - c + r - 1,m - r + n - c )\)가 답이다. #include using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0); int T; cin >> T; while (T--) { long long m, n, r, c; cin >> m >> n >> r >> c; long long mx = max({ r + c - 2, m - r + c - 1,n - c + r - 1,m - r + n - c }); cout T; while (T--) { long long..
Codeforces Round #686 (Div.3) A. Special Permutation 길이가 \(N\)이면서 모든 \(i\)에 대해 \(arr[i] \ne i\)를 만족하는 수열을 출력하는 문제이다. \( \{2, 3, 4, ... , N, 1\} \)은 주어진 조건을 무조건 만족한다. #include using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0); int T; cin >> T; while (T--) { int N; cin >> N; for (int i = 1; i > in; v[i] = in; m[in]++; } int ans = 0; int ind = 0; for (auto &i : m) { ind++; if (i.second == 1) { ans = i.first;..
Codeforces Round #685 (Div.2) 11월 21일 있었던 코드포스 라운드 685의 풀이이다. A. Subtract or Divide 주어진 수 \(N\)을 두 가지 연산을 이용해 \(1\)로 만드는데, 필요한 연산 횟수의 최솟값을 구하는 문제이다. 두 가지 연산은 각각 수를 자신의 진약수로 나누거나, \(1\)을 빼는 연산이다. 결정적인 관찰은 \(N\)이 짝수이면 1번의 연산만으로 무조건 \(N\)을 \(2\)를 만들 수 있는 것이다. 이것을 늦게 발견해서 이 문제를 푸는 데 25분이나 걸렸다. 시간 복잡도는 테스트 케이스 당 \(O(1)\)이다. #include using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0); int T; cin >> T; while (T--..
Educational Codeforces Round 98 (Div.2) 그저께 밤에 있었던 Educational Codeforces Round 98 풀이이다. 총 3솔브를 했다. A. Robot Program 주어지는 두 길이를 \( N, M \)이라 하자\(( N \ge M )\). 이 때, 아래 그림과 같이 움직이는 게 최선의 경로이며, 총 필요한 Command의 개수는 \(N=M\)일 때 \(2M\)개이고, \(N \neq M\)일 때 \(2N - 1\)개이다. #include using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0); int T; cin >> T; while (T--) { int N, M; cin >> N >> M; if (N < M)swap(N, M); int res = 0; res..
Codeforces Round #684 (Div.2) 어제 있었던 Div.2 코드포스 라운드의 풀이이다. 총 3솔브를 했다. A. Buy the String 이진 수열을 적당히 변환시켜 수열을 구매하는 값을 최소화시키는 문제이다. 0의 가격, 1의 가격, 변환 비용의 대소 비교를 통해 쉽게 문제를 해결할 수 있다. 시간 복잡도는 $O(N)$이다. #include using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0); int T; cin >> T; while (T--) { long long n, c0, c1, h; string s; cin >> n >> c0 >> c1 >> h; cin >> s; long long cost = 0; if (c0 >= c1) { if (h < c0 - c1..
프로그래머스 월간 코드 챌린지 경품 당첨 갑자기 메일이 날아와서 보니까 GS25 모바일 상품권 5천 원에 당첨되었다. 몬스터 구매 비용으로 사용될 듯 하다.
2020 Seoul ICPC Preliminary 후기 10월 10일에 2020년도 ICPC 인터넷 예선이 있었다. E, F, I, K를 굉장히 빨리 풀었고, A, H, L에 도전해보았는데 결국 풀지 못했다. 최종 순위는 교내 3등이 되었다. 개인적으로 코드포스를 하면서 했던 빠르고 정확히 문제를 푸는 연습이 패널티를 줄이는 데 도움이 되었던 것 같다. 팀원은 나와 yooshnn, jsh031613으로, 3명 다 팀 대회 경험이 없거나 턱없이 부족했다. 그래도 열심히 하기로 하고, 팀명은 적절히 3명의 닉네임을 섞은 yoojin and dllrary로 결정했다. Timeline 대회 시작 전 원래 스터디룸 같은 곳을 빌려 진행하려고 했는데, 프린터까지 사용 가능한 마땅한 곳을 찾지 못해서 우리 집에서 진행하기로 했다. 대회 2시간 전 모여 밥을 먹고 Zoom..
프로그래머스 월간 코드 챌린지 2020-10 월간 코드 챌린지가 끝났다. 1번에서 함수값을 return해야 하는데 break를 하고 있었고, 그 오류를 20여분 뒤에 찾았다... 2번은 백준에 같은 문제가 있어서 쉽게 해결할 수 있었다. 3번은 트리의 지름을 이용하는 문제인데, 20여개의 Test Case 중 4개가 통과가 안 돼서 100점 만점에 84.6점을 받았다. 반례는 아직도 찾지 못했다. 4번은 정해 구현을 어떻게 해야 할 지 몰라서 $O(N^2)$ DP로 긁으려고 시도했으나, 실패해 결국 $O(N^4)$로 짠 코드로 35.3점을 긁었다. 총점 400점 만점에 319.9점으로 전월의 123위에서 60여 계단 상승한 64위를 달성했다.
2020년 9월 근황 400점 만점에 303.7점으로 123등을 했다. 3번까지 실수 없이 잘 푼 것 같아 그럭저럭 잘 한 것 같다. 7문제 중 1, 3, 4, 5번 문제를 풀어 4솔브로 코딩 테스트에 합격했다. 2차는 따로 준비를 하지 않았기 때문에 제대로 준비해서 내년 쯤에 볼 듯 싶다. 민트를 달고 나서 제자리걸음만 두 번 하다가 어찌어찌 Div.2 대회에서 5솔브, 4솔브를 하며 두 대회 만에 200점 가량 레이팅을 올려 블루를 달았다. 교내의 1, 2학년 학생을 대상으로 하는 IGRUS Newbie Programming Contest에서 1위를 했다. 90명이 넘게 참가한 대회였고, 교내의 1, 2학년 학생들이 얼마나 잘 하는지 잘 몰라 조금 부담스러웠지만, 다행히 1위를 할 수 있었다. 하다보니 올해 ICPC 팀원..