본문 바로가기

분류 전체보기

(88)
문제해결기법 조교를 하며 이번에 과제로 https://www.acmicpc.net/problem/11048해당 문제와 비슷한 문제가 나왔다, 차이가 있다면 최대가 아니라 최소라는 것 그래서 해당 문제에서 유의해야할 것은 두 가지 있다. 위 문제에서는 r+1,c+1을 이용할 필요가 전혀 없다. 음수인 값도 없기 때문에 r+1 -> c+1이나 c+1 -> r+1을 해서 손해를 볼 일이 없기 때문이다. 최소가 되도록 하기 위해서는 r+1과 c+1도 의미가 있다. 사실상 백준의 저 문제에서도 구현에서 r+1,c+1을 포함해도 문제가 없기 때문에 과제로 나온 문제에서 문제가 발생한 사람은 없었다. 다른 하나는 dp를 이용해 이 문제를 해결한다면 테두리의 값을 신경써야 한다. 보통 dp 테이블을 만들 때 n+1, m+1로 제작을 하는데 이..
[파이썬 문법] 나는 재귀를 안 썼는데 왜 recursionError가? 최근 백준 문제를 풀다가 좀 편하게 짜려고 이상한 코드를 하나 짰었다.백준 게시판에 질문도 했었는데 아무도 답이 없었고, 이상한 짓이 굉장히 하고싶어지는 시험기간의 영향으로 해결하게 된 문제이다. 문제는 요약하면 문자열 여러개가 주어지고 배치되는 순서가 주어지면 그거에 맞춰서 문자열을 배치하면 되는 문제이다. n이 50만이나 되고, 문자열 길이의 총합도 50만까지 가능하다. 따라서 일반적으로 문자열을 합치는 방식으로 풀게된다면 시간 초과가 나게 된다. 그 이유는 파이썬 문자열 연산은 최종적으로 완성되는 문자의 길이만큼의 시간이 소요된다. 조금 깊게 가보면 파이썬 문자열은 "불변성"을 갖고, 뒤에 추가되는 것이 아닌 불변하는 여러개의 문자열에서 문자를 긁어와 새로운 문자열을 만드는 것이기 때문이다.a라는 ..
백준 9663 NQueen 파이썬으로 다양하게 풀어보기 1년에 한두번씩은 꼭 푸는 것 같은 NQueen 문제, 옛날 풀이부터 차근차근 한번 되짚어 보자, 기본적인 틀은 다 같다. 백트래킹을 사용하며, 한 행을 기준으로 백트래킹을 진행하며, 가능한 위치를 찾아 퀸을 배치한다. 0. 배치할 수 있는지 8방향 탐색해서 판별하는 경우배열에 퀸을 놓고, 현재 놓을 위치 기반으로 8방향을 탐색해서(6방향만 탐색해도 문제 없다, 왜냐하면 한 행에는 하나의 퀸만 놓을 수 있기 때문에) 퀸이 존재한다면 불가능할 것이고, 퀸이 존재하지 않는다면 가능할 것이다.노란색이 이미 배치된 퀸이고, 주황색에 배치가능한지 판별하려 했을 때 저 8방향을 모두 탐색해서 다른 퀸이 존재하는지 아닌지 판별한다.존재한다면 넘어갈 것이고, 존재하지 않는다면 배치할 것이다.불필요한 탐색이 굉장히 많다..
코드포스 블루 달성! 이번에 그렇게 잘 풀었다고 생각 안했는데 운좋게 블루에 올라갈 수 있었다. ( 드디어..! ) 그래프는 "그 1년반"을 제외하면 꾸준히 우상향,, 아마 졸업 전까지 퍼플까지 노려보지 않을까 싶다. 지금까지 꾸준히 블루퍼포가 나오고 있어서 고점이 터진다면 충분히 가능하지 않을까 싶다. 색깔 참 이쁜 것 같다.
Codeforces Round 974 (Div. 3) 뭔가 계속 귀찮고, 시간이 안맞아서 이대로면 언제 다시 칠지 몰라서 조금 피곤하지만 몬스터 한캔 빨고 시작했다. 연휴를 마무리하는 기념으로 div3 응시 시작 https://codeforces.com/contest/2014 A번 문제알고리즘 : 구현 A번 문제는 간단한 문제였다. 사람들이 가지고 있는 금화의 개수가 배열로 주어진다. 금화를 k개 이상 가지고 있는 사람에게서 금화를 모두 가져올 수 있고, 금화가 0개인 사람을 만나면 내가 금화를 가지고 있다면 금화를 준다.이렇게 금화를 준 횟수를 구하는 문제이다. 더보기from sys import stdin,setrecursionlimitinput=stdin.readlinesetrecursionlimit(3000)from collections import ..
Codeforces Round 898 (Div. 4) (버추얼) 이번에는 2시간 30분 짜리 셋이었는데, 문제는 총 8문제 있었다. 이번에는 친구 2명과 함께 시작했다.  저번과 마찬가지로 이번에도 올솔에 성공했다! 문제 모음https://codeforces.com/contest/1873  A번 문제abc 3글자가 순서가 바뀐 채로 주어진다. 단 한번 두 글자를 스왑했을 때 abc로 만드는게 가능하면 YES 불가능하면 NO 이다.예시로 cba는 a와 c를 스왑하면 abc를 만들 수 있다. cab의 경우 스왑 한번으로 abc를 만들 수 없다. 리뷰때 풀이가 크게 2개가 나왔는데cab와 bca 가 아니면 모두 YES, abc 순서에 맞지 않는 자리의 수가 3개면 NO 이 두 가지 정도였다.(대충 제출했다 1WA 적립..)더보기from sys import stdin,set..
Codeforces Round 886 (Div. 4) (버츄얼) 후기 https://codeforces.com/contest/1850  친구들이랑 학기 중에 매주 1회씩 버추얼 돌리기로 계획,첫 주인데 응시 도중 두명이 도망갔지만 일단 끝까지 풀었다.  div 4긴 하지만 처음으로 다 풀었다! 2년전에 div4에서도 올솔을 한적은 있지만 그때는 해시 저격으로 결국 한 문제를 틀렸었는데 이번에는 그런거 없이 다 풀었다.  https://codeforces.com/contest/1850/problem/A A번은 숫자 3개가 주어졌을 때 두 수의 합이 10을 넘길 수 있는지 없는지 판별하는 문제였다. 더보기from sys import stdin,setrecursionlimitinput=stdin.readlinesetrecursionlimit(3000)from collection..
[2024 KAUPC] 대회 문제 풀이(코드) 대회 개최를 끝내고, 간단하게 문제를 다시 풀어보았다. 다 푼건 아니고 스코어보드를 계속 보면서 정답률이 낮은 문제, 많은 사람들이 못 푼 문제 등을 다시 한번 풀어보았다. 문제가 나중에 수정된 문제들이 많아서 그냥 처음 푼다는 마인드로 다시 풀었다. A번 기후동행카드https://www.codetree.ai/problems/climate-card/description 코드트리 | 코딩테스트 준비를 위한 알고리즘 정석국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.www.codetree.ai 올해도 수고를 해주신 KOALA (전)회장님이 내신 문제다. 이 문제가 1번 문제기도 하고, 좀 나중에 만들어진 문제라 직접 풀어본건 처음이..
7월달 여러 대회들 후기 7월 동안 현대모비스, 엘리스, SCPC, UCPC가 있었다. 전부 다 응시는 했는데 결과가 잘 나온 대회는 없었다 ㅠ.. 모비스는 예선 300점을 빠르게 모으면 성공 늦게 모으면 실패로 알고있는데, 나는 200점 밖에 못받기는 했다. 내 기억상 1번 문제가 SCC였고, 2번 문제는 단순 구현이어서 빠르게 구현하고 끝냈는데 사실 1번문제에서 삽질을 하도 많이 해서 시간이 많이 부족했다. 종료 10분전이 되어서야 겨우 내 풀이의 오류를 발견하였고 겨우 고쳐서 5분전에 100점을 받았다.3번은 솔직히 풀 자신이 없었는데 4번은 풀 수 있을 것 같았어서 더 아쉬웠던 것 같다. 고점이 터졌다면 아마 본선은 몰라도 300점은 가능했지 않았을까 싶은 대회였다.  SCPC는 C++ 코드 짜기를 못함과 동시에 플랫폼이..
[백준/C++] 10216, 12004 10216 Count Circle Groups 문제난이도 : G4 알고리즘 : 분리집합  풀이좌표 x,y와 반지름 R이 주어진다. 원이 겹치는 부분끼리 그룹을 지어주고 최종적으로 남은 그룹의 개수를 출력해주면 된다.float를 최대한 피하는게 좋으므로 거리를 구할때 x1,y1,r1과 x2,y2,r2가 있을 때 (x1-x2)^2+(y1-y2)^2와 (r1+r2)^2를 비교해주면 된다. #include #include #include #include using namespace std;int par[3001];int find(int x){ if (x == par[x]) return x; par[x] = find(par[x]); return par[x];}void uni(int a,int b){ a = fin..