개발일지

개발일지/Algorithm

백준 - 1090 체커 [완전탐색]

1090번: 체커 N개의 체커가 엄청 큰 보드 위에 있다. i번 체커는 (xi, yi)에 있다. 같은 칸에 여러 체커가 있을 수도 있다. 체커를 한 번 움직이는 것은 그 체커를 위, 왼쪽, 오른쪽, 아래 중의 한 방향으로 한 칸 www.acmicpc.net 이번 문제는 체커입니다. 여러 개의 체커들의 좌표가 주어지고, 해당 체커들이 모일 수 있는 가장 적은 비용을 구하는 문제입니다. 다만, 여러 개의 체커들이 모두 모인 경우만 구하는 것이 아니라 1개 모였을 때, 2개 모였을 때, 3개 ~, 4개 ~ 이런 식으로 구해야 합니다. 해당 문제는 완전탐색으로 해결할 수 있습니다. // 슈도 코드 // 1. 각 체커들이 모일 좌표를 선정한다. // 2. 선정한 좌표와 각 체커들의 거리를 계산하여 저장한다. (i..

개발일지/Algorithm

백준 - 2503 숫자 야구 [완전탐색]

2503번: 숫자 야구 첫째 줄에는 민혁이가 영수에게 몇 번이나 질문을 했는지를 나타내는 1 이상 100 이하의 자연수 N이 주어진다. 이어지는 N개의 줄에는 각 줄마다 민혁이가 질문한 세 자리 수와 영수가 답한 스트 www.acmicpc.net 이번 문제는 숫자 야구입니다. 주어진 힌트를 통해 가능한 숫자들의 개수를 출력하는 문제입니다. 해당 문제도 완전탐색을 이용하여 풀어보도록 하겠습니다. // 슈도 코드 (Java 기준) // 1. 주어진 입력을 받는다 int[][] hint; // hint에 각 회차별 힌트들을 저장한다. int count = 0; // 가능한 숫자의 횟수를 받을 변수 // 2. 1 ~ 999 중 각 자릿수가 서로 다른 경우 hint와 비교한다. // 3. 모든 hint가 통과될 ..

개발일지/Python

백준 - 19532 이원연립방정식 [완전탐색]

19532번: 수학은 비대면강의입니다 정수 $a$, $b$, $c$, $d$, $e$, $f$가 공백으로 구분되어 차례대로 주어진다. ($-999 \leq a,b,c,d,e,f \leq 999$) 문제에서 언급한 방정식을 만족하는 $\left(x,y\right)$가 유일하게 존재하고, 이 때 $x$와 $y$가 각각 $- www.acmicpc.net 해당 문제는 이원연립방정식의 해를 구하는 문제입니다. 해당 문제도 완전탐색 알고리즘을 활용하면 손쉽게 풀 수 있습니다. 물론, 직접 방정식을 푸는 식을 사용한다면 더욱 최적화를 할 수 있습니다. 두 가지 방법 모두 사용해 보겠습니다. # Python : 일반적인 완전탐색을 활용한 방법입니다 def solution(a: int, b: int, c: int, d:..

개발일지/Algorithm

백준 - 14586 사탕나누기 [완전탐색]

14568번: 2017 연세대학교 프로그래밍 경시대회 규칙에 맞게 사탕을 분배하는 경우의 수를 출력한다. 택희, 영훈이, 남규가 받은 사탕의 수를 각각 A, B, C개라고 할 때, 서로 다른 (A, B, C) 순서쌍의 수를 세면 된다. 만일 규칙에 맞게 사탕을 분 www.acmicpc.net 해당 문제는 규칙에 맞게 사탕을 나눌 수 있는 경우의 수를 계산하는 문제입니다. 문제 조건을 보면 시간과 메모리가 충분하므로 완전탐색으로 구현하면 손쉽게 풀 수 있습니다. # Python N = int(input()) count = 0 for A in range(2, N - 1, 2): for B in range(1, N - A): C = N - A - B if C - B >= 2: count += 1 print(c..

개발일지/Algorithm

백준 - 1816 암호 키 [완전탐색]

