Computer Science/Problem Solving 36

[ACM-ICPC 예선, BOJ 16287] Parcel (3)

ICPC 예선 문제 업솔브를 하려고 보니, 분명 풀었을 터인 Parcel이 재채점으로 인해서 틀렸습니다로 바뀌어 있는 처참한 상황을 보게 되었다.(이 문제에 얽힌 이야기는 이전 포스트 Parcel 1과 2를 참조) 어디서 틀렸나 열심히 찾아봤는데....생각보다 엉뚱한 곳이었다. 코드를 봤을 때 A+A+B+B꼴을 체크할 때, sums는 "합들을 모은 리스트"가 아니고 "합이 존재할 때, 그 n번째 칸에 그 합을 가지는 쌍이 몇개 있는지를 알려주는 리스트"였기 때문에 for문을 작성할 때 실수가 있었고, 그럼에도 불구하고 이전 코드가 맞았습니다가 떴었던 것이다. 이 부분을 수정해주고, 그외에 기타등등 소소한 수정을 해주고 다시 맞았습니다를 받을 수 있었다. 로직이 안 틀려서 다행이었다. w,n=map(int..

BOJ 중간점검-950솔브

크리스마스인데 A형 독감에 걸려서 골골대고 있습니다. 그 와중에 PS는 하고 있는 게 참 웃겨요... 아무튼간에 오늘은 950솔브를 달성했습니다. 시험 끝나고 이것저것 바빠서 페이스를 많이 잃었는데, 덕분에 올해 안에 1000솔브 하려면 조금 열심히 달려야 할 것 같습니다. 오늘은 FFT를 공부했습니다. 그리고 활용 문제를 몇개 풀어서 950 솔브를 달성했습니다. FFT하면서 든 생각인데...진짜 파이썬은 ps 할만한 언어가 아닌 거 같아요... 파이썬으로 내면 거의 다 TLE고 Pypy로 내도 겨우겨우 커트 맞춰서 돌아가는데 이게 언어냐.......

BOJ 중간 점검: 900솔브/12728 n제곱 계산

900솔브를 달성했습니다! 시험기간 버프가 크게 작용한 것 같네요 ㅋㅋ... 구체적으로는 역시 꿀문제 헌팅이랑... 플로우 컵 문제 쭉 돌았는데(뭐 이런 구데기가 다 있나 전부 KMO 기하잖아)그래도 900번째 문제는 조금 의미있게 하고 싶어서 다이아 문제로 했습니다. 900솔브는 다이아 5 문제로 했는데 간단한 아이디어는 (3+sqrt(5))^n+(3-sqrt(5))^n이 항상 정수임을 수학적 귀납법으로 증명할 수 있습니다. 이 트릭을 알고 있으면 난이도가 순식간에 거의 실버급으로 떨어지는 문제라고 생각합니다... 저거 풀고 같은 문제 하나 있길래 또 풀고 왔습니다. https://www.acmicpc.net/problem/12925 12925번: Numbers 각 Test case에 대해, “Case..

BOJ 중간 점검: 870솔브/1014 컨닝/1017 소수 쌍 간단한 풀이

870솔브 했습니다. 여전히 꿀문제 위주로 푼 것도 사실이긴 한데, 그래도 너무 그러는 것 같아서 1페이지에 있는 비교적 번호 빠른 문제들에 도전해봤습니다. 1014 컨닝: 사람을 그래프 정점으로, 컨닝할 수 있는/당할 수 있는 사람의 쌍을 그래프 간선으로 잇게 된다면 그래프에서 최대 얼마만큼의 independent set을 만들 수 있느냐는 문제가 됩니다. 처음에는 그래서 네트워크 플로우를 생각했는데 자기 양 옆 줄의 사람들만 컨닝할 수 있으니까, 결국 홀수번째 줄/짝수번째 줄로 각각 이분 그래프를 만들 수 있게 됩니다. 그래서 이건 Kőnig의 정리에 따라서 이분매칭 문제가 될 수 있고, 실제로 이분 그래프로 잘 만들어 주면 됩니다. 1017 소수 쌍: 자연수가 중복되지 않으니까, 1+1=2는 불가능..