Loading [MathJax]/jax/output/HTML-CSS/jax.js
본문 바로가기

분류 전체보기

(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 (x1,y1)(xN,yN) on his two-dimensional farm (1N1000, and the xi's and yi'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..