분류 전체보기 244

[MySQL] 프로시저

저장 프로시저(Stored Procedure)란? 일련의 SQL문장을 선언해서 MySQL에 저장하고, 해당 SQL문을 함수처럼 사용하는것으로 만들어 두기만 하면 함수처럼 호출하여 편하게 사용할 수 있다. 장점 하나의 프로시저로 여러 SQL문의 실행이 가능하다. (모듈화) 호스팅 언어와 SQL문이 분리되어 보수가 용이하다. 네트워크 소요 시간을 줄일 수 있다. (구문 분석 및 코드 변환을 미리 진행하여 처리 시간이 단축됨) 단점 재사용성이 낮다. (DB 버전 별 구문 규칙과 호환성이 다름) 처리 성능이 좋지않다. (MySQL 스토어드의 프로그램 처리 성능이 낮다) 실습 1. 테이블 생성 2. 프로시저 생성 delimiter $$ create procedure 이름 (매개변수) begin # SQL문 end..

Etc 2023.12.30

Java 통신 인터페이스 실습

| 실습 환경: Spring Boot 3.2.1 / Java 17 / Gradle 1. HttpURLConnection 실습 ❓ HttpURLConnection HTTP와 관련된 기능을 지원하는 URLConnection URLConnection은 Java 애플리케이션과 URL 간의 연결 관련한 모든 클래스의 수퍼 클래스 Spring 같은 프레임워크 없이도 사용이 가능하다는 장점! 🔌 코드 private String baseUrl = "https://dapi.kakao.com/v2/local/search/keyword.JSON"; private String header = "Authorization"; @GetMapping("/http-url-connection") public JSONObject http..

*/Spring 2023.12.30

[AWS] EC2 스프링 부트 배포 중 트러블슈팅 기록

1️⃣ GitHub를 통해 프로젝트 코드 가져올 때 SSH Key를 생성해서 깃허브에 등록한 후 클론 과정에서 문제 발생원인: 사용자의 PC에서 해당 폴더에 대한 접근 권한이 없어서 발생하는 에러해결: 1) 권한 변경 -> 실패         2) sudo 붙여서 실행 -> 실패         3) web url 이용 -> 실패         4) sudo 붙여서 web url 이용 -> 성공대신 이렇게 하니 pull은 안 됐다🥲 수정 사항 있으면 파일 지우고 다시 클론하고 반복함 ㅜㅜ  2️⃣ ec2 접속 오류 (집에선 됐는데 밖에 나가니 안 됐다)원인: IP가 바껴서 생기는 오류라고 생각해서해결: 보안 그룹에서 인바운드 규칙 편집해서 ssh 포트 추가로 열어줬다.  3️⃣ gradlew 작동 에러 ..

Etc 2023.06.26

백준 21921: 블로그 (Python)

https://www.acmicpc.net/problem/21921 21921번: 블로그 첫째 줄에 $X$일 동안 가장 많이 들어온 방문자 수를 출력한다. 만약 최대 방문자 수가 0명이라면 SAD를 출력한다. 만약 최대 방문자 수가 0명이 아닌 경우 둘째 줄에 기간이 몇 개 있는지 출력한다 www.acmicpc.net 투 포인터 이용 n, x = map(int, input().split()) visitors = list(map(int, input().split())) i = j = 0 temp = result = 0 cnt = 0 for i in range(n): # 끝 포인터 이동 while j-i < x and j < n: temp += visitors[j] j += 1 # x일 if j-i == x..

알고리즘/백준 2023.06.15

투 포인터 (Two Pointers)

