본문 바로가기

전체 글

(87)
BOJ 11997 Load Balancing (Silver) https://www.acmicpc.net/problem/11997 11997번: Load Balancing (Silver) Farmer John's \(N\) cows are each standing at distinct locations \((x_1, y_1) \ldots (x_N, y_N)\) on his two-dimensional farm (\(1 \leq N \leq 1000\), and the \(x_i\)'s and \(y_i\)'s are positive odd integers of size at most \(1,000,000\)). FJ wants to par www.acmicpc.net N이 많이 작아 (n
BOJ 23289 온풍기 안녕! https://www.acmicpc.net/problem/23289 23289번: 온풍기 안녕! 유난히 추운 날씨가 예상되는 이번 겨울을 대비하기 위해 구사과는 온풍기를 설치하려고 한다. 온풍기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기 www.acmicpc.net 오랜만에 풀어보는 빡구현 문제이다. 문제에서 주어진대로 구현하면되지만, 자잘한 오타 및 잘못된 로직이 있어 시간이 좀 걸렸다. #include #include using namespace std; /* bit 1111: 상하좌우 가능 d(0-based) 0 : 오른쪽 1 : 왼쪽 2 : 위 3 : 아래 */ int dr[4] = {0,0,-1,1}; //0-based int dc[4] = {1,-..
BOJ 17387 선분 교차2 https://www.acmicpc.net/problem/17387 17387번: 선분 교차 2 첫째 줄에 L1의 양 끝 점 x1, y1, x2, y2가, 둘째 줄에 L2의 양 끝 점 x3, y3, x4, y4가 주어진다. www.acmicpc.net CCW를 이용하면 쉽게 풀수 있는 문제다. 하지만, 나는 의외의 곳에서 내 코드의 반례를 찾지 못했다. 아래는 내가 처음 작성한 코드이다. #include #include typedef long long ll; using namespace std; int ccw(ll x1, ll y1, ll x2, ll y2, ll x3, ll y3){ ll t = (x2-x1)*(y3-y1) - (x3-x1)*(y2-y1); if(t>0) return 1; else if..
BOJ 1341 사이좋은 형제 https://www.acmicpc.net/problem/1341 1341번: 사이좋은 형제 첫째 줄에 먹는 패턴을 출력한다. 패턴은 영식은 *로, 민식은 -로 출력한다. 만약, 패턴의 길이가 60 이하인 것이 없으면 -1을 출력한다. 가능한 패턴이 여러 가지이면 짧은 것을 출력한다. www.acmicpc.net 처음 생각한 방법은 주어진 분수를 무한 등비급수로 표현할 수 있는 방법이 있는지 생각해봤다. 아무리 생각해도 그런 방법은 떠오르지 않아서 다른 방법으로 접근해봤다. 새로 접근한 방법은 소수의 2진수 표현이다. 1/2, 1/4, 1/8, 1/16 ... 으로 나가는 것이 소수를 2진수로 표현하는 방법에서 봤던 것 같아 해당 방법으로 계획을 세웠다. a/b (a,b는 10진수) 를 2진수 소수로 바..
KAKAO 2022 파괴되지 않는 건물 https://programmers.co.kr/learn/courses/30/lessons/92344 코딩테스트 연습 - 파괴되지 않은 건물 [[5,5,5,5,5],[5,5,5,5,5],[5,5,5,5,5],[5,5,5,5,5]] [[1,0,0,3,4,4],[1,2,0,2,3,2],[2,1,0,3,1,2],[1,0,1,3,3,1]] 10 [[1,2,3],[4,5,6],[7,8,9]] [[1,1,1,2,2,4],[1,0,0,1,1,2],[2,2,0,2,0,100]] 6 programmers.co.kr 2차원 구간합을 어떻게 처리할지 생각 필요했던 문제였다. 처음에 생각했던 방법은 세그먼트 트리 같이 구간합을 빠르게 구할 수 있는 자료구조 였다. 하지만, 해당 문제를 세그먼트 트리로 구현하기 위해서는 2차원..
BOJ 2143 두 배열의 합 https://www.acmicpc.net/problem/2143 2143번: 두 배열의 합 첫째 줄에 T(-1,000,000,000 ≤ T ≤ 1,000,000,000)가 주어진다. 다음 줄에는 n(1 ≤ n ≤ 1,000)이 주어지고, 그 다음 줄에 n개의 정수로 A[1], …, A[n]이 주어진다. 다음 줄에는 m(1 ≤ m ≤ 1,000)이 주어지고, 그 www.acmicpc.net 모든 경우의 수를 Naive 하게 구하려고 하면 다음과 같은 시간복잡도가 걸린다. O (n (n C 2) ^2) 문제를 잘 보면 입력 배열의 "부 배열"을 이용해야 함을 알 수 있다. 따라서 누적합을 미리 구해놓으면 구간 [i,j] 의 구간합을 O(1) 만에 구할 수 있다. 이 경우, 시간복잡도는 다음과 같다. O (..
2022 KAKAO Blind 양과 늑대 https://programmers.co.kr/learn/courses/30/lessons/92343?language=python3 코딩테스트 연습 - 양과 늑대 [0,0,1,1,1,0,1,0,1,0,1,1] [[0,1],[1,2],[1,4],[0,8],[8,7],[9,10],[9,11],[4,3],[6,5],[4,6],[8,9]] 5 [0,1,0,1,1,0,1,0,0,1,0] [[0,1],[0,2],[1,3],[1,4],[2,5],[2,6],[3,7],[4,8],[6,9],[9,10]] 5 programmers.co.kr 처음 봤을 땐 그래프를 탐색(일반적인 DFS나 BFS)해가면서 모을 수 있는 최대 양을 갱신하려고 했었다. 하지만 위의 방법대로 구현하면 탐색 순서에 따라 모을 수 있는 양의 수가 달..
BOJ 2437 저울 https://www.acmicpc.net/problem/2437 2437번: 저울 하나의 양팔 저울을 이용하여 물건의 무게를 측정하려고 한다. 이 저울의 양 팔의 끝에는 물건이나 추를 올려놓는 접시가 달려 있고, 양팔의 길이는 같다. 또한, 저울의 한쪽에는 저울추들만 놓 www.acmicpc.net naive한 접근 완탐이었다. combination을 이용하여 target 숫자를 만들 수 있는지 확인하여 만들 수 없으면 그 수를 출력하는 것이다. from itertools import combinations n = int(input()) c = list(map(int, input().split())) c.sort() answer = 1 def solve(target): for i in range(len..