분류 전체보기 166

[Baekjoon] 백준 15686번 - 치킨 배달 by Python (백트래킹)

https://www.acmicpc.net/problem/15686 아이디어치킨집의 개수 C개의 경우 C개의 치킨집 중 M개를 선택하는 모든 조합 : 1716개 조합각 조합에 대해 모든 집의 치킨 거리 계산(집의 개수 H, 치킨집 개수 M) : 최악의 경우 1300최악의 경우 O(1716⋅1300)≈2,230,800  즉 2.23×10^6 의 연산이 필요하기 때문에 브루투포스와 백트래킹을 활용해 모든 치킨집의 조합을 확인하며 계산하여 정답을 도출할 수 있다.  코드입력부N, M = map(int, input().split())city = [list(map(int, input().split())) for _ in range(N)]result = int(1e9)store = []house = []for i ..

카테고리 없음 2024.12.12

[Redis] 레디스를 활용한 Spring-boot 캐싱 적용 해결하기 (트러블 슈팅)

https://tech.namong.shop/faster-faster-cache사이드 프로젝트 팀 기술 블로그 주소  사이드 프로젝트에서 기존에 사용자 토큰에만 사용하던 redis를 활용해 자주 사용되면서 복잡한 쿼리가 발생하는 API에 대해 캐싱을 적용하게 되었습니다. 하지만, 캐싱을 적용하며 아래와 같은 에러들을 만날 수 있었습니다.LocalDateTime 직렬화 문제List 역직렬화 문제기본 생성자 문제 왜 에러가 발생했는지, 어떻게 해결했는지 함께 보겠습니다. 1. LocalDateTime 직렬화 문제캐시를 적용한 API에서 LocalDateTime 타입 필드가 Redis에 저장될 때 아래와 같은 직렬화 문제가 발생했습니다Error MessageCaused by: com.fasterxml.jack..

[Baekjoon] 백준 15591 - MooTube (Silver) by 파이썬 Python

https://www.acmicpc.net/problem/15591 문제 설명그래프와 유니온-파인드를 활용해 특정 조건을 만족하는 노드(동영상)들의 수를 구하는 문제이다. 그래프 구성동영상들은 노드, 동영상 쌍 간의 USADO 값은 간선의 가중치로 주어진다.총 N개의 노드와 N-1개의 간선이 있으며, 모든 노드는 하나의 연결 그래프를 이룬다. USADO 경로 계산: 두 노드 간의 USADO는 그들을 연결하는 경로의 간선 중 최솟값 아이디어처음 풀이로 BFS를 사용해 탐색했다. 하지만 시간초과가 발생했다. 따라서 union-find 를 사용해 해결했다. 또한 간선을 내림차순 정렬하여 K 이상의 간선만 처리하도록하여 효율성을 높였다. 코드노드 u가 속한 집합의 루트노드를 찾는 find 함수이다. 재귀함수를 ..

카테고리 없음 2024.12.01

[Github] Account Flagged : 계정 정지 탈출하다!!

이전 글 보러가기https://h-castle.tistory.com/entry/Github-Your-account-has-been-flagged-%EC%98%81%EB%AC%B8-%EB%AA%A8%EB%A5%BC-%EA%B9%83%ED%97%88%EB%B8%8C-%EC%A0%95%EC%A7%80 [Github] Your account has been flagged : 영문 모를 깃허브 정지https://github.com/hosung-222접속되지 않는 깃허브.... 사건의 발단3일전인 2024.08.27일 제 깃허브를 접속했을 때 프로필에 Readme 파일이 표시되지 않는다는 사실을 발견했습니다. 아래 사진과 같이 현재h-castle.tistory.com  https://h-castle.tistory...

카테고리 없음 2024.11.19

[RDB] 관계형 데이터 베이스 스케일 아웃 (Scale-Out) Feat 샤딩(Sharding)

현재 대부분의 서비스들은 데이터 집약적인 환경을 가지고 있고 이에 따라 데이터베이스의 성능이 서비스의 중요한 요소가 됩니다. 관계형 데이터베이스는 트랜잭션의 ACID를 보장하면서 데이터의 일관성과 신뢰성을 보장하고 있지만, 이로 인한 트레이드 오프로 성능상 의 이슈가 발생합니다. 또한 조인이 포함된 복잡한 쿼리 처리로 단일 서버의 처리로는 데이터베이스 성능의 한계에 다다르는 경우가 많습니다. 해결책첫 번째 해결책으로 스케일 업을 생각할 수 있습니다. 스케일 업(수직확장)은 서버의 CPU, 메모리, 스토리지 등 하드웨어 성능을 높여 처리 성능을 강화하는 방법입니다. 단순하지만 비용이 많이 들고 무한정 스케일 업할 수 없다는 단점이 존재합니다.  두 번째 해결책은 스케일 아웃을 통한 수평 확장입니다. 관계형..

