전체 글 10

[LeetCode] 13. Roman to Integer

■ 문제로마자를 숫자로 변환하여 반환하는 함수를 구현하는 문제이다. ■ 풀이이 문제의 핵심은 로마자의 결합여부 확인이다. 문제의 TestCase1 처럼 단순한 문자는 그냥 숫자를 더하면 된다."III" III = 3.  하지만 로마자는 IV  = 4 와 같이 결합이 가능하다."MCMXCIV" M = 1000, CM = 900, XC = 90 and IV = 4.  결합되어 있는 문자 케이스를 잘 보면, 앞에 있는 문자의 값보다 뒤에 있는 문자의 값이 더 크다. CM의 경우 'C' = 100, 'M' = 1000 이고 CM = 900이다.즉, CM 은 M-C 이다. 이 원리를 이용하면 쉽게 풀 수 있다. class Solution { public int romanToInt(String s) { ..

Algorithm 2025.02.12

[LeetCode] 4. Median of Two Sorted Arrays

■ 문제두 개의 배열이 주어질 때 이를 합치고 중앙값을 반환하는 함수를 구현하는 문제이다. ■ 풀이이 문제는 중앙값을 구하는 것이 핵심일 것 같다.필자는 다음과 같은 방식으로 구현했다.리스트로 배열 합치기 리스트 정렬중앙값 구하기여기서 중앙값을 구할 땐 길이의 홀수/짝수 여부 두가지 케이스로 생각했다. 짝수일 때 - ([size / 2] + [size / 2 -1]) / 2.0홀수일 때 - [size / 2] / 2.0class Solution { public double findMedianSortedArrays(int[] nums1, int[] nums2) { double answer = 0; ArrayList lst = new ArrayList(); for(..

Algorithm 2025.02.12

[LeetCode] 3. Longest Substring Without Repeating Characters

■ 문제문자열 s 중 중복되지 않은 부분배열의 최대길이를 구하는 문제이다. ■ 풀이처음 설계를 할 때 자료구조 사용 없이, String.substring() 을 사용하여 풀고자 했다.i->끝까지 for 문 순회하면서 시작하는 첫번째 startChar 를 추출startChar 인덱스를 제외하고 뒤의 문자들을 substring() 으로 서브 문자열 추출이 과정에서 서브 문자열에 startChar 포함 여부 확인있으면 x없으면 최대 길이 업데이트 이러한 설계로 풀려고 하였으나 반례가 존재했다.startChar 가 아닌 다른 중복되는 문자에 대한 예외처리가 필요하다.예를 들어 "abcabcbb" 일때, c가 4번째 a가 startChar 일 경우, 뒤에 "a" 가 없기 때문에 해당 케이스는 통과하지 못한다. 때..

Algorithm 2025.02.09

[LeetCode] 1. Two Sum

■ 문제배열에서 요소 2개를 더했을 때 target 이 나오는 인덱스를 구하는 문제이다. ■ 풀이현재 문제에서는 시간제한이 딱히 명시되어 있지 않다.실제로 브루트포스 알고리즘을 써서 완전탐색을 해도 풀이는 가능하다. 하지만 실제 코테에서는 완전탐색으로 풀 수 있는 Constraints 의 문제가 나오지 않을 것 같아 다른 방법을 생각해보느라 시간이 좀 걸렸다. a + b = target 이 나오는 공식에서 해결이 가능한 미지수는 a 또는 b 와 target 이다.[2, 7, 11, 15] 를 예시로 들어봤을 때 index = 0 일 경우, 2+b = 9 이다. 즉, 단순 for 순회에서 9-2 인 값을 O(1) 로 찾을 수 있는 설계를 하면 된다.이를 위해 HashMap 을 사용했다.for 문을 돌며 H..

Algorithm 2025.02.09

[LeetCode] 2364. Count Number of Bad Pairs

■ 문제j - i != nums[j] - nums[i] 가 성립되는 부분 배열의 수를 찾는 함수를 구현하는 문제이다. ■ 풀이처음 풀 때 Constaints 조건을 못보고 완전탐색으로 풀었다가 Time Limit 이 걸렸다.class Solution { public long countBadPairs(int[] nums) { int size = nums.length; long answer = 0; for(int i = 0; i  최대 10,000 배열이 있기 때문에 완전 탐색으로 풀면 O(N^2) 이라 10000*10000 연산을 해야한다.이를 해결하기 위해선 조건을 재해석 해야 한다. j - i != nums[j] - nums[i] 를 j-nums[j] != i..

Algorithm 2025.02.09

[CodeSignal] ZigZag - Java

■ 문제요약하자면 a c 또는 a > b 입출력 예시를 보면 문제를 더 자세히 이해할 수 있고, 제한시간은 3초 이내이다. numbers가 100이 최대이므로 단순 조회 및 비교 로직으로 구현하여도 제한시간을 초과하는 케이스는 발생할 것 같지 않다.■ 풀이isZigZag 함수를 static 으로 구현하여 지그재그 여부를 확인하는 과정을 구현했다.static int isZigZag(int a, int b, int c){ if(a c) return 1; else if(a > b && b  ■ 결어서류합격한 회사에서 CodeSignal 플랫폼에서 코테를 보길래 처음 CodeSignal 이라는 사이트를 사용해봤다. 처음 봤을 땐 영어로 된 문제에 잔뜩 긴장했으나 막상 읽어보니 어려운 단어는 없고 ..

Algorithm 2025.02.08

VMWare 프리징 및 부팅 속도 저하 해결

✔️ 서론Window 10 호스트 컴퓨터에서 VMWare를 통해 Ubuntu 서버를 운영하면서 VMWare 프리징 현상이 발생했다.이를 해결한 내용을 다루고자 한다. ✔️ 본론요즘 사이드프로젝트 의 온프레미스 서버를 운영 중하면서 개발 중이다.서버를 운영하던 중 같이 서비스 개발 중인 앱 개발자한테 서버가 꺼졌다는 연락을 받았다...도서관에서 공부하던 중이라 얼른 집으로 뛰어왔고 확인해 보니 이 상태로 아예 멈춰 있었다. 클릭도 안되고 콘솔을 통해 강제 종료를 시도했으나 불가능했다.혹시 해외에서 접근하는 트래픽이 갑자기 몰려서 터졌나? 싶어서 Springboot 로그를 살펴봤음에도 특이사항은 없었다. 두려운 마음으로 여러 자료를 찾아보았다. [가능성 1] 용량 부족구글링을 하던 중 호스트 컴퓨터의 하드..

Devops 2025.01.05

[Springboot] springboot3 QueryDSL 정리

✔️ 서론보통 스프링으로 API 를 개발하게 되면 JPA 를 사용하게 된다. Repository 상속과 인터페이스 선언 만으로 커스텀 쿼리를 생성할 수 있다는 강력한 장점이 있으나 복잡한 쿼리를 생성하는 경우에서는 한계(여러 필터를 적용한 조회.. 등)가 있다.그래서 JPA 만 쓰기보단 QueryDSL 을 접목하여 많이들 사용한다. 이렇게 되면 좀 더 간결한 코드로 복잡한 쿼리를 호출 할 수 있다는 장점이 생긴다. 이와 관련하여 Springboot 3.x.x 버전의 QueryDSL 선언과 사용 방법을 정리하고자 한다. ✔️ 본론💻 개발환경Springboot V 3.2.1Java 17 DependencySpringboot 3.x.x 버전부터 classifier로 jakarta'를 추가하여 Querydsl..

Springboot 2025.01.05

[Springboot] 3.x.x maven 빌더 Lombok cannot find symbol

✔️ 서론QueryDSL 문법도 정리하고 여러가지 지저분한 코딩 스타일을 바꾸는 것을 연습하고자 오랜만에 새로운 프로젝트를 생성했는데 진짜 엉뚱하게 @Getter 어노테이션을 선언했는데 get Method 를 cannot find symbol 이라는 에러와 함께 컴파일이 안된다. 이에 대해 해결 한 내용을 정리했다. ✔️ 본론혹시나 해서 기존에 개발한 프로젝트들도 안되나 확인해봤는데, 다행히 정상적으로 컴파일 되는 것을 확인했다. 아마 새롭게 만든 프로젝트들에 한해서 이런 문제가 발생하는 것 같다.해당 문제에 대해 찾아보니 다 gradle 빌더를 사용하는 프로젝트에 관한 해결 방안이였다. Maven 으로 공부를 시작한 사람으로써 Maven 의 시대가 가는 게 느껴진다..그래도 꾸역꾸역 stackoverf..

Springboot 2024.12.12

가상화 소프트웨어로 자체 서버 구축

✔️ 서론사이드 프로젝트 서비스를 배포할 때 비용이 다방면으로 발생한다. 그중 가장 골치 아프고, 신경이 많이 쓰이는 것은 당연 서버비용 일 것이다. 필자는 AWS 프리티어도 모두 사용한 상태였기에 몇 개월 공짜 클라우드 서비스.. 쓸 수 있는 건 다 써본 것 같다. 더 이상 옮겨 다니기도 싫어서 내 집 마련을 위해 온프레미스 서버 구축을 하기로 마음먹었다. 서버를 구축하면서 겪었던 상황들을 구체적으로 포스팅하고자 한다. ✔️ 본론조금은 무식한 나는 '일단 해보면서' 배우는 걸 좋아하고 학교 수업에서 어느정도의 이론은 익혔기에 혼자 해보자고 해서 시작한 내용이다. 틀린 부분도 있을 수 있기에 따끔한 지적은 저를 발전시키니.. 마음껏 부탁드린다 :)가상머신 소프트웨어 VMware를 사용하여 1대의 호스트 ..

Devops 2024.12.04