투 포인터 리스트에 순차적으로 접근해야 할 때 2개의 점 위치를 기록하면서 처리 특정한 합을 가지는 부분 연속 수열 찾기 * 기본적으로 시작점을 오른쪽으로 이동시키면 항상 합이 감소하고, 끝점을 오른쪽으로 이동시키면 항상 합이 증가하기 때문에 투 포인터 알고리즘으로 해결할 수 있다. * 리스트 내 원소에 음수 데이터가 포함되어 있는 경우, 투 포인터 알고리즘으로 해결할 수 없다. n = 5 # 데이터의 개수 m = 5 # 찾고자 하는 부분합 data = [1, 2, 3, 2, 5] # 전체 수열 count = 0 interval_sum = 0 end = 0 # start를 차례대로 증가시키며 반복 for start in range(n): # end를 가능한 만큼 이동시키기 while interval_su..

알고리즘/정리 2023.06.13

[Git] gitignore 적용 및 커밋 기록 제거

이제 좀 외울 때도 됐는데..ㅎㅎ; ** gitignore 적용 git rm -r --cached . git add . git commit -m "커밋 내용" ** gitignore을 적용해도 이미 한번 커밋한 파일은 커밋 기록이 남아있다. 이 기록을 지우고 싶을 때 (메인 브랜치에서 작업함) git filter-branch --tree-filter 'rm -rf 경로' HEAD git update-ref -d refs/original/refs/heads/main git push -f + 빈 커밋 이력 삭제 옵션 추가 git filter-branch --tree-filter 'rm -f 경로' --prune-empty HEAD

Etc 2023.05.31

백준 16918: 봄버맨 (Python)

https://www.acmicpc.net/problem/16918 16918번: 봄버맨 첫째 줄에 R, C, N (1 ≤ R, C, N ≤ 200)이 주어진다. 둘째 줄부터 R개의 줄에 격자판의 초기 상태가 주어진다. 빈 칸은 '.'로, 폭탄은 'O'로 주어진다. www.acmicpc.net n=0일 때: 폭탄 설치 n=1일 때: 그대로 n=2일 때~: 나머지 모든 칸에 폭탄 설치 -> 폭발 반복 r*c 크기의 bombs 배열을 모두 0으로 초기화하고, 초기 상태 배열을 입력받으면서 'O'인 부분은 2로 바꿔준다. (0초 - 1초 상태) i=2부터 n+1까지 for문을 돌려주면서 1. bombs 순회하면서 값을 하나씩 감소시키고, 2. i가 짝수일 때에는 모든 칸에 폭탄 설치 -> 0인 부분을 3으로 ..

알고리즘/백준 2023.05.02

백준 12933: 오리 (Python)

https://www.acmicpc.net/problem/12933 12933번: 오리 첫째 줄에 영선이가 녹음한 소리가 주어진다. 소리의 길이는 5보다 크거나 같고, 2500보다 작거나 같은 자연수이고, 'q','u','a','c','k'로만 이루어져 있다. www.acmicpc.net 로직은 이러함.. 이때까지만 해도 쉬운 문제인 줄 알았지.. 첫 시도 (실패) sound를 차례대로 순회하면서 q -> u -> a -> c -> k 에 해당하면 넘어가고, 해당하지 않으면 temp 배열에 문자를 넣는다. 순회가 끝난 후 sound와 temp가 같다면 (q-u-a-c-k를 찾지 못한 경우) break해주고, 같지 않다면 sound = temp 후 정답을 하나씩 추가했다. sound = input() du..

알고리즘/백준 2023.04.14

[프로그래머스 | Lv3] 퍼즐 조각 채우기 (Python)

https://school.programmers.co.kr/learn/courses/30/lessons/84021 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 전체 로직 1. table -> 이어진 퍼즐 조각 부분만 잘라서 행렬로 만들어주고 board에 추가 2. game_board -> 이어진 빈 부분만 잘라서 행렬로 만들어주고 rotate하면서 각 수행문마다 board에 같은 값이 있는지 찾고 정답 추가 bfs(x, y, t, f, array, size) - 큐에 [x, y]를 넣고 이어진 부분을 찾는다. - table은 1을 찾아야 하고, game..