2024/10 15

[JAVA] 백준 가장 긴 증가하는 부분 수열 2_이분탐색

문제 : https://www.acmicpc.net/problem/12015   접근 :    - 빈 증가하는 부분 수열 (res) 리스트를 만든다.   - 입력값이 들어오면 증가하는 부분수열(res)을 2진 탐색 하여 집어 넣을 idx를 찾아낸다.   - 만약, 입력값과 동일한 값이 있으면 그 idx를 출력한다.   - 만약 입력값이 res 의 크기보다 큰경우 res에 가장 뒤에 추가해준다.   - 만약 입력값의 집어넣을 위치에 이미 다른 값이 있으면 둘 중 더 작은값으로 갱신한다.   - 입력 끝까지 위의 과정을 반복한 후 증가하는 부분수열(res)의 크기를 출력한다.    코드 구현 : import java.io.BufferedReader;import java.io.InputStreamReader;..

JAVA/Coding Test 2024.10.30

[JAVA] 프로그래머스 가장긴 팰린드롬_브루트포스

문제 : https://school.programmers.co.kr/learn/courses/30/lessons/12904 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 접근 1:   - 길이를 기준으로 입력값의 길이값 부터 1이 될 때까지, 해당 길이의 팰린드롬 문자열이 있는지 확인한다.   - 만약 팰린드롬 문자열을 발견하면 해당값을 출력한다.    코드 구현 :  class Solution { private boolean recFunc(String s, int target){ if(target == 1) return true; int half_len = target/..

JAVA/Coding Test 2024.10.29

[JAVA] 프로그래머스 디스크 컨트롤러_우선순위큐

문제 : https://school.programmers.co.kr/learn/courses/30/lessons/42627 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  접근 :   - 대기 우선순위 큐를 생성하여 요청을 받은 시간을 오름차순 기준으로 저장   - 만약 대기 큐의 원소 중 시작시간이 현재시간 이전이면 모두 처리 우선순위 큐에 저장(소요되는 시간이 짧은 순)   -  처리 큐에 작업이 있다면 처리하고 현재시간과 소요시간을 모두 갱신한다.   - 만약 처리 큐에 작업이 없다면 현재 시간을 처리 큐의 첫번째 원소의 시작시간으로 갱신한다.   - 대기 우선순위 큐와 처리 우선순위 큐가 모두 ..

JAVA/Coding Test 2024.10.28

[JAVA/Regex] 문자열 유효성 패턴 검증

