반응형

알고리즘/codeforces 86

Educational Codeforces Round 121 A부터 C까지 업솔빙

Educational Codeforces Round 121 A부터 C까지 업솔빙 C번문제를 거의 다 풀었다고 생각했는데, 쉬울듯 말듯 계속 풀게만드는 문제라서 애먹었다. DIV 2 3솔의 벽은 높은것 같다. 그래도 *1100문제를 풀어서 다행이다. 이제 진짜 B번 문제는 좀 감이 잡히는 것 같아서 기분이 좋은 하루이다. A. Equidistant Letters (*800) 접기/펼치기 문제 설명 알파벳 소문자로 이루어진 문자열 $s$가 주어진다. 각 문자는 2번보다 더 많이 등장하지 않는다. 너의 목표는 같은 문자사이의 거리를 모두 같게 문자열에 있는 문자를 재배열 하는 것이다. 이때 문자를 새로 추가하거나 제거할 수 없다. 문제 해설 같은 문자사이의 거리를 모두 같게 만드는데 여기서 같은 문자는 최대 ..

Codeforces Round #766 A부터 C까지 업솔빙

Codeforces Round #766 A부터 C까지 업솔빙 B번 문제가 게임이론? 이걸 어떻게 알아 ㅋㅋㅋㅋㅋㅋㅋㅋㅋ 근데 막상 풀이 보면 납득이 가는 이유라서 정말 어이없는 문제. 이해가 정말 잘되서 놀랐다. C번 문제는 정수론 관련된 문제인데 알고리즘을 위한 정수론이 참 애매한것 같다. 정수론이 흔들리면 알고리즘에서 약점이 되는데, 그렇다고 막상 정수론을 공부하자고 하니 투머치인것 같고... 그냥 계속 문제 풀자. A. Not Shading (*800) 접기/펼치기 문제 설명 $n \times m$ 크기의 격자판이 있다. 몇개 격자에는 검은색으로 칠해져있고, 나머지는 흰색으로 칠해져 있다. 한번의 연산으로 검은 격자중 하나를 선택해서 다음 연산을 한번 실행한다. 해당 격자를 포함한 모든 행을 검은색..

Codeforces Round #765 A부터 B까지 업솔빙

Codeforces Round #765 A부터 B까지 업솔빙 C번 문제가 *1700문제라서 심지어 dp라 깔끔하게 포기하고 오는 길이다. 나는 *1400까지 문제만 깔끔하게 푸는 실력이 되고 싶다. A. Ancient Civilization (*800) 접기/펼치기 문제 설명 이진수의 거리 는 다음과 같이 정의한다. 두 이진수끼리 같은 자리를 비교할 때, 서로 다른 숫자의 개수가 바로 그 거리이다. $n$개의 이진수가 주어졌을 때, 각 이진수와 y사이 거리 합을 최소화 하는 이진수 $y$를 찾아라. 문제 해설 문제를 보면서 처음에는 단순하게 or연산을 사용하면 되나 싶었는데, 자세히 보니까 아니였다. $n$개의 이진수에 대해서 맨 뒤자리 비트부터 보는데, 각 자리의 비트에서 1의 개수와 0의 개수를 세고..

Codeforces Round #764 A부터 D까지 업솔빙

Codeforces Round #764 A부터 D까지 업솔빙 C번 문제까지는 어찌 문제를 풀었는데, 퍼포먼스는 1100정도 나온 것 같다. d번 문제는 이분탐색이라는 단서가 너무 많이 주어져 있었는데, 활용능력하고 결정함수를 만드는 능력이 떨어져서 못푼것 같다. A. Plus One on the Subset (*800) 접기/펼치기 문제 설명 배열 $a[1, ..., n]$이 주어진다. 그리고 다음 연산을 몇번이고 수행해서 배열의 모든 원소를 같게 만들고 싶다. 한 연산에서, 배열에 있는 index를 선택하고 해당 index에 속한 원소값을 1 올린다. 배열에 있는 모든 원소를 모두 같게 만들기 위해서 필요한 최소 연산횟수는 무엇인가? 문제 해설 index를 제한없이 선택할 수 있기 때문에 이 문제가 쉽..

Hello 2022 A부터 B까지 업솔빙

Hello 2022 A부터 B까지 업솔빙 확률과 통계를 못하는 나는 경우의 수를 나누는 것을 정말 못한다. B번 문제가 그냥 경우의 수 나누는 문제 그자체라서 못풀겠다. 내가 하는 지금 문제풀이가 나중에 코딩테스트에 도움이 되길. A. Stable Arrangement of Rooks (*800) 접기/펼치기 문제 설명 $n \times n$ 크기 체스보드와 $k$개 룩이 있다. 칸 $(x, y)$ 는 행 $x$와 열 $y$의 교차점이다. 만약 한 룩이 다른 모든 룩에게 잡히지 않는다면 이 배치는 좋다 고 한다. 만약 한 룩을 다른 인접한 칸에 한칸 옮겨서 좋지 않은 배치가 된다면 이 좋은 배치는 안정적이지 않다고 한다. 그렇지 않으면 이 배치는 안정적인 배치라고 한다. $n \times n$ 크기의 판..

