반응형

알고리즘 112

AtCoder Beginner Contest 226 A부터 E까지 업솔빙

AtCoder Beginner Contest 226 A부터 E까지 업솔빙 D번까지 다 푼셋이다. 엣코더에서는 한 70%확률로 800까지 난이도 문제를 풀 수 있고, 그 위에 있는 난이도 문제는 50%확률로 풀 수 있는 것 같다. 티어가 오를 수 있다는 가능성이기 때문에 엣코더를 꾸준히 도전하고 싶다. 이번 대회에서 배운 내용은 무방향 그래프의 사이클 판독 특수한 경우? 라서 한번 경험해보면 좋을 것 같은 문제였다. 문제 옆에 붙어있는 난이도는 Atcoder Problems 에서 추정한 것으로 작성했다는 것을 미리 알린다. A - Round decimals (*14) 접기/펼치기 문제 설명 최대 소숫점 이하 3자리까지 표현할 수 있는 실수 $X$가 주어진다. 해당 $X$와 가장 가까운 정수를 출력하라. 문..

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

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

AtCoder Beginner Contest 225 A부터 D까지 업솔빙

AtCoder Beginner Contest 225 A부터 D까지 업솔빙 D번을 내가 왜 못풀었을까? 계속 강조하지만 문제를 너무 어렵게 생각하지 않는게 좋을 것 같다. 때로는 문제에서 하라는 대로 그대로 구현하는 능력도 중요하다는 것을 잊지말길. 하라는대로만 하고 그 다음 시간초과가 나면 새로운 알고리즘을 생각해보자. 문제 옆에 붙어있는 난이도는 Atcoder Problems 에서 추정한 것으로 작성했다는 것을 미리 알린다. A - Distinct Strings (*12) 접기/펼치기 문제 설명 알파벳 소문자 3글자로만 이루어진 문자열 $S$가 주어진다. $S$를 나열할 때 얻을 수 있는 서로다른 문자열의 개수는 몇개일까? 문제 해설 모든 문자가 같으면 1, 모든 문자가 다르면 6, 그렇지 않으면 3을..

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

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

AtCoder Beginner Contest 224 A부터 D까지 업솔빙

AtCoder Beginner Contest 224 A부터 D까지 업솔빙 이번 대회에서 D번 문제가 내 잊어버린 BFS감을 다시 찾는데 도움이 된 것 같다. 이전에는 BFS문제가 나왔을 때, 이해하는데만 오랜 시간이 걸렸는데, 이제는 이해할 때 생각보다 적은 시간이 걸려서 좋았다. 그리고 D번 문제가 생각보다 잘 만든 문제라서 공부하면서 기분이 좋았다. C번 문제같은 경우는 일단 완전탐색을 항상 생각하는 것이 중요할 것 같다. 심지어 정렬까지도. 문제 옆에 붙어있는 난이도는 Atcoder Problems 에서 추정한 것으로 작성했다는 것을 미리 알린다. A - Tires (*6) 접기/펼치기 문제 설명 문자열 "er"과 "ist"로 끝나는 문자열 $S$가 주어진다. 만약 $S$가 "er"로 끝나면 "er..

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의 개수를 세고..

AtCoder Beginner Contest 223 A부터 D까지 업솔빙

AtCoder Beginner Contest 223 A부터 D까지 업솔빙 D번 문제까지 풀어서 1000점 가량 퍼포먼스가 나와서 가상 레이팅 점수가 올랐다. 정말 뿌듯했다. DP문제를 시간내에 해결했다는 점이 정말 고무적인 성과라고 생각한다. 이제 ATcoder 1400점 갈수 있을까? 문제 옆에 붙어있는 난이도는 Atcoder Problems 에서 추정한 것으로 작성했다는 것을 미리 알린다. A - Exact Price (*6) 접기/펼치기 문제 설명 천호의 지갑에는 1개 이상의 $100$원 동전뿐이 있고, 나머지 종류의 동전은 없다. 이 지갑을 사용해서 정확히 $X$원을 지불할 수 있을까? 문제 해설 나머지 연산을 사용합시다. 정답 코드 #include using namespace std; int m..

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를 제한없이 선택할 수 있기 때문에 이 문제가 쉽..

AtCoder Beginner Contest 222 A부터 D까지 업솔빙

AtCoder Beginner Contest 222 A부터 D까지 업솔빙 D번 문제까지 풀어서 1000점 가량 퍼포먼스가 나와서 가상 레이팅 점수가 올랐다. 정말 뿌듯했다. DP문제를 시간내에 해결했다는 점이 정말 고무적인 성과라고 생각한다. 이제 ATcoder 1400점 갈수 있을까? 문제 옆에 붙어있는 난이도는 Atcoder Problems 에서 추정한 것으로 작성했다는 것을 미리 알린다. A - Four Digits (*5) 접기/펼치기 문제 설명 $0$부터 $9999$사이 숫자 $N$이 주어진다. 4자리 정수이면 그냥 $N$을 출력하고 4자리 정수가 아닐 경우 앞에 $0$을 붙인 후에 그 숫자를 출력하라. 문제 해설 string 생성자를 사용해서 문제를 푼다. 문자열 크기가 4보다 작으면 작은 수..

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$ 크기의 판..

반응형