전체 글
-
[알고리즘] 미세먼지 안녕 - bfs/구현알고리즘 2024. 3. 22. 12:57
문제 https://www.acmicpc.net/problem/17144 17144번: 미세먼지 안녕! 미세먼지를 제거하기 위해 구사과는 공기청정기를 설치하려고 한다. 공기청정기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기의 칸으로 나눴다. 구사 www.acmicpc.net 풀이 1. 조건이 복잡하지 않아서 따라 하기만 하면 된다. 2. 고민할만한 점은 공기청정기가 직사각형의 둘레를 따라 시계 / 반시계 방향으로 바람이 분다는점이다. - 범위를 벗어날때 direct를 변경해주면 된다. - 앞의 내용과 이전의 내용을 바꿔주면 된다 코드 import sys n,m,t = map(int,input().split()) up,down = -1,-1 # 시계방향 dxs,..
-
[exception caching] 성능 향상을 위한 exception 처리Health-Genie 2024. 3. 21. 17:33
예외처리에 대한 비용 문제를 공부하다가 기존에는 exception을 custom해서 사용했기에 성능쪽에서 괜찮겠지라는 생각했습니다. 내가 해논 예외 처리를 보니까 세분화 되어 있지도 않으며, 중복 코드도 있고 예외 비용이 낭비가 되고 있다는 것을 알게되었습니다. 아래와 같은 글을 읽으며 caching을 적용해 향상 시켜야겠다는 생각을 했습니다. stackTrace를 가지지 않도록 오버라이딩한 Exception이라면 static final로 선언하여 일종의 상수 값 형태로 예외를 캐싱하고 쓰는 것이 매번 같은 종류의 예외를 new로 생성하는 것보다 효율적입니다. https://moonsiri.tistory.com/174 기존 코드 [ GlobalExceptionHandler ] @ExceptionHandl..
-
[ 알고리즘 ] 아기상어 - bfs알고리즘 2024. 3. 21. 16:26
문제 https://www.acmicpc.net/problem/16236 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가 www.acmicpc.net 풀이 팁 1. 처음에 작성한 코드는 먹을 수 있는 물고기들을 매번 구하면서 가장 가까우며, 혹은 가장 위 / 가장 왼쪽 기준으로 선택하여 한번에 거리들을 구하는 방식으로 갔다.. ( 아직도 왜 틀린지를 모르겠지만, 계속 틀려서 수정 -> 아시는 분은 댓글 부탁드려요 ㅠ ) https://www.acmicpc.net/board/view/139274 글 읽기 - 왜 틀렸을까요?? 댓글을 ..
-
[알고리즘] 나무 재테크 - 구현알고리즘 2024. 3. 20. 17:27
문제 https://www.acmicpc.net/problem/16235 16235번: 나무 재테크 부동산 투자로 억대의 돈을 번 상도는 최근 N×N 크기의 땅을 구매했다. 상도는 손쉬운 땅 관리를 위해 땅을 1×1 크기의 칸으로 나누어 놓았다. 각각의 칸은 (r, c)로 나타내며, r은 가장 위에서부터 www.acmicpc.net 풀이 팁 1. 이 문제는 단순히 조건을 따라가면서 풀면 되는 문제인데, 가장 중요한 점은 시간복잡도 이다. -> 나는 처음에 단순히 3차원 배열 만들면서 배열을 초기화 시키면서 했다 ( 가장 아래에 처음 코드를 넣어 놓겠다 ) -> 읽어보면 초기화를 엄청 시키면서 했는데, 나는 이 부분이 시간초과의 원인이라고 생각한다 ( 테코는 다 맞음 ) 2. 시간 초과를 줄이기 위해서 한..
-
[알고리즘] - 조합알고리즘 2024. 3. 15. 16:08
문제 https://www.acmicpc.net/problem/15683 15683번: 감시 스타트링크의 사무실은 1×1크기의 정사각형으로 나누어져 있는 N×M 크기의 직사각형으로 나타낼 수 있다. 사무실에는 총 K개의 CCTV가 설치되어져 있는데, CCTV는 5가지 종류가 있다. 각 CCTV가 감 www.acmicpc.net 풀이 팁 1. 문제를 보자마자 모든 경우의 수 ( cctv 마다 각자 회전하여 나오는 영역의 수 )를 구하는 문제라는 걸 알고, 백트래킹과 조합을 생각했다 2. 백트래킹을 푸는데 나는 계속 어느 시점에 초기화를 해야하는지 몰랐다.. 아시는 분은 여기 답좀 남겨주세요,.... https://www.acmicpc.net/board/view/138803 글 읽기 - 어떻게 수정을 해야할..
-
[Error] 502 Bad GatewayT-note 2024. 3. 14. 21:27
문제 nginx를 사용하게 되면서 http를 https로 수정을 하였습니다. 하고 나서 테스트를 진행하다가 cors문제 인듯 싶은데, 502 error 코드가 발생하였습니다.. 처음에는 cors문제 같아서 web config 파일 수정을 하였는데, 여전히 같은 문제,, 아래는 postman으로 테스트 하였을때 나오는 에러 상황입니다! 그래서 ec2 내부에서 에러 log를 쭉 읽다가 알았습니다... 이것을 읽고 생각이 났습니다.. 최근에 계정 탈퇴 관련 코드 수정을 하였는데, 그때 계정 탈퇴할때 외래키로 다른 테이블들이 묶여 있어서 안되는 이슈가 있었는데, 그걸 해결하고자 deleteAllByUserId 라는 메소드를 만들었는데, 그때 userID 가 없는 subject 엔티티에도 만들었었습니다... 원인..
-
[알고리즘] 경사로 - 구현알고리즘 2024. 3. 13. 22:36
문제 https://www.acmicpc.net/problem/14890 14890번: 경사로 첫째 줄에 N (2 ≤ N ≤ 100)과 L (1 ≤ L ≤ N)이 주어진다. 둘째 줄부터 N개의 줄에 지도가 주어진다. 각 칸의 높이는 10보다 작거나 같은 자연수이다. www.acmicpc.net 풀이 팁 일단 문제가 쉬우면서도 복잡하다. 이해하기는 쉬우나 "332233" 혹은 "223322" 같은 경우에 대해서 흔히 착각할 수 있다. 1. 2차원 배열에서 마주할 수 있는 모든 행 / 열에 대한 1차원 배열을 찾는다. 2. 현재 값과 그 다음값을 비교했을때 현재가 작을 수도 클 수도 있는데, 비슷하지만 idx 값 변경에 주의하자 -> 각 조건문 안의 idx값 변화를 점검 3. "332233" 같이 경사로가 ..
-
[알고리즘] 연구소 - dfs/백트알고리즘 2024. 3. 12. 22:13
문제 https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 풀이 팁 1. 벽을 세우는거에 대해서 당황할 가능성이 크다. 벽 개수를 cnt로 두고 백트래킹으로 접근하자 - arr 2차원 배열이 0일때 벽을 세울 수 있다는 점을 기억하자 2. 벽을 3개 전부 세웠을때 temp 배열로 옮겨서 temp 배열 기준으로 바이러스를 퍼트리자 - arr배열을 기준으로 바이러스를 퍼트리면 안된다! - 바이러스를 퍼뜨리는 함수도 재귀함수이다 ( dfs 방식! ) 코드 import..