반응형

알고리즘 112

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

AtCoder Beginner Contest 221 A부터 D까지 업솔빙 역대 최악의 퍼포먼스가 나올거 같지만 그냥 묵묵히 나는 문제를 푼다. 모르면 모르는데로, 알면 아는데로 문제를 계속 풀자. 내 머리를 조각하는 느낌으로 문제 옆에 붙어있는 난이도는 Atcoder Problems 에서 추정한 것으로 작성했다는 것을 미리 알린다. A - Seismic magnitude scales (*10) 접기/펼치기 문제 설명 지진의 진도는 지진에 의해 발생한 에너지크기의 로그를 씌운 값이다. 진도가 1 상승할때마다 에너지의 양은 32를 곱한 만큼 상승한다. 진도 $A$는 $B$보다 얼마나 큰 에너지를 가지고 있을까? 문제 해설 솔직히 문제는 이해 안됐지만 예시를 보면 간단히 이해할 수 있는 문제이다. 로그 스케일..

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$이 주어진다. 주어진 숫자의 아무 부분 집합을 선택해서 이 숫자들의 부호를 바꾼다. 이때 이 연산은 횟수 제한이 없다. 우리가 얻을 수 있는 배열 중에서..

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

AtCoder Beginner Contest 220 A부터 D까지 업솔빙 atcoder에서는 동적 계획법과 간단한 그래프 문제를 공부하고. 코드포스에서는 그리디와 구현 그리고 수학 마지막으로 이분탐색을 공부하는 방식으로 생각하자. 그런데 이번 대회의 DP는 진짜 80%는 접근 했는데 점화식에서 왼쪽 항은 맞았지만 오른쪽 항이 틀려서 아쉽게 답을 참고하고 풀었다. 문제 옆에 붙어있는 난이도는 Atcoder Problems 에서 추정한 것으로 작성했다는 것을 미리 알린다. A - Find Multiple (*14) 접기/펼치기 문제 설명 $A$와 $B$사이에서 $C$의 배수인 값을 찾아라. 만약 그런 숫자가 없다면 $-1$을 출력하라. 문제 해설 $A$와 $B$가 $1000$보다 작기 때문에 그냥 완전탐색을..

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..

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

AtCoder Beginner Contest 219 A부터 D까지 업솔빙 Dynamic Programming 너무 싫다. 문제해설을 보고나서 이해가 된다고 생각해 돌아서면 다시 까먹는다. 이번 대회 셋도 결국 Knapsack-problem이었는데, 쫄아서 못풀었다. 너무 화나났다. 이것도 인내해야하니... 이번 대회에서 얻어간 것은 문자열 대소 비교 함수 만들기 Knapsack문제 제발 이해하고 문제 풀어보기. 문제 옆에 붙어있는 난이도는 Atcoder Problems 에서 추정한 것으로 작성했다는 것을 미리 알린다. A - AtCoder Quiz 2 (*6) 접기/펼치기 문제 설명 Atcoder 왕국에는 프로그래밍 능력을 측정하기 위한 검사가 진행중이다. 참여자는 최대 $100$점까지 얻을 수 있고, ..

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...

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

AtCoder Beginner Contest 218 A부터 E까지 업솔빙 AtCoder가 코드포스보다 높은 레이팅으로 쳐주는 이유를 이 대회를 풀면서 나왔다. 분명 800가량 퍼포먼스가 나와서 현재 레이팅이 600인 상황이었기에 조금이나마 오를거라고 생각했는데, -7점을 받았다. 도대체 무슨 기준일까? 이번 대회에서는 D번 문제에서 시간을 많이 써서 E번 문제를 풀다가 포기했다. E번 문제는 딱보면 무슨 알고리즘인줄 알았지만 그것을 응용하는 문제를 여기서 처음 만나서 그런지 헤맸다. 그리고 C번 문제는 일단 영어를 이해 못했고, 두번째로 솔직히 접근 방법조차 이해가 안됐다. 이번 대회에서 배운 것은 크루스칼 알고리즘 구현 복습 & 응용 문제 풀기 행렬의 전치 알고리즘으로 구현하기 도형의 평행이동 함수로 ..

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

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

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

AtCoder Beginner Contest 217 A부터 E까지 업솔빙 AtCoder 최고 퍼포먼스가 나왔다. 아직도 기억나는 퍼포 1183점이고, 이 점수를 환산하면 코드포스 블루 레이팅에 해당하는 1606이다!!. 이런 가끔식 이상치들이 생겨날때 마다 내가 PS를 접지 못하는 이유가 되는 것 같아서 좋아해야할지 말아야할지 모르겠지만 그래도 뭐 어떤가? 인생 목표인 코드포스 rating 블루 or atcoder 1200이상인 목표에 더욱 가까워졌으니 지금을 즐기고 싶다. 참고로 E번까지 전부 출제자 의도에 맞게 풀어서 더욱 기분이 좋다. 이번 대회에서 배운 것은 자료구조 유형 익숙해지기 c++의 iterator와 관련된 유용한 함수 prev, next 문제 옆에 붙어있는 난이도는 Atcoder Pro..

반응형