본문 바로가기

전체 글53

Failed to configure a DataSource 오류 해결하기 IntelliJ의 SpringBoot를 통해 프로젝트를 만들고, 의존성을 추가한 후 바로 실행을 시켜보니 다음과 같은 오류가 나왔다. DB연결을 위한 MySQL 관련 의존성을 추가해 놨었는데 해당 DB를 찾을 수 없어 DataSource를 설정하는데 실패했다는 것이다. 이를 해결하기 위해서는 application.properties에 DB의 URL과 이름, 비밀번호를 기입해줘야 한다.spring.datasource.url=jdbc:mysql://localhost:3306/your_database_namespring.datasource.username=your_usernamespring.datasource.password=your_passwordspring.datasource.driver-class-nam.. 2025. 1. 6.
[백준 10610번 30] 오늘의 문제는 30이다.  처음엔 무조건 완전탐색! 문제를 읽고 N의 범위가 10만 자리 양수..? 를 보고 헉..! 했지만 이어 고민을 시작했다.30의 배수가 되려면 어떤 조건이 필요할까?30은 일단 3 * 10 이란 생각을 했다.그리고 학교를 다닐 때, 3의 배수 조건이 있었던 것을 기억해 냈다..!물론 그 내용은 검색해 보았다.. 너무 오래돼서 까먹었,, 크흠아무튼 3의 배수 조건은 모든 자리 수의 합이 3이 되면 3의 배수이다.그렇다면 N의 모든 자리를 한 번씩 확인하며, 각 자리가 어떤 수 인지 저장하고0이 1개 이상 있는지, 모든 자리 수의 합이 3의 배수인지만 확인하면 된다. 코드는 다음과 같다.( 코드가 너무 커 보인다면 "Ctrl + 스크롤 내리기" 하면 잘 보여요! )( 초기화는 "Ct.. 2025. 1. 6.
사이드 프로젝트 시작하기 (To do Project) 왜 사이드 프로젝트를 시작하는가?현재 Front-End 개발자로 취업을 노력하고 있지만 Back-End 개발자로 전향하기 위해서또한, 삼성청년 SW아카데미(SSAFY)에서의 개발 경험을 모두 상기하고2025년도 상반기 취업을 목표로 새로운 경험을 해보고 싶기 때문에Full-Stack으로 사이드 프로젝트를 시작하기로 결정했다. 어떤 서비스를 만들까?일단 사용해보고 싶은 기술이 크게는 AWS 배포와 Docker 컨테이너 사용이었다.그래서 기본적인 CRUD와 로그인, 소셜로그인 기능만 있는 프로젝트를 만들기로 결정하였고그 결과, To Do Project ( 할 일 관리 웹사이트 )를 만들어 보기로 하였다. 어떤 기술스택을, 왜 사용할까?Front - EndReact컴포넌트 단위로 구현함으로써 재사용성과 유지보.. 2025. 1. 5.
[백준 15996번 팩토리얼 나누기] 오늘의 문제는 팩토리얼 나누기이다.  처음엔 무조건 완전탐색!N의 범위가 int범위 끝이니 약 21억쯤으로 1부터 최대범위까지 탐색하며될 때마다 세준다면 필연적으로 시간초과가 날 것이다. 고민 끝에 알아낸 것은?모든 수를 확인할 필요 없이 A가 N까지 모든 수 중에몇 개가 포함되어 있나? 였다. 예를 들어, N = 10이라면2, 4, 6, 8, 10에 각각 1, 2, 1, 3, 1개씩 2가 들어있고,이는 N까지의 모든 2의 제곱수(문제의 A의 제곱수)로 N을 나누고그 수를 ans에 모두 더해주면 끝이다! 방금 얘기한 N = 10인 경우,10 / 2 = 510 / 4 = 210 / 8 = 1(나눈 값이 int자료형인 것에 유의하자!)합하면? 8! 예시를 한 가지 더해보자,N = 15, A = 3인 경우15.. 2025. 1. 5.
[백준 7696번 반복하지 않는 수] 오늘의 문제는 반복하지 않는 수이다.  처음엔 무조건 완전탐색! 처음엔 완전탐색으로 while문을 통해 모든 수를각 자릿수를 그때그때 따로 파악하여 출력을 해줬다.그 결과는 메모리 초과였다. 고민을 해본 결과 1부터 최대 n범위인 1백만까지 각 수에 해당하는n번째 반복 숫자 없는 수를 미리 구하고요구하는 수마다 해당하는 수를 출력해 주면 되는 것이었다. 코드는 다음과 같다.( 코드가 너무 커 보인다면 "Ctrl + 스크롤 내리기" 하면 잘 보여요! )( 초기화는 "Ctrl + 0" / 다시 확대는 "Ctrl + 스크롤 올리기" ) import java.util.*;import java.io.*;public class Main{ static int [] ans = new int [1000010]; /.. 2024. 12. 31.
[백준 31589번 포도주 시음] 오늘의 문제는 포도주 시음이다.  처음엔 무조건 완전탐색!완전탐색으로 문제를 풀이한다면, N개의 포도주 중에 K개를 선택하여 모든 순서를고려하며 마셔본 맛을 하나하나 대소판별해 주면 답이 나온다! 하지만 입력의 범위를 보았을 때, 시간 초과가 나올 것이 확실하니 최적화를 고민해 보았다. 일단 가장 큰 결괏값이 나오려면 어떤 조건을 가져야 하는지 생각해 보았다.가장 맛있는(T가 가장 큰) 포도주를 먼저 마시고,가장 맛이 없는(T가 가장 작은) 포도주를 마시는 것을반복하는 방법이 맛의 합의 최댓값이 되는 방법이라 생각했다. K개를 선택해야 하는 부분은 전체 맛들을 정렬 해줌으로써 생략해도 되게 만들었다.그 결과 맞았습니다! 코드는 다음과 같다.( 코드가 너무 커 보인다면 "Ctrl + 스크롤 내리기" 하면 .. 2024. 12. 17.
[백준 1735번 분수 합] 오늘의 문제는 분수 합이다.   처음엔 무조건 완전탐색! 완전 탐색으로 문제를 풀이하면결과의 분자는 ( 분자 1 * 분모 2 ) + ( 분자 2 * 분모 1 )분모는 ( 분모1 * 분모 2 )로 계산하고 1 ~ 분모의 수에 도달할 때까지 나뉘는 수가 있다면 나누고, 없다면 끝내면 될 것이다. 이를 좀더 효과적으로, 결과의 분자와 분모는 똑같이 구하고최대공약수를 유클리드 호제법으로 구하여 각 분자와 분모를 나누어 최종 답안을 찾아주었다! 코드는 다음과 같다.( 코드가 너무 커 보인다면 "Ctrl + 스크롤 내리기" 하면 잘 보여요! )( 초기화는 "Ctrl + 0" / 다시 확대는 "Ctrl + 스크롤 올리기" )import java.util.*;import java.io.*;public class Mai.. 2024. 12. 4.
[백준 13241번 최소공배수] 오늘의 문제는 최소공배수이다.  처음엔 무조건 완전탐색! 완전 탐색이야 당연히 두 수 모두에게 나누어지는 수가 나올 때까지 1씩 더하는 방법이겠지만이를 최적화하기 위한 방법을 한번 고민해 보았다.나의 결론은 무작위 두 수 a, b의 곱 / (중복되는 수 = 최대공약수)라고 생각하였다. 그래서 두 수를 "유클리드 호제법"을 통하여 최대공약수를 구해주고(a * b) / 최대공약수 로 답을 도출해 보았다. 코드는 다음과 같다.( 코드가 너무 커보인다면 "Ctrl + 스크롤 내리기" 하면 잘 보여요! )( 초기화는 "Ctrl + 0" / 다시 확대는 "Ctrl + 스크롤 올리기" )import java.util.*;import java.io.*;public class Main { public static .. 2024. 12. 4.
HTTP / HTTPS HTTP / HTTPSHTTP ( Hypertext Transfer Protocol )클라이언트와 서버 간의 데이터를 송수신하는 프로토콜이다.무상태(stateless) 프로토콜이기 때문에 각 요청 - 응답 간의 연결은 독립적이다.이전의 통신 내용을 기억하지 않기 때문에 매번 새롭게 연결이 이루어진다.장점확장성이 뛰어나다.서버는 클라이언트의 상태를 저장할 필요가 없기 때문에 더 많은 요청을 처리할 수 있다.구현이 간단해진다.상태를 관리하지 않기 때문에 클라이언트와 서버 간의 상호작용이 단순화된다.단점각 요청은 이전 요청과 상관없이 처리되므로, 클라이언트가 상태를 기억해야 하는 경우 불편하다.+) 이를 해결하기 위해 쿠키나 세션, JWT 등을 사용하여 상태 정보를 관리한다.HTTPS ( Hypertext T.. 2024. 11. 29.