본문 바로가기

전체보기

(180)
백준[1561] 놀이 기구 (Python3) 완전 탐색 매 분마다 놀이 기구들의 남은 시간을 확인한다. 이 경우 N = 2,000,000,000, M = 1, M[0] = 30 인 경우 60,000,000,000번의 연산이 필요해 시간 초과가 발생한다. 완전 탐색 최적화 연산 횟수를 줄이기 위해선 탐색하는 빈도를 줄이는 방향으로 갔다. 관찰 결과 아이들이 M 명 이하로 남았을 때를 보면 된다 생각했다. 그중에서도 모든 아이들이 놀이 기구를 타기 직전의 상황을 보면 더 빠르게 문제를 해결할 수 있다고 생각했다. 이분 탐색 임의의 시간 X에 놀이 기구 A는 a 번을 타고, B는 b 번을 타는 식으로 해서 Z는 z 번을 탄다. 이 a + b + c + ... + z를 더한 뒤 아이들의 전체 수인 N과 대소를 비교한다. 시간 X를 정할 때, 최악의 경우 ..
백준[23327] 리그전 오브 레전드 (Python3) 수학적 관찰이 필요한 문제 문제는 진짜 잘 만들었지만 증명하는 데 꽤 오래 걸렸다 코테에서 이렇게 나오면 시간 내에는 못 풀 거 같다. 완전 탐색 매 요청마다 리그전의 재미를 계산한다. Q = 200,000, N = 100,1000, l = 1, r = 100,000 인 경우 200,000 * N!로 시간 초과가 발생한다 완전 탐색 최적화 각 후보 디비전을 계산할 때, 공통적으로 계산되는 부분이 있을 것이다 이를 알기 위해 1번 팀부터 N 번 팀까지 리그전을 진행할 때 생기는 재미에 대한 식을 나열해 본 결과 공통되는 식이 있단 것을 알 수 있다. 아래 표는 예제 1을 풀어쓴 결과다. 표를 보면 1 ~ 3 팀까지 리그전을 할 경우 계산 결과에, 1 ~ 2팀끼리 리그전을 한 계산들이 포함된 것을 알 수 있..
백준[17136] 색종이 붙이기 (Python3) 최대한 단순하고 모듈화를 해야 쉽게 푸는 문제 똑똑하게 풀려다 인덱스 안 맞아서 2번 정도 틀렸다. 어떤 종이부터 붙여야 할까? 어떤 종이부터 붙이냐에 따라 풀이 방식이 살짝 달라진다. 각자 취향에 맞춰서 하면 된다. 이 글에선 큰 종이부터 붙여나갔다. 큰 종이부터 한번 최적의 해가 나오면 이후 탐색에서 해당 탐색을 넘어선다면 그냥 탐색을 중단하면 된다. 작은 종이부터 색종이가 부족한 경우를 제외하고, 중간 크기의 색종이를 붙일 수 없을 때, 그거보다 큰 색종이는 붙일 수 없는 게 자명하다. 다음 위치부터 탐색을 진행하면 된다. 모듈화 하기 메소드 하나에 모두 작성하기엔 많은 indent가 발생했기에, 코드 보는 부담을 줄이기 위해 모듈화를 했다. 문제에서 요구하는 기능들을 모아서 다음 기능들을 모듈화했..
백준[21278] 호석이 두 마리 치킨 (Python3, bfs) 분석하고 보니 플로이드 문제였지만, 시간 복잡도를 계산해 보니 시간이 충분해서 bfs로 풀었다. bfs로 풀 수 있다 생각한 이유 치킨집의 쌍을 구하면 (1, 100), (2, 100) ... (99, 100)로 약 5,000개의 쌍이 생긴다. 간선이 생길 수 있는 개수도 최대가 약 5000개다. 치킨집으로 정한 두 인덱스를 기준으로 bfs 탐색을 진행하면 최악의 경우에 각각 전체를 탐색해야 하고 이러면 10,000번의 탐색이 진행된다. 각 쌍이 10,000번의 탐색을 수행한다 하면 5,000 * 10,000 = 50,000,000 번의 탐색 즉, 약 0.5초 만에 결과를 낼 수 있단 것을 발견해, bfs로 풀이했다. 코드 더보기 from collections import deque N, M = map(..
SSAFY 9기 전공자 합격 후기 수정 내역1. 2024 08.10 PT 준비 내용 보완  이 글을 쓴다는 것은 올해 취업이 안 된 걸 광고하는 거라 써야 되나 고민을 좀 했다.지원할 때 너 정도면 ssafy는 그냥 합격한다는 말을 많이 들었고실제로도 면접 본 후에 합격을 확신했다.에세이 준비 & 코테이전에 이력서를 만들면서 어느 정도 틀은 있었기 때문에 생각보다 쉽게 끝났다.다만 면접 스터디를 하는 과정에서, 이렇게 쓰면 ssafy의 교육이 필요해 보이지 않은 사람 같아서 떨어질 수 있을 거 같단 조언을 받아1분 자기소개를 ssafy의 교육이 필요한 방향으로 바꿨다.생각해 보니 ssafy는 교육생을 뽑는 것이지 입사자를 뽑는 게 아니기 때문에, 이런 점을 주의하면 좋을 거 같다.그리고 에세이 쓰면 첨삭 꼭 받자 면접 스터디 보면 아쉽게..
Uber H3 - 육각형 계층의 공간 인덱스 프로젝트에 Uber H3을 적용하면서 이게 무엇인지에 대해 정리한 글입니다. Uber H3이 유용한 상황 특정 공간에 대푯값 하나만 있으면 되는 경우(좌표계 정규화) 특정 구역을 채우고 싶은 경우 어떤 구역에 진입했을 때, 그 주변의 데이터를 얻고 싶은데 주변의 기준이 애매한 경우 ST_Intersects 같은 공간 쿼리의 비용이 무거운 경우 겹침, 누락에 대한 손실을 최소화 하고 싶을 때 2번의 경우 google S2가 유용할 수 있다. 배달의민족에서 이걸 사용해 문제를 해결한 글이 있다. (https://techblog.woowahan.com/2717/) Uber H3란? 지구를 식별 가능한 육각형 형태로 나눈 형태 각 육각형 셸마다 64-bit 정수 형태의 고유한 값이 있다. 육각형 크기는 15단계..
정답률 단 50! 더도말고 덜도말고 딱 50! 1일 1솔브 중이었는데 숫자 이쁘게 떨어지니까 문제 풀기 싫어진다.
Uber H3을 적용해 좌표 데이터 용량 20배 줄이기 개선된 결과를 먼저 말하자면 42GB의 높이 데이터 -> 2GB 서울시 시군구 단위 도로 데이터 계산 시간 20초 -> 1.2초 수행 시간의 경우 i5, 8GB인 16년도 그램으로 진행했기 때문에 고사양 컴퓨터라면 더 높은 성능을 볼 수 있다. 프로젝트 상황 도로 주변의 높이 정보를 가지고 해당 도로에 생기는 음영도를 계산해야 했다. 사용된 데이터는 다음과 같다. 전국 도로 데이터 (130만 개, 1.3GB) 전국 DSM 데이터(높이 데이터) (3억 개, 42GB) 여기서 높이 데이터의 경우 중복되거나 비슷한 높이를 가지는 것들이 많았다. 반만 해결된 속도 문제 이전 글에서 Polygon 재구성을 통해 I/O 연산을 줄였다. 추가로 클러스터 인덱싱을 적용하고, 시도 단위로 테이블을 분리한 결과 30초 -..