[Baekjoon] 백준 7490번 : 0 만들기 (by Python) with eval

https://www.acmicpc.net/problem/7490 아이디어자연수 N이 3~9로 크지 않고, 연산자의 경우 +, -, 공백으로 3가지 경우가 포함된다.N에 대한 오름차순 수열에 대해 모든 연산자를 사용하는 경우를 뻗어나가며 수식의 결과가 0이면 체크하는 방식으로 코드를 구현했다. -> 브루트포스 알고리즘 파이썬 추가 아이디어 : eval처음에는 각 숫자를 계속 이어붙이며 연산을 수행했다. 하지만 이 로직을 리팩토링 할 수 있는 파이썬 내장팜수 eval을 알게되었다. eval 함수는 파이썬에서 제공하는 내장 함수로, 문자열로 표현된 식(expression)을 받아서 실행하고 그 결과를 반환한다. 사용법expr = "2 + 3 * (4 - 1)"result = eval(expr)print(re..

카테고리 없음 2024.10.19

[Github] Account Flagged : 계정 정지의 실마리를 찾다?

https://h-castle.tistory.com/entry/Github-Your-account-has-been-flagged-%EC%98%81%EB%AC%B8-%EB%AA%A8%EB%A5%BC-%EA%B9%83%ED%97%88%EB%B8%8C-%EC%A0%95%EC%A7%80 [Github] Your account has been flagged : 영문 모를 깃허브 정지https://github.com/hosung-222접속되지 않는 깃허브.... 사건의 발단3일전인 2024.08.27일 제 깃허브를 접속했을 때 프로필에 Readme 파일이 표시되지 않는다는 사실을 발견했습니다. 아래 사진과 같이 현재h-castle.tistory.com 몇주 전 계정이 영문모를일로 정지당한 후 2주 이상 문의에 대한..

GIT 2024.09.12

백준 14502 : 연구소 (by python) - BFS, 조합

https://www.acmicpc.net/problem/14502 아이디어연구소의 최대 크기가 크지 않기 때문에 벽을 세우는 모든 경우의 수를 파이썬의 combination(조합)을 이용해 탐색하면된다.입력받은 연구소에서 빈칸의 좌표와 바이러스의 좌표를 각각 저장한다.빈칸의 좌표 중에서 Combinations를 사용하여 3개를 조합해 탐색한다.해당 조합의 좌표에 벽을 세우고 바이러스를 최대로 확장한다.연구소의 남은 안전구역을 계산한다.남은 안전구역이 최대가 되는 값을 출력한다. 바이러스 확산이때 연구소의 바이러스를 확장할 때에는 BFS를 사용하여 확장하였다.def bfs(temp_graph): q = deque(virus_positions) while q: x, y = q.po..

백준 9663번 : N-Queen (by python) - DFS(백트래킹)

https://www.acmicpc.net/problem/9663 해당 풀이는 Python 으로 제출시에도 시간초과가 발생하지 않습니다. 초기 아이디어처음에 문제를 풀 때는 2차원 배열을 사용하여 체스판을 표현한 후, 백트래킹을 이용해 각 칸에 퀸을 배치했다. 결과는 당연히 시간초과가 발생했다.N이 커질수록 백트래킹을 통해 모든 가능성을 탐색하는 과정에서 시간 복잡도가 급격히 증가하기 때문이다. 이를 해결하기 위해서 퀸의 이동 방식에 대해서 다시 생각해보면 아래와 같다. 퀸의  이동방식 퀸은 다음과 같은 방식으로 이동한다. 같은 행에 있는 퀸끼리는 서로 공격할 수 없으므로, 한 행에 하나의 퀸만 배치할 수 있다.퀸은 같은 열에 있는 다른 퀸과도 공격할 수 없으므로, 한 열에도 퀸은 하나만 배치되어야 한다..

[Github] Your account has been flagged : 영문 모를 깃허브 정지

https://github.com/hosung-222접속되지 않는 깃허브.... 사건의 발단3일전인 2024.08.27일 제 깃허브를 접속했을 때 프로필에 Readme 파일이 표시되지 않는다는 사실을 발견했습니다. 아래 사진과 같이 현재 Readme.md가 등록되어 있지만 표출되지 않고있었고 일시적 오류라 생각해 대수롭지 않게 생각하고 있었습니다.  하루가 지나도 해당 문제가 수정되지 않자 해당 README 레포지토리를 삭제후 재생성 했습니다.그래도 해당 문제는 해결되지 않았고, 캐시를 지워보고 다른 브라우저에서 프로필을 확인하는 과정에서 문제 상황을 발견했습니다. 사라진 프로필로그인되지 않은 브라우저에서 저의 레포지토리나, 팀스페이스에서 저의 기록을 찾을 수 없다는 사실을 깨달았습니다.해당 문제를 검색..

GIT 2024.08.30