Good Bye 2021: 2022 is NEAR A부터 C까지 업솔빙

Good Bye 2021: 2022 is NEAR A부터 C까지 업솔빙 B번까지 풀었는데, 퍼포먼스가 1300까지 나오는 기적? B번을 생각보다 빨리 풀어서 그런것 같다. 나는 쉬운 문제 셋보다 어려운 문제셋에 더 강점이 있는 것 같다는 생각을 요즘 계속 하는 중이다. 쉬운 문제셋은 생각보다 당황을 많이 하는데, 어려운 문제셋은 최선을 다해서 풀려고 해서 그런것 같다. 이번에는 C번까지 업솔빙을 해봤으니 공부가 더 많이 된것 같다. A. Integer Diversity (*800) 접기/펼치기 문제 설명 $n$개 정수 $a_1, a_2, ..., a_n$이 주어진다. 주어진 숫자의 아무 부분 집합을 선택해서 이 숫자들의 부호를 바꾼다. 이때 이 연산은 횟수 제한이 없다. 우리가 얻을 수 있는 배열 중에서..

Educational Codeforces Round 120 A부터 B까지 업솔빙

Educational Codeforces Round 120 A부터 B까지 업솔빙 C번 문제가 너무 어려워서 패스. 이분탐색 문제인데 좀 더 복잡한 수학이 결합되어 그런지 이해하기 어려웠다. 너무 배끼는 듯한 느낌이 들어서 업솔빙하는게 아니라는 판단이 들어 이번에는 B까지만 업솔빙 하려한다. A. Construct a Rectangle (*800) 접기/펼치기 문제 설명 길이가 $l_1, l_2, l_3$인 세 막대기가 있다. 이 막대기중 하나를 부숴 다음 조건을 맞춰 두 조각으로 만든다. 두 조각은 양수 길이이다. 두 조각의 합은 원래 부수기전 막대기의 길이와 같다. 만들어진 4개의 조각으로 각각 사각형의 한 변으로 사용해 정확히 직사각형을 만들 수 있다. 막대기의 길이가 주어졌을때 위의 조건을 만족하는..

Codeforces Round #763 (Div. 2) A부터 C까지 업솔빙

Codeforces Round #763 (Div. 2) A부터 C까지 업솔빙 B번 문제를 이해 못해서 엄청 낮은 퍼포를 받았다. 심지어 A번 문제 해답을 생각하기까지 40분이라는 시간이 걸린걸 보면 나는 알고리즘에 재능이 없는게 아닐까? 너무 실력이 들쑥날쑥 한것 같다. 폭풍성장을 희망하면서 해설 시작해보자. A. Robot Cleaner (*800) 접기/펼치기 문제 설명 로봇 청소기가 사방이 벽으로 둘러싸인 직사각형 방 바닥에 놓여있다. 바닥은 길이가 $n$인 행과 $m$인 열로 이루어져 있다. 바닥의 행은 맨 위에서 1부터 $n$까지 번호가 있고, 열은 왼쪽부터 오른쪽으로 $1$부터 $m$까지 번호가 매겨져 있다. 로봇 청소기의 초기 위치는 $(r_b, c_b)$이다. 1초에 로봇 청소기는 행 $d..

Codeforces Round #762 (Div. 3) A부터 C까지 업솔빙

Codeforces Round #762 (Div. 3) A부터 C까지 업솔빙 나는 개똥벌래~ 코딩을 못하네 알고리즘 못하네~ *1200도 못푸네 A. Square String? (*800) 접기/펼치기 문제 설명 어떤 문자열이 한줄에 두번 연속으로 써있으면 그 문자열을 square 이라고 한다. 문자열 $s$가 주어질때 그 문자열이 square인지 확인하라. 문제 해설 문자열이 2번 연속으로 써있는 것을 확인하기 위해서는 처음부터 문자열의 절반까지 부분 문자열이 절반부터 맨 끝까지 부분 문자열과 같아야 한다. substr() 함수를 쓰면 가볍게 해결 정답 코드 #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin...

Codeforces Round #760 A부터 D까지 업솔빙

Codeforces Round #760 A부터 D까지 업솔빙 알고리즘 놓은지 1달이 되서 다시 잡은 코드포스이다. 내가 코드포스에서 나오는 문제 유형을 잘 못하는걸로 결론을 내렸다. 하지만 내가 잘 못하는 것을 계속 손 놓고 있으면 그 분야는 계속 못하게 된다. 잘 몰라도 계속 붙잡는것이 필요한 순간. 언젠간 성장하겠지. A. Polycarp and Sums of Subsequences (*800) 접기/펼치기 문제 설명 3개 양의 정수로 이루어진 배열 $a$가 주어진다. 이 배열로 만들 수 있는 모든 비어있지 않은 subsequence들의 원소의 총 합을 다른 배열에 적는다. 그리고 이 배열을 오름차순으로 정렬한다. 그러면 $7$개의 원소로 이루어진 배열 $b$가 만들어진다. 배열 $b$가 주어졌을 때..

반응형