본문 바로가기

전체 글

(336)
백준 15686번 - 치킨 배달(C++) - 삼성 SW 역량 테스트 기출문제 - 골드V 처음엔 또 그래프? 라고 생각한 문제. 그러나 그래프 문제가 아니다. 가장 먼저 생각한 풀이는 1. BFS로 집과 치킨집의 거리를 넣어둠 2. DFS조합 3. 최소값 출력 그러나 BFS시에는 이쁘게 테이블 형태로 떨어지지 않는다. 너무 어렵게 생각했다. 그냥 각 좌표 받고 거리 구해서 순서대로 벡터에 넣어두면 된다. 문제의 핵심은 "조합" 이다. 즉 모든 경우의 수를 따져야하는 완전탐색 문제이다. 조합은 DFS로 구현하는 것이 가장 일반적이다. 예전에 공부해뒀는데 또 까먹어서 다시공부했다. 어휴 #include #include #include #define MAX 51 #define INT_MAX 10000000 using namespace std; int ..
Spring Boot - 용어 정리 1. JPA - 자바에서 자주 사용되는 인터페이스 모음, SQL이 아닌 Method로 DB를 컨트롤 할 수 있다. 그러나 무거운 단점을 해소하기 위해 쿼리문을 직접써야하는 경우도 물론 존재함 2. JDBC - 자바에서 DB 프로그래밍을 하기 위한 API 계속업데이트
Spring Boot - bean을 찾을 수 없는 오류 내가 뜬 오류는 바로 @org.springframework.beans.factory.annotation.Autowired(required=true) 문제는 패키지 구성의 문제가 있었다. 레포지토리는 repository에 있었고 그 레포지토리를 이용한 의존성 주입은 pach에서 했었다. 우선 SpringblogApplicaiton이 실행파일인데 이 실행 파일에 있는 @SpringBootApplication() 어노테이션은 지금 있는 패키지를 root로 올려 의존성을 뿌리는 것 같다. 때문에 pach에서 레포지토리를 가져와서 의존성을 주입하려니까 안되는 것이다. 위처럼 같은 패키지에 넣어주니 해결되었다. 또는 test 패키지 하위 폴더로 구성하면 될 것이다. 아마 이전포스팅에서 찾지 못해서 경로를 정해주었던..
Spring Boot - JSON으로 통신 1. get 요청(select) 주소에 담아서 데이터를 보낸다. 주소창에 입력하여 들어가는 건 전부 get 요청이라 보면 된다. 우리가 주소창에 입력해서 무언가 데이터를 변경한 경험이 있나 생각해보자. 2. post, put, delete 요청 데이터를 변경할 요청인 경우. 담아 보내야할 것이 많다. ex) 유저 정보라면 - 이름, 나이, 성별 등등.. 자바스크립트로 ajax 요청, 데이터는 json으로 통일 *스프링에선 form: form 태그라는 것이 있다. 3. 스프링 컨트롤러의 파싱 전략 key = value 데이터가 자동으로 변수에 담김 오브젝트로 날아올수도 있음. 이때는 반드시 Setter가 필요하다.
백준 16236번 아기 상어 (C++) 예전엔 못풀었는데 드디어 풀었다! 이 문제는 BFS인데도 각 노드(칸)에서 따져줘야할 것이 많고 그저 먹이까지의 최소거리가 아닌 중간에 이동할 수 없는 칸도 존재하고 게다가 먹이들한테는 우선순위까지 있다.. 내 풀이는 이렇다. 1. 현재 지점에서 bfs 하며 먹을 수 있는 칸의 거리와 좌표를 모아 벡터에 담는다. 2. 모은 벡터를 거리가 짧은 순, 가장 위에 있으며 가장 왼쪽에 있는 순서대로 정렬한다. comp를 직접 만들어서 쓰면 된다. 3. 이후 먹을수있는 칸에서 다시 bfs를 시도한다. 내 코드는 bfs임에도 재귀의 성질을 갖고 있다. 매우 거부감 들었지만 size가 20x20이라 통과한 건가 싶다.. 속도가 다른 코드들에 비해 좀 느린편이다. #include #include #include #in..
백준 12865번 평범한 배낭 (C++) 전형적인 DP memoization 문제이다. 배낭 문제는 NP-hard 문제로 그리디 알고리즘으로 해결할 수 없음이 증명되어있다. 그러므로 주어진 N번만큼을 메모이제이션을 통해 DP 행렬을 갱신해가며 최적의 답을 구하는 수 밖에 없다. 주어진 예를 들었을 경우다. 6 13 이 들어오면 처음이니 그냥 써주고 4 8이 들어오면 이전과 비교해서 갱신해준다. 이때 DP[2][4] 는 이전이 0이었는데 8로 바뀌었다. -> DP[2][4] = max(DP[1][4], DP[1][0] + 8) 그러므로 점화식을 구하면 DP[i][j] = max(DP[i - 1][j - w] + value, DP[i -1][j]) #include #include #define endl '\n' using namespace std;..
백준 14891번 톱니바퀴 (C++) 얼핏 봤을때 삼성 문제 답게 그래프인가? 싶었는데 그냥 쌩구현이었다. 난 백준을 풀 때 웬만하면 100줄을 넘는 코드는 좋지않은 코드라고 생각하는데 무려 200줄이다. 허허,,, 반복을 잘 하면 줄일 수 있을 것 같은데 일단 내 최선이다. 아마 이 문제를 틀린 사람들의 이유는 다음과 같을 것이다. "톱니바퀴가 움직인 후" 옆의 톱니바퀴와 비교하는 것이 아니라 "톱니바퀴가 움직이기 전" 옆의 톱니바퀴와 비교하여 움직일지 말지 정하는 문제이다. 이 문제는 톱니바퀴가 고작 4개여서 노가다로 풀 수 있었지만 톱니바퀴가 5개만 되어도 힘들것이다. 뭔가 일반화된 식이 있을까 고민된다. 1. 시계방향이동 함수 구현 2. 반시계방향이동 함수 구현 3. 톱니들의 규칙에 맞는 함수 구현 #include using name..
IntelliJ에서 자동 빌드 세팅 (Hot Reload) 플러터에서는 핫리로드 기능을 기본적으로 탑재하고 있기 때문에 따로 설정할 필요가 없지만 인텔리제이는 환경 설정을 해줘야한다. 0. 만약 pom.xml에 아래 groupId, artifactId, optional 이 없을 경우 org.springframework.boot spring-boot-devtools runtime true pom.xml에 추가 1. File -> Compile-> Build project automatically 체크 2. 왼쪽 하단의 Advanced Settings 에서 Allow auto-make to start~~ 체크 완료.