1816번: 암호 키 현대 사회에서 통용되고 있는 많은 종류의 암호 시스템에서는, 매우 큰 소수의 곱으로 만들어진 수를 암호 키로 이용하는 경우가 많다. 현실적으로 매우 큰 수를 빠른 시간 내에 소인수분해하는 www.acmicpc.net 백준 - 1816번 문제입니다. 해당 문제는 숫자가 주어지고 해당 숫자가 1,000,000 보다 큰 소인수로 이루어져 있다면 "YES"를 출력하고 아니면 "NO"를 출력하는 문제입니다. 다양한 방법으로 최적화가 가능하지만, 해당 문제의도에 맞게 가능한 모든 경우의 수를 넣는 방식인 완전탐색으로 풀어보겠습니다. 시간과 메모리가 충분하다면, 그 어떤 문제도 해결할 수 있는 아주 강력한 방법입니다. # Python for _ in range(int(input())): num ..

개발일지/돌픽

Docker + Github Actions로 SpringBoot CI/CD 구축하기

목표 : 깃허브 커밋을 하면 자동으로 EC2에 반영되도록 하는 CD/CD를 구축한다. 지난번에는 Docker를 이용하여 Spring boot 애플리케이션을 EC2에 배포를 했습니다. 이번에는 해당 과정을 로컬환경에서 깃허브 커밋&푸시가 이루어지면 Github Actions가 대신해 주도록 하여, CI/CD를 구축해 봅시다. (자신이 Spring Boot 애플리케이션을 빌드하고 도커허브에 푸시하고 EC2에서 풀 받아서 실행시키도록 했던 과정을 Github Actions에게 모두 시킨다고 생각하시면 됩니다.) 깃허브 참조 GitHub - Ksiyeong/GithubAction-Docker-EC2 Contribute to Ksiyeong/GithubAction-Docker-EC2 development by c..

개발일지/돌픽

Docker로 spring-boot EC2에 배포하기

목표 : Docker를 사용해서 Spring-boot 애플리케이션을 EC2에 배포 사전 작업 Spring-boot 프로젝트 Docker Hub 회원가입 로컬 PC 및 EC2에 Docker 설치(ubuntu 설치는 아래 공식문서 참조) Install Docker Engine on Ubuntu docs.docker.com 환경 Java 17 Spring Boot 3.1.0 gradle 로컬 PC : M2 Mac os EC2 : Ubuntu 22.04 프리티어 1. 로컬 PC에서 Docker 설정하기 1-1. Spring Boot - Dockerfile 생성 및 설정 Dockerfile 작성 전 알아두면 좋을 지시어 지시어 설명 FROM 베이스 이미지 지정 RUN 이미지를 지정하면서 실행할 명령 지정 ENTR..

개발일지/돌픽

Spring boot 쿼리파라미터 Dto 사용하기 (@ModelAttribute)

시행착오 과정이 궁금하지 않은 분들은 아래로 이동하세요 현재 검색 관련 쿼리파라미터를 다음과 같이 받고 있다. @GetMapping("/worldcups") public ResponseEntity getWorldCups(@RequestParam(required = false, defaultValue = "1") int page, @RequestParam(required = false, defaultValue = "5") int size, @RequestParam(required = false, defaultValue = "playCount") String sort, @RequestParam(required = false, defaultValue = "DESC") Sort.Direction directio..

개발일지/돌픽

spring-boot Cache-Control 설정으로 부하 줄이기

얼마 전에 프론트엔드 개발자분이 서버에서 받은 데이터가 브라우저에 캐싱이 안된다고 했다. 서버 측에서 캐싱을 할 수 없도록 설정해놨다고 한다. 나는 처음에는 서버자체에서 캐싱을 이야기하는 줄 알았다.(ex: @Cacheable) 아직 캐싱관련 설정을 하지 않았기 때문에 아직 별도의 설정을 하지 않았기 때문에 해놓겠다고 했다. 우선 메인페이지를 구성하는 월드컵 검색 api에만 설정을 해놓고 되는지 확인해 보라고 했다. 그랬더니 똑같이 안된다고 한다. 서버로그를 확인해보니 정상적으로 캐싱이 되어 데이터베이스로 쿼리문이 날아가지 않는다. 응...???? 뭔가 이상함을 느꼈고, 다시 검색을 해보니 브라우저에서 캐싱을 하는 것과 서버에서 캐싱을 하는 것은 전혀 다른 것이었다. 프론트엔드개발자분이 요청한 것은 브라..

E-room
'개발일지' 카테고리의 글 목록 (6 Page)