목록으로

Programming Notes

DAY-17] 231220 TIL(Spring 입문 1주차 - Controller, Service 작성하기) 그리고 작은 부분 문자열 찾기

오늘은 Spring 입문 첫 주차의 마지막 날이었네요. Controller와 Service를 작성하는 연습을 하면서, Spring의 기본적인 구조와 동작 방식에 대해 조금 더 이해할 수 있었어요. 특히, Controller에서 요청을 받아 Service에 전달하고,...

오늘은 Spring 입문 첫 주차의 마지막 날이었네요. Controller와 Service를 작성하는 연습을 하면서, Spring의 기본적인 구조와 동작 방식에 대해 조금 더 이해할 수 있었어요. 특히, Controller에서 요청을 받아 Service에 전달하고, Service에서 비즈니스 로직을 처리한 후 결과를 다시 Controller로 돌려주는 과정을 직접 구현하면서 MVC 패턴에 대한 감을 잡을 수 있었던 게 가장 큰 수확이었어요. 하지만 아직 갈 길이 멀다는 것을 느꼈습니다. 더 많은 연습이 필요하겠죠!

오후에는 알고리즘 문제를 풀었는데, 문제 자체는 간단해 보였지만 생각보다 까다로운 부분이 있었어요. 문제는 숫자로 이루어진 문자열 tp가 주어졌을 때, t에서 p와 길이가 같은 부분 문자열 중 p보다 작거나 같은 값을 가지는 부분 문자열의 개수를 찾는 것이었어요. 예를 들어 t = "3141592"이고 p = "271"이라면, t의 길이 3인 부분 문자열인 "314", "141", "415", "159", "592" 중에서 "271"보다 작거나 같은 수는 "141", "159" 두 개이므로, 함수는 2를 반환해야 합니다.

문제를 풀면서 가장 어려웠던 점은 문자열을 숫자로 변환하는 부분과, 각 부분 문자열을 효율적으로 비교하는 방법이었어요. 문자열 길이 제한이 10,000까지라서 단순하게 모든 부분 문자열을 순회하면서 비교하는 방법으로는 시간 초과가 발생할 가능성이 있었거든요. 결국, 각 부분 문자열을 Long.parseLong() 메서드를 이용해서 숫자로 변환하고, p로 변환한 숫자와 비교하는 방식으로 문제를 해결했어요. 하지만 더욱 효율적인 방법이 있을 것 같아서, 다른 사람들의 풀이를 참고해보고 더 나은 방법을 찾아보려고 합니다. 문자열의 길이가 만 단위라니... 괜히 긴장했네요.

오늘은 Spring 학습과 알고리즘 문제 해결 두 가지 모두 꽤 괜찮은 경험이었어요. Spring의 기본적인 개념을 더욱 확실하게 다지고, 알고리즘 문제 해결 능력도 향상시키기 위해 꾸준히 노력해야겠습니다. 특히, 문자열 처리에 대한 경험이 부족하다는 것을 느꼈으니, 이 부분에 대한 연습을 더욱 집중해야 할 것 같아요. 내일도 화이팅!