전체 글
-
[LeetCode/JAVA] 80. Remove Duplicates from Sorted Array IIETC/Algorithm 2023. 8. 24. 17:38
문제 감소하지 않는 순서로 정렬된 정수형 배열 nums가 주어지는데, in-place 방식으로 중복을 제거해야한다. 중복의 최대 허용 개수는 2개 이고, 관계대로 정렬을 유지해야한다. 풀이 중복이 2개까지 허용인점과 순서가 정렬되어있다는 점을 고려해서, 인덱스 1부터 시작하면서 앞의 값과 비교를 한다. 여기서 먼저 중복된 개수를 수정하고, 수정된 결과에 따라 배열의 요소를 변경해준다. class Solution { public int removeDuplicates(int[] nums) { // 시작위치는 1 int pos = 1; // 중복 횟수를 체크할 변수 int sameCount = 0; for(int i = 1; i < nums.length; i++){ // 만약 중복 된 수라면 sameCount..
-
[LeetCode/JAVA] 26. Remove Duplicates from Sorted ArrayETC/Algorithm 2023. 8. 24. 16:30
문제 감소하지 않는 순서로 정렬된 정수형 배열 nums이 주어지고, 이전 풀이와 같이 in-place 방식으로 중복된 요소들을 제거해야 한다. 또한 각각의 고유한 요소는 한 번만 나와야한다. 그리고 이미 만들어져있던 순서대로 감소하지 않는 관계를 유지해야하고, 반환값으로 고유한 요소의 길이를 반환해야한다. 풀이 시작 인덱스 0부터 시작해서 일일이 비교한 다음 다른 값이 나오게 된다면 그 때 다른 값을 순서대로 앞으로 당겨서 넣어주면 될 것이다. 이전 LeetCode 문제들과 비슷한 유형이다. 코드 class Solution { public int removeDuplicates(int[] nums) { // 시작 인덱스는 0부터 시작한다. int pos = 0; // nums 배열의 전체를 일일이 반복한다..
-
[LeetCode/JAVA] 27. Remove ElementETC/Algorithm 2023. 8. 23. 16:20
문제 배열 nums와 정수 val이 주어지고, nums 배열안에 존재하는 val 값을 전부 제거해야하는데 "in-place" 방식으로 제거해야한다고 한다. 배열 정렬은 바뀌어도 된다고하고, val 값과 같지 않은 nums 배열의 요소 길이를 반환하라고 한다. 여기서 in-place 방식이 뭐지? 정확한 의미를 찾아봤다. 자료 구조를 추가로 사용하지 않고 입력을 변환하는 알고리즘 이라고 하는데, 그럼 nums라는 배열을 그대로 사용해서 val과 같은 값을 제거하고 결과로 남은 유효한 배열의 길이를 반환해야겠다고 생각했다. 풀이 가장 먼저 val과 같은 값을 전부다 비교해야할 것이다. for문을 통해서 0번 째 인덱스 부터 반복문을 진행하고, 반복을 진행했을 때 val과 관련이 있다면 nums 배열에서 사..
-
[LeetCode/JAVA] 88. Merge Sorted ArrayETC/Algorithm 2023. 8. 22. 22:35
문제 감소하지 않는 순서로 정렬된 배열 nums1과 nums2이 주어지고, 각각의 배열에서 유효한 요소의 개수를 나타내는 m과 n이 주어진다. 그리고 이 배열을 감소하지 않는 순서로 하나의 배열로 합쳐야한다. 최종적으로 배열은 함수에 의해 반환되지 않고 배열 nums1 내부에 저장되어야하며, nums1의 길이는 m+n이 되어야한다. m은 합쳐져야하는 요소의 수를, n은 0으로 설정되어있다면 무시해야한다. nums2의 길이는 n을 가진다. 일단 전체적인 내용으로 nums1이란 배열에 정렬해서 저장을 해야하고, 길이는 m+n이 되게 해야한다는 것 같다. 그렇다면 마지막 문장의 의미는 무엇일까? 문제의 예시 2번에서는 nums2의 길이 n=0이라면 nums2는 비어있는 배열이고, 예시 3번에서는 nums1의 ..
-
[Spring Boot] mockMvc를 통해 담겨오는 HttpOnly Cookie 내용물 검증하는 테스트 코드 작성법Spring/Study 2023. 7. 23. 23:10
JWT 토큰을 사용하여 로그인을 하면 Access토큰과 Refresh토큰을 응답으로 주는데, 이때 Refresh토큰을 HttpOnly 쿠키로 전달하는 상황이다. 프론트 측에서는 담겨오는 쿠키를 임의로 설정할 수 없으므로 좀 더 보안에 유리하다고 생각한다. 개발 단계에서 이를 검증하기 위해서 mockMvc를 통해 테스트 코드를 작성하는데 body에 담겨오는 값들은 jsonPath를 통해 검증을 진행할 수 있지만, 헤더에 담겨오는 HttpOnly 쿠키는 따로 옵션이 설정되어 값 + 옵션 값까지 동시에 전달된다. 그렇다면 테스트 코드를 어떻게 작성을 해야 하는가? 에 대한 해결 방법이다. 가장 먼저 테스트 코드는 given when then 패턴으로 작성하였다. when까지의 패턴 코드이다 when 까지의 코..
-
[Spring Boot] IntelliJ에서 profiles 옵션이 적용안되던 이유 해결법Spring/Trouble Shooting 2023. 7. 20. 23:08
일단 가장 먼저 프로젝트를 진행함에 있어, Github Action으로 CI/CD를 구축하여 개발하는 중이였다. 개발환경에서는 h2 in-memory DB를 활용했어, 배포환경에서는 MySql을 사용하기 위해 apllication.yml을 배포 환경에는 prod를 적용했다. 따라서 CI/CD는 application-prod.yml을 적용해서 실행되도록 하였는데 실제 환경에서도 돌아가는지 직접 확인하기 위해 개발환경에서 쓰이던 application.yml과 application-prod.yml를 같이 두고 실행해봤다. 따로 사용할 profile 이름까지 지정해서 진행했는데 분명 profile is active: prod 를 확인했다. 그러나 발생하는 오류 Hibernate: drop table if exi..
-
[IntelliJ] 오류해결 Module 'demo.main' production: java.lang.ClassCastException: classSpring/Trouble Shooting 2023. 7. 20. 16:15
다음과 같이 오류가 발생하는 경우가 있다면 Module 'demo.main' production: java.lang.ClassCastException: class org.jetbrains.jps.builders.java.dependencyView.TypeRepr$PrimitiveType cannot be cast to class org.jetbrains.jps.builders.java.dependencyView.TypeRepr$ClassType (org.jetbrains.jps.builders.java.dependencyView.TypeRepr$PrimitiveType and org.jetbrains.jps.builders.java.dependencyView.TypeRepr$ClassTyp..
-
[Spring] WebFlux에서 이미지 로드 구현하기Spring/Study 2023. 7. 12. 17:27
WebFlux에서 이미지 로드 구현하기 목적 WebFlux로 구현하는 프로젝트 목적에 따라 이미지를 프론트 쪽에서 사용하게 되었는데, 이 이미지를 서버에서 전송해주기로 했다. 문제점 여기서 icon과 line 이라는 2가지 폴더로 나뉘게 되는데, icon 폴더에는 svg 형태의 이미지 파일이 존재하고 line 폴더에는 png 형태의 이미지 파일이 존재한다. 만약 존재하지 않는 파일이라면 서버측에서 500코드로 오류를 응답으로 전송하게 되는데 이를 404 코드로 응답을 해줘야했다. 해결 방법 이들을 따로따로 처리해주기 위해서는 이미지를 전송해줄 때, HttpHeader를 각각 다르게 처리해서 보내줘야 했다. FileNotFoundException으로 인한 500 에러가 발생하므로 DataBuffer로 변환..