포스팅
-
백준 11000, 2457 문제 풀이 (Feat. 그리디 & 파이썬)알고리즘 2024.03.08 14:37
백준 11000번 강의실 배정 문제 설명 N개의 강의 중 i번째 강의가 si시간에 시작해 ti에 끝이난다. 최소의 강의실을 사용하여 모든 강의를 배정하는 방법을 구하는 문제입니다. 문제 풀이 모든 강의를 배정할 수 있는 최소 강의실 개수를 구하는 문제이므로 언제 강의실의 개수가 늘어나는지를 살펴보면됩니다. i번째 강의를 배정할 때 강의실의 개수가 늘어나는 경우는, 현재까지 생겨난 강의실의 마지막 강의가 끝나는 시간이 i 강의의 시작 시간보다 모두 늦은 경우입니다. 기존 강의실에 배정할 수 있는 경우 새로운 강의 C의 시작시간 S3가 두 강의실의 마지막 강의가 끝나는 시간 T1, T2 중 T1보다 크므로 강의실 1에 강의 A가 끝난 뒤 배정하면 됩니다. 새로운 강의실을 배정해야 하는 경우 새로운 강의 C의..
-
백준 7579번 앱 (Feat. Python)알고리즘 2024.03.04 11:20
문제 설명 핸드폰의 앱이 활성화 상태로 놓여있을 때 새로운 앱을 실행하면 필요한 메모리 공간만큼 활성화 상태인 앱들을 종료해야 한다. 활성화 상태인 앱들은 다시 실행할 때 드는 비용이 각각 정해져 있을 때, 새로운 앱이 실행되는데 필요한 공간을 확보하고 이 비용을 최소로 하는 방법을 구하는 문제입니다. 아이디어 냅색 알고리즘을 사용할 수 있는 문제입니다. 냅색 알고리즘 가방 안에 넣을 수 있는 무게가 M이고 가방에 넣을 수 있는 물건들의 무게와 물건을 넣었을 때의 가치가 각각 정해져 있을 때 가방안에 물건을 넣어 만족할 수 있는 최대 가치를 구하는 알고리즘입니다. 냅색 알고리즘을 풀 때 가장 헷깔렸던 것 중 하나는 분해를 어떠한 방식으로 진행해야 하는지 입니다. A, B, C, D 물건을 가방에 넣는다고..
-
Spring-Boot에 Spring-Data-JPA 적용하기 (Feat. Querydsl)백엔드 2024.02.23 11:31
현재 백엔드 관련 지식을 쌓기 위해 영상 강의를 시청중에 있습니다. 해당 프로젝트의 실제 스펙은 Spring Boot를 사용하고 MyBatis를 활용해 DB에 접근할 수 있도록 해주는 간단한 게시판 프로젝트입니다. 이후 많은 트래픽에 대비한 여러 요소들까지 확인할 수 있다고 알고 있어 계속 시청하고 있습니다. 하지만, 시청하고 있는 강의 그대로 코드를 작성하여도 MyBatis 설정에 문제가 있는 것인지, mapper에 문제가 있는 것인지 더 이상 진행을 할 수 없는 상황이었습니다.. 그래서 계속해서 학습을 하고 있는 JPA를 대신 적용해서 해보자는 생각이 들었고, MyBatis에서 JPA로 ORM을 변경하도록 했습니다. 또한, Spring에서 JPA를 더욱 더 잘 활용할 수 있도록 해주는 Spring D..
-
자바 AnnotationJava 2024.02.19 19:59
메타데이터의 한 형태인 Annotation은 프로그램 자체의 일부가 아닌 프로그램에 대한 데이터를 제공합니다. Annotation은 주석이 달린 코드의 작동에 직접적인 영향을 미치지 않습니다. Annotation의 용도 컴파일러에 대한 정보 — 컴파일러는 주석을 사용하여 오류를 감지하거나 경고를 억제할 수 있습니다. 컴파일 시간 및 배포 시간 처리 — 소프트웨어 도구는 주석 정보를 처리하여 코드, XML 파일 등을 생성할 수 있습니다. 런타임 처리 — 일부 주석은 런타임 시 검사할 수 있습니다. 어노테이션 형태 // 예1 (기본) @Annotation // 예2 (요소 1개 가진 경우) @Annotation("name") // 예2 (2개 이상의 요소를 가지고 있는 경우) @Annotation( name..
-
백준 알고리즘 풀이 모음 14590, 2469, 1107 (Feat Python)알고리즘 2023.11.22 15:58
백준 14590번 KUBC League (Small) N명의 정회원들이 리그에 참여하여 N(N-1)/2번의 경기를 진행하고, 1번 선수가 자신이 이긴 사람과 해당 사람이 이긴 사람들의 꼬리를 무는 선수 나열을 통해 얻을 수 있는 최대 길이 L을 출력하는 문제입니다. 문제 조건 2 (1번 선수에게 진 선수에게 진 선수)가 이긴 선수 -> ... 방향으로 탐색하여 최대 길이를 구합니다. DFS를 통해 최대 길이를 구합니다. 2. 최적화 방법 각 선수마다 위처럼 자신에게 진 선수를 나열했을 때의 최대 길이를 가지고 있을 것이고 이는 변하지 않습니다. -> 캐싱을 통해 어떤 선수가 이미 자신에게 진 선수들을 나열해 최대 길이를 가지고 있을 경우 이를 바로 활용하여 더 탐색하지 않고도 최대 길이를 반환할 수 있도..