전체 글 198

검색 기능 구현 중에 발견한 pathVariable의 용도(?)

팀프로젝트 구현 중에 게시물의 이름으로 검색을 하는 API 개발을 하게 되었다. 생각 없이 pathVariable로 검색어를 받도록 했는데 1차적인 문제는 바로 검색어가 없을때 path가 사라져서 컨트롤러에서 매핑이 되지 않는다는 점이였다. /* 제목으로 상품 검색 */ @GetMapping("/search/{words}/{page}/{user-id}") public CustomDataResponse search(@PathVariable ("words") String words, @PathVariable("page")int page, @RequestHeader("Authorization") String accessToken){ @GetMapping("/search") public CustomDataRes..

공부/spring 2023.05.25

JPA 공부하고 써보면서 메모한 것들

JPA Optional 사용 (https://mangkyu.tistory.com/203) Optional은 비싸기 때문에 최대한 사용을 지양해야 한다. 꼭 필요할때만 쓸것. Entity 매핑 인프런 (김영한 강의 참고) @ManyToOne @OneToMany @OneToOne @ManyToMany DTO 사용 엔티티를 반환을 하면 엔티티의 모든 값들이 전달되게됨. 때문에 엔티티 중에서 원하는 값만 DTO를 이용해서 보낼수 있음 엔티티 → DTO화 → JPA에서 직접조회 (fetch 조인 사용) 으로 최적화 할것. 엔티티를 외부에 노출하지 마세요! 실무에서는 엔티티의 데이터가 필요한 API가 계속 증가하게 된다. 어떤 API는 name 필드가 필요하지만, 어떤 API는 name 필드가 필요없을 수 있다. ..

공부/spring 2023.02.08

1. 데이터 전처리

추천 알고리즘은 사용자가 선택한 재료의 일치율과 재료의 우선순위, 선택한 재료의 분류(주재료/부재료/양념 등) 여부, 알러지여부, 좋아요한 레시피의 가중치를 더해서 구현할 계획이다. 이를 위한 데이터를 맨처음에는 '만개의레시피'의 데이터를 크롤링해서 사용하려고 했다. 하지만 사용자들이 직접 작성한 레시피여서 정형화된 데이터가 아니였다.. 클롤링을 해도 다시 전처리를 하거나, 수작업으로 데이터를 수정해야 되는 부분들이 생겼다. 따라서 공공데이터를 활용하기로 결정했다. 사용하고자 하는 데이터 https://www.data.go.kr/dataset/15000158/openapi.do 공공데이터 포털 국가에서 보유하고 있는 다양한 데이터를『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 ..

[삼성 청년 SW아카데미(SAFFY)] 8기 지원 후기 (최종합)

1학기 종강하고 어언 한달이 지나서야 쓰는 합격 후기 및 회고록. 과거에 6기 지원을 했다가 최종에서 떨어진 경험이 있다. (https://jianna.tistory.com/125) 그후로 한 3개월은 놀다가 인프런 강좌 듣고 백준, 프로그래머스 문제 풀다가 결국엔 개백수로 살았다. (간간히 자격증 시험도 보고 토익 공부도 했지만 좋은 성과는 없었다ㅜㅜ) 그러다가 또다시 돌아온 싸피 시즌 ㅋㅋ 입과 과정 서류 ▶ 코딩 테스트(전공자) ▶면접 1. 서류 사실 최종에서 떨어진게 창피해서 포스트를 지울까말까 고민을 많이 했는데.. 참고 하기위해 남겨뒀다. 불합격으로 느낀점은 싸피는 잘하는 사람을 원하지 않는다. 정말 교육이 필요하고 성실한 사람을 원한다. 그래서 사실 서류에 많은 투자를 하지 않았다. 이건 입..

취준/대외활동 2022.12.29

[2020 KAKAO BLIND RECRUITMENT] 괄호 변환

https://school.programmers.co.kr/learn/courses/30/lessons/60058 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr import java.util.Stack; class Solution { public String solution(String p) { if(checkRight(p)) return p; else return recur(p); } private static String recur(String p) { //1. 입력이 빈 문자열인 경우, 빈 문자열을 반환. if(p=="") return p; //2...

[2019 카카오 개발자 겨울 인턴십]크레인 인형뽑기 게임

https://school.programmers.co.kr/learn/courses/30/lessons/64061 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr import java.util.ArrayList; import java.util.Arrays; import java.util.Stack; class Solution { static Stack stack; static int result; public int solution(int[][] board, int[] moves) { stack = new Stack(); result = 0; int len..

[BFS] 토마토

설명 현수의 토마토 농장에서는 토마토를 보관하는 큰 창고를 가지고 있다. 토마토는 아래의 그림과 같이 격자 모양 상자의 칸에 하나씩 넣어서 창고에 보관한다. 창고에 보관되는 토마토들 중에는 잘 익은 것도 있지만, 아직 익지 않은 토마토들도 있을 수 있다. 보관 후 하루가 지나면, 익은 토마토들의 인접한 곳에 있는 익지 않은 토마토들은 익은 토마토의 영향을 받아 익게 된다. 하나의 토마토의 인접한 곳은 왼쪽, 오른쪽, 앞, 뒤 네 방향에 있는 토마토를 의미한다. 대각선 방향에 있는 토마토들에게는 영향을 주지 못하며, 토마토가 혼자 저절로 익는 경우는 없다고 가정한다. 현수는 창고에 보관된 토마토들이 며칠이 지나면 다 익게 되는지, 그 최소 일수를 알고 싶어 한다. 토마토를 창고에 보관하는 격자모양의 상자들..

[BFS] 미로의 최단거리 통로

문제 7*7 격자판 미로를 탈출하는 최단경로의 길이를 출력하는 프로그램을 작성하세요. 경로의 길이는 출발점에서 도착점까지 가는데 이동한 횟수를 의미한다. 출발점은 격자의 (1, 1) 좌표이고, 탈출 도착점은 (7, 7)좌표이다. 격자판의 1은 벽이고, 0은 도로이다. 격자판의 움직임은 상하좌우로만 움직인다. 미로가 다음과 같다면 위와 같은 경로가 최단 경로의 길이는 12이다. 입력) 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 1 0 0 0 1 1 0 1 0 1 1 1 1 0 1 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 0 0 출력) 12 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io...

[DFS] 미로 탐색

설명 7*7 격자판 미로를 탈출하는 경로의 가지수를 출력하는 프로그램을 작성하세요. 출발점은 격자의 (1, 1) 좌표이고, 탈출 도착점은 (7, 7)좌표이다. 격자판의 1은 벽이고, 0은 통로이다. 격자판의 움직임은 상하좌우로만 움직인다. 미로가 다음과 같다면 위의 지도에서 출발점에서 도착점까지 갈 수 있는 방법의 수는 8가지이다. 입력으로 7*7의 격자판이 주어질때, 경로의 가지수를 출력하라. 입력) 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 1 0 0 0 1 1 0 1 0 1 1 1 1 0 0 0 0 1 1 1 0 1 1 0 0 1 0 0 0 0 0 0 출력) 8 풀이 import java.io.BufferedReader; import java.io.IOException; impor..

728x90