본문 바로가기

분류 전체보기237

(나만을 위한)댓글 생성 메소드 테스트 구현 고민과정 @Transactional public Long createPostComment(Long postId, Long userId, PostCommentRequest createDTO) { PostComment postComment = buildPostComment(userId, postId, createDTO); if (createDTO.getParentCommentId() != null) { // 대댓글일시 PostComment parentComment = postCommentRepository.findById(createDTO.getParentCommentId()) .orElseThrow(() -> new CustomException(HttpStatus.NOT_FOUND, ResultCode.POST_C.. 2024. 4. 7.
테스트코드 작성시 유념사항 Repoistory -> Service -> Controller 순으로 개발한다. 다른 계층에 대한 의존성이 거의 없기 때문에 접근 방법 가짜로 구현하기: 최대한 빨리 테스트를 통과하기 위해 정답이 아닌 가짜 정답을 구현하는 방법 삼각측량법: 값이 다른 여러 테스트를 작성하고, 이를 일반화하여 정답을 구현하는 방법 명백하게 구현하기: 정답을 바로 구현하는 방법 테스트를 위해 구현 설계가 변경될 수 있다. 테스트 코드는 구현의 보조 수단이 절대 아니다. 항상 같은 결과가 반환되는 함(순수함수) 가 테스트하기 좋은 코드 나쁜 테스트 코드 제어할 수 없는 값에 의존하는 경우, Random(), new Date() (LocalDate.now()) 와 같이 실행할때마다 결과가 다른 함수에 의존하는 경우 외부에 영.. 2024. 4. 7.
항해99 11일차 TIL(피로도 / 프로그래머스) 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1 번째 시도 문제를 보자마자 완전탐색이 들어 코드를 짜봤습니다. import java.util.*; class Solution { int answer =0; boolean[] visited; public int solution(int k, int[][] dungeons) { visited = new boolean[dungeons.length]; dfs(0, k, dungeons); return answer; } public void dfs(int depth, int k, int[][] dungeons).. 2024. 4. 6.
@NoArgsConstructor(access = AccessLevel.PROTECTED) 쓰는 이유 @Getter @Entity @NoArgsConstructor(access = AccessLevel.PROTECTED) public class PostComment extends BaseTimeEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) public Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "post_id") private Post post; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "parent_comment_id") private PostComment parentComment; @ManyToOne(fetc.. 2024. 4. 6.
Intellij에서 gradle 버전이 안 보일 때 해결법 새로 생성한 것이 아니라 기존 프로젝트를 받아오는 경우 가끔 gradle을 인식하지 못하는 경우가 있습니다. 그럴 때는 Link Gradle Project를 눌러주면 해결됩니다. 우측 상단바에 Gradle이 나타났습니다. 2024. 4. 6.
항해 99 10일차 TIL( 행렬의 곰셈 / 프로그래머스 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1 번째 시도 보기엔 굉장히 쉬어보이지만 구현하는데 애 많이먹었다 행렬부터 다시 짚어보겠다 arr1배열의 행과 arr2의 열을 곱하는 거다 그러므로 arr1행의 길이와 arr2의 열의 길이는 같아야 한다 i = 현재 행을 가르키는 인덱스 j = 현재 열을 가르키는 인덱스 k = 내적 계산에서 사용되는 인덱스로, 행렬 A의 열과 행렬 B의 행을 동시에 순회합니다. class Solution { public int[][] solution(int[][] arr1, int[][] arr2) { int[][] a.. 2024. 4. 5.
항해99 TIL 9일차(기사단원의 무기 / 프로그래머스) 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1 번째 시도 약수를 구하는 간단한 문제입니다. 그러나 개선된 약수를 구하는 식을 알아야 합니다. 16의 약수를 구하려면 1~16까지 순회하면 16%i ==0 인지 확인해야 한다. 숫자 하나의 약수를 구하는 것일 때는 상관없다. 여러 숫자를 구할 때는 시간복잡도가 O(n2)이다. 그래서 개선된 약수 구하는 방식이 있다. 1 ~ 16까지 순회하는 것이 아니라 16의 제곱근까지만 살펴보아도 된다는 것이다. 1 x 16 2 x 8 4 x 4 2024. 4. 3.
항해99 TIL 8일차 (피보나치 수 / 프로그래머스) 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1 번째 시도 간단한 피보나치 문제입니다. 코딩을 처음 배울 때 피보나치 프로그램을 배워 어렵지 않게 재귀함수로 구현했습니다. import java.util.*; class Solution { public int solution(int n) { return (int)(fibonachi(n) % 1234567); } public long fibonachi(int n) { if( n == 0) return 0; else if(n == 1) return 1; else return fibonachi(n-1) +.. 2024. 4. 2.
항해99 TIL 7일차 (크기가 작은 부분 문자열 / 프로그래머스) 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1 번째 시도 보자마자 윈도우 알고리즘이 떠올랐습니다. n의 길이만큼의 새로운 윈도우 배열을 만들어줍니다. 원도우를 t에 비추어 보며 옆으로 한칸씩 밀어보면 됩니다. 예제 1번을 예시로 들어보겠습니다 t = "314592", n = "271" 윈도우 배열 1 번째 314 윈도우 배열 2 번째 145 윈도우 배열 3 번째 459 . . . 이런 식입니다. 아이디어는 나왔으니 자료구조에 대해 고민해볼 차례입니다. 숫자를 비교해야 하는데 String으로 준 이유가 있을겁니다. 제 생각에는 비교를 용이하기 위해.. 2024. 4. 1.