- 조건  1. 문자열은 8 ~ 16자 까지만 가능  2. 알파벳으로 시작  3. 문자열은 알파벳 대소문자, _ , 숫자로 만 가능 - 해당 조건 검증 정규식"^[a-zA-Z][a-zA-Z0-9_]{7,15}$" 정규식 설명:^: 문자열의 시작[a-zA-Z]: 첫 번째 문자는 알파벳 대문자(A-Z) 또는 소문자(a-z) 중 하나[a-zA-Z0-9_]: 두 번째 문자부터는 알파벳 대소문자, 숫자(0-9), 또는 밑줄(_) 중 하나{7,29}: 이전 패턴( [a-zA-Z0-9_])이 7회 이상, 15회 이하 반복됨 ( 첫글짜 1이 포함되어 있으므로 )$: 문자열의 끝을 나타냅니다.  - 전체 코드 public class Example { private static final Scanner scan = ..

JAVA/Regex 2024.10.24

[JAVA/Regex] 중복되는 영어 단어 제거

- 중복되는 영단어 제거 정규식"\\b(\\w+)(\\s+\\1\\b)+" \b:단어의 시작이나 끝 (단어의 경계)공백, 구두점 등과 같은 비단어 문자와 단어 문자(영문자, 숫자 등) 를 구분 가능 (\w+):하나 이상의 단어 문자를 찾습니다.\w는 알파벳 대소문자, 숫자,밑줄(_)을 포함+는 하나 이상의 문자로 이루어진 패턴이 부분은 그룹으로 지정 ( 그룹 1 )(\s+\1\b):\s+: 하나 이상의 공백 문자(스페이스, 탭 등) 찾기\1: 그룹 1 의 내용을 참조하는 역할\b: 단어 경계 전체적으로 작동하는 방식:정규식은 먼저 단어 경계에서 시작하고, 그 다음에 단어 문자가 하나 이상 있는지를 확인합니다. 이 문자는 캡처 그룹 (\w+)에 저장  공백이 최소 하나 이상 있는지를 확인하고, 그 다음에 ..

JAVA/Regex 2024.10.24

[JAVA] 가변인자

가변 인자 ( Variable Arguments )란?   - 메서드의 인자를 가변적으로 받을 수 있도록 하는 기능   - 메서드를 호출할 때 인자의 수가 정해져 있지 않는 경우 (몇 개의 인자를 넘길지 모르는 경우) 에 사용 가능   - 가변 인자는 배열 형태로 메서드에 전달되며, 메서드의 선언에서 ...을 사용하여 표시 가변 인자의 장점    - 유연성: 메서드를 호출하는 쪽에서 인자의 수를 조정가능   - 코드의 가독성: 가변 인자를 사용하면 여러 개의 매개변수를 처리하는 메서드에서 오버로딩을 하지 않아도 됨   - 유지보수 용이성: 인자의 수가 바뀌어도 메서드의 인터페이스를 변경할 필요가 없음  예시 코드 class Solution { public static void add(int... n..

JAVA/Language 2024.10.23

[알고리즘] MST

1. MST 란? 최소 신장 트리는 연결 그래프의 부분 그래프로, 그래프의 모든 정점을 포함하면서 간선의 총 가중치가 최소가 되는 트리( 네트워크 설계, 클러스터링, 그래픽스 등 사용 ) 연결 그래프: 모든 정점이 서로 연결되어 있는 그래프트리: 사이클이 없는 그래프신장 트리: 그래프의 모든 정점을 포함하는 트리최소 신장 트리: 신장 트리 중 간선 가중치의 합이 최소인 트리 2. 구현 방법 1. 크루스칼 알고리즘  - 모든 간선을 가중치 기준으로 정렬합니다.   - 가장 작은 가중치의 간선부터 차례대로 선택하여 MST에 추가   - 간선을 추가할 때, 사이클이 발생하지 않도록 유니온-파인드(Union-Find) 자료구조를 사용하여 관리 시간 복잡도: O(E log E), E: 간선의 수장점: 구현이 간단..

etc 2024.10.21

실전 프로젝트

* 2024.04 ~ 2024.05 (6주) 실전 프로젝트 한 것 총 정리 ✅ 실전 프로젝트 개요  이번 프로젝트는 백엔드와 프론트엔드로 나뉘어 각자의 역할에 맞는 기능을 구현하는 실제 서비스팀의 업무와 유사하게 진행되었습니다. 프로젝트는 6주 동안 기획, 설계, 구현, 유저 테스트, 발표를 모두 진행해야 했기 때문에 시간이 많이 부족하였습니다. 그래서 Back-end Leader로서 프로젝트를 성공적으로 완료하고 정해진 일정(6주) 내에 핵심 기능을 모두 구현하기 위해 노력하였습니다. * 팀 구성은 Design 1명, FE 2명, BE 4명으로 구성되었고 BE 개발자는 다음과 같이 역할 분담을 하였습니다. 팀원1 : 여행 후기 CRUD, 이미지 처리, 좋아요, 스크랩, 모니터링 툴 도입(Grafana,..

개발일지 2024.10.21

[최종 결과] 위치 기반 상품 추천 프로젝트

* 2020.01 ~ 2020.02 팀 프로젝트 기록을 옮김. ✅  0. 프로젝트 설명    당시, 배달의 민족 픽업 서비스가 제공되지 않는 점을 이용해 높아지는 배달료를 해결하기 위해 자신의 위치에서 특정 위치(집)으로 이동하는 경로 중에 음식을 주문하고 이동하면서 하나씩 픽업 할 수 있도록 서비스를 구상하였다. 핵심되는 서비스는 픽업 서비스이며 이동 경로 중 더 싼 음식이나 세일하는 물품이 있는경우 추천을 받아서 사용자가 최적의 구매를 도와주는 것을 차별화된 기능으로 설정하였다.  ✅  0. 목차  ✅  1. 요구사항 개발   ✅  2. 요구사항 정의 및 분석  ✅  3. 유즈케이스 분석 및 정의  ✅  4. 화면 설계 ( 프로토 타입 개발 )     ✅  5. DB 설계  ✅  6. 프로젝트 아키텍..

개발일지 2024.10.17

[최종 결과] 항공 서비스 이용 후기 (개인 프로젝트)

* 2019년도에 진행한 개인 Web/Server 개발 프로젝트 기록을 옮김. ✅ 0. 항공  서비스  이용  후기 (기본 CRUD 프로젝트)    해당 프로젝트는 Web / Server 를 공부하면서 개념을 익히고, 해당 내용을 프로젝트로 진행한 내용으로 Java Web Project로 개발 후, Spring으로 리펙토링한 내용을 담고있습니다. Spring으로 리펙토링 후, Restful 한 구조로 Spring 구조를 변경해 보았습니다. 또한, 기본적인 웹 보안 관련 내용을 포함하고 있습니다.  ✅ 0. 목차 ( 클릭시 해당 위치로 이동) 1. 프로젝트 개요 및 기획 2. 프로젝트 설계 3. 중간결과 4. Web 리펙토링 (Jsp, Html 분리, JQuery, Bootstrap 4) 5. DAO 리펙..

개발일지 2024.10.17