본문 바로가기

C++

(49)
[작성중]ABC 399 D, E (논리딸리는 스왑문제, 많조분애드혹 플래2) 저번주에 앳코더 털리고 논리가 딸려서 슬프다는 소리를 했는데 이번에도 비슷하게 논리로 털린 것 같다문제를 코드로 옮기기 전 확실한 설계가 필요함을 되새기면서 문제를 다시 풀어 보자 예전에도 잘하진 못했는데 AI로 사기치는 비양심유저들이 등장하면서 문제가 특히 지랄맞아진것같다고생각하면 안된다. 더욱 정진하자내 목표는 앳코더 민트랑 모비스 대회 본선진출 D : 1~N까지 숫자가 2번씩 등장하는 수열에서, 스왑 X번을 해서 같은 원소끼리 인접시키는 문제맞왜틀??https://atcoder.jp/contests/abc399/tasks/abc399_d D - Switch SeatsAtCoder is a programming contest site for anyone from beginners to experts...
ABC398 D,E (모닥불 나오는 좌표계 문제, 이분그래프 + 게임이론 문제) 가끔씩 에디토리얼을 봐도 머리로 이해가 안되는 문제들이 있고 걔들이 기억에 많이 남는데나의 경우 이전에 피보나치수 행렬제곱문제나 TSP문제가 그랬고 이번엔 D번이 그렇다 E번문제의 경우엔 그래프, 게임이론, 인터렉티브 각각에 대해 나름 잘 알고 있다고 생각했으나 처음 보는 게 튀어나오길래 가져왔다D번문제 : 좌표계 움직이는 모닥불문제https://atcoder.jp/contests/abc398/tasks/abc398_d D - BonfireAtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online.atcoder.jp 문제 이해N번(최대 20만번) 바람이..
ABC 391 ABCDE (C++) https://atcoder.jp/contests/abc391/tasks Tasks - AtCoder Beginner Contest 391AtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online.atcoder.jp 퍼포먼스가 안정적으로 1200이상 나와야 앳코더 민트를 바라볼 수 있다C번 문제 쉬운 아이디어가 필요해서 좋았다D번 문제 개끔찍한 구현을 했지만 쉬운 아이디어가 필요한 문제라 좋았다E번문제도 쉬운 문제인데 D를 푸는데 힘을 다 써버린 나머지.......... 생각없이 코드를 짜놓은 뒤 디버깅하다가 시간을 다 써버렸다F번 문제의 경우 다양한 ..
마작컵 2024 - 우인전 3/4 님만 오면 ㄱ (6솔, C++) 백준의 장점은 가끔씩 씹덕같고 재밌는 문제가 올라온다는 것이고 얘도 그렇다https://www.acmicpc.net/contest/view/927https://www.acmicpc.net/contest/view/938https://www.acmicpc.net/contest/view/939비슷하게 위 대회들도 씹덕같은 문제들이 많아서 좋았고 문제들이 기억에 많이 남는다(난이도는 만만하지 않았다)그건 그렇고 올해는 왜 백준 송년대회랑 신년대회 안열리냐? 인공지능이 발전하고 ps에 관한 관심이 줄어드는 것 같아 아쉽다스코어보드 보면서 얍삽하게 쉬운 문제들만 골라 풀었고 6문제 푸는데 2시간정도 걸렸다6솔 배경과 뱃지를 얻었다https://www.acmicpc.net/problem/33040https://www..
[BOJ 33040, 33041 (조금 어려움)] 마작 거신병 (C++) 개인적인 난이도 :아이디어  - 조금 어려움구현 - 쉬움재미 - 재밌음. 추천해요  https://www.acmicpc.net/problem/33040https://www.acmicpc.net/problem/33041 길이가 W인 수열들 H개로 탑을 쌓아 거신병을 만드는데, 위에 있는 수열의 원소들의 합이 아래에 있는 수열의 원소들의 합보다 크면 안 된다.수열의 원소로는 C개의 1과 D개의 9가 존재하는데, C와 D를 남김없이 써야 한다. 개인적으로는 33041을 먼저 풀고 33040을 나중에 풀었다면 더 쉬웠을 것 같다. 33040의 문제풀이를 주류로 설명하도록 하겠다.기본 아이디어마지막에 for문을 이용해 한 행씩 출력하는데,각 행에는 n개의 9와 W-n개의 1이 포함되어 있을 것이고 원소들이 출력되..
[BOJ 17357, 무난함] 자동차가 차주 김표준의 차를 들면? (C++) solved.ac 마라톤 뛰다가 튀어나왔는데 부동소수점 오차때문에 피똥싼 문제다나같은 사람이 또 있나 궁금해서 구글링해 봤는데 없길래 내가 글을 쓴다https://www.acmicpc.net/problem/17357 이 문제를 풀려면 세가지를 알아야 한다.분산에 대한 지식 (제곱의 평균 - 평균의 제곱)으로 분산을 빠르게 구할 수 있다평균을 빠르게 구하기 위해 누적합을 사용하는 방법부동소수점 오차 줄이기1. 표준편차(분산) 빠르게 구하기표준편차의 제곱은 분산이고, 이 문제에서는 표준편차의 대소비교를 요구하는데표준편차a 표준편차a의제곱 그러니까 표준편차끼리 비교할 필요 없이 분산끼리 비교해도 충분하다.분산의 = 제곱의 평균 - 평균의 제곱 이라는 공식을 활용하면 그나마 빠르게 계산이 가능하다.2. 평균 빠..
최근에 못푼 ABC 문제들(저장용) 최근에 ABC하면서 내 골통을 괴롭힌 문제들을 모아놨다까먹을까봐 여기다 메모해 놓고 천천히 풀려고 함 https://atcoder.jp/contests/abc383/tasks/abc383_e E - Sum of Max MatchingAtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online.atcoder.jp최단거리 처럼 보이는 어떤 그래프 문제 같다정점의 개수가 20만개고 간선의 개수가 최대 20만개이기 때문에시간 제한 안에 풀려면 NlogN정도로 풀어야 하는데 그러기 위해선 다익스트라 정도만 활용이 가능함근데 다익스트라를 N개 정점에 대해 모두 실행..
[BOJ 26076, 무난함] RPG Extreme (C++) 구현량으로 유명한 문제다정말 구현만 하면 되는 무난한 난이도이지만 실수 한번 하면 익스트림한 경험을 하게 된다어떤 경우에 스파게티 코드가 생기는지 잘 알 수 있었다하지만 차근차근 구현하고 자잘한 실수를 하지 않는다면 어렵지 않은 문제이다 그래서 아래의 과정을 거쳐 코드를 작성하며 실수를 하면 안된다. 1. 끝까지 읽고 계획하기2. 실수 줄이기3. 적절한 테스트 코드 삽입과 디버깅 ps가 아닌 실제 개발 프로젝트 진행 시에는 더욱 그렇기 때문에다이어그램 / 명세서 / OOP / 테스트방법론 / 디버깅 툴 등등을 활용하는 것 같다....코드를 다 짰는데 어느 부분에서 틀렸는지 모르겠어요 ㅠㅠ만일 당신이 디버깅을 위해 이 글을 검색해 들어왔다면 내 글엔 별로 도움될 내용이 없으니 백준 질문게시판이나 뒤져봐라어..
2024해커컵 해커컵이 1년만에 돌아왔다최근에 O1이라는 녀석이 나와서 알고리즘 대회마다 AI 치터들이 깽판칠 수 있을 것 같기도 한데뭐어쩌겠음내가 신경쓸 영역도 아닌거같다잘하자 내 실력이 작년보다 늘었는지는 잘 모르겠다3라운드 진출(500등) 하면 티셔츠 준다작년엔 2라운드에서 1700등 하면서 3라운드 못가고 티셔츠 못받음 해커컵 입출력 처리하기일단 입출력이 까다롭다작년에 내가 제출했던 코드를 참고하자 #include #define fastio cin.tie(0)->sync_with_stdio(0)#define ll long long#define pii pairusing namespace std;const int dx[4]={1,0,-1,0};const int dy[4]={0,1,0,-1};int main(){ f..
[BOJ 26076, 조금 어려움] 곰곰이의 식단 관리 2 (C++) 제일 알고리즘 공부 열심히 하던 시기에 꼭 풀고싶었는데 못풀었던 문제다0-1 bfs에 대해 공부중 관련 문제에 이게 뜨기도 했고무조건 될 거 같은 아이디어가 생각나서 풀었음 일반적인 bfs와 다른 발상이 필요한 문제다 보니 아이디어를 떠올리기 다소 어렵다고 생각한다.https://www.acmicpc.net/problem/26076 가장 기본적인 bfs문제는 1,1 점에서 N,M점까지 이동하기 위해 최소 몇칸을 이동해야 하는지 계산한다.그렇지만 이 문제는 발상을 반대로 해서, 1,1점에서 N,M 점까지 절대 이동하지 못하게 하기 위해최소 몇개의 벽을 놓아야 하는가에 대해 계산하는 문제이다. 간단한 관찰을 거치면 답은 0,1,2중에 무조건 존재함을 알 수 있다.(그래서 애드혹 태그가 붙은듯)그리고 아이디어..