분류 전체보기 777

[자료 구조] 멀티셋 C++

개요C++에서의 멀티셋은 STL에서 제공하는 연관 컨테이너로, 중복된 키 값을 허용하는 특징이 있다.주요 특징은 하기와 같다.자동 정렬: 원소들이 자동으로 정렬됨중복 허용: 같은 값을 여러 번 저장 가능검색 효율: 이진 탐색 트리 기반으로 구현되어 있어 검색이 효율적 (O(log n))불변성: 한번 삽입된 원소의 값을 직접 수정할 수 없음멀티셋은 중복된 데이터를 유지하면서 정렬이 필요한 경우에 유용하다.예를 들어 빈도수 계산, 정렬된 데이터에서 중복을 허용하는 경우, 우선순위가 같은 항목들을 관리할 때이다. 구조체를 통한 operator함수 또한 적용이 가능하다.삼성 SW 역량평가 B형을 준비할 때 기출문제를 풀며 얻었던 지식에 관해 짧게 작성해 보겠다.  멀티셋을 이용한 데이터 관리#include#in..

자료 구조 2025.02.17

[G5] 백준 19641번 중첩 집합 모델 C++ 트리, 오일러 경로 테크닉, 트리셋

리뷰 https://www.acmicpc.net/problem/19641오일러 경로 테크닉의 기초적인 문제이다.  전역 변수N : 배열 크기의 최대 값을 저장할 상수 변수n : 정점의 개수를 저장할 변수s : 트리의 루트를 저장할 변수lst : 인접 리스트를 저장할 정수형 트리셋 배열it : inTime을 저장할 배열ot : outTime을 저장할 배열t : Time을 저장할 변수v : 방문 여부를 체크할 배열 함수1. dfsvoid dfs(int node) 깊이 우선 탐색을 통해 it, ot배열을 초기화 하기 위한 함수매개 변수로 현재 노드의 번호 node를 전달 받는다.it배열의 node인덱스에 t를 전위증가 시킨 값을 저장한다.node의 인접 리스트를 순회하며 방문처리가 되어 있지 않으면 방문처리 ..

[G1] 백준 23817번 포항항 C++ 너비 우선 탐색, 백트래킹

리뷰 https://www.acmicpc.net/problem/23817비트마스킹으로 접근했다가 시간 초과를 맞고, BFS + 백트래킹 구조로 접근하니 AC를 받았다.하지만 실행 시간이 너무 긴 것 같아 만족스럽지는 못한 풀이  전역 변수n, m : 맵의 세로/가로의 길이를 저장할 변수idx : 식당의 인덱스를 저장할 변수ans : 정답을 저장할 변수lst : 맵 정보를 정수로 치환할 2차원 배열v : 맵의 방문 여부를 체크할 2차원 배열dx, dy : 4방향 탐색을 위한 방향 배열Pos : 시뮬레이션 시 사용할 위치 x, y와 소요 시간 t를 정의할 구조체Edge : 간선 저장 시 사용할 식당의 인덱스 idx와 거리 t를 정의할 구조체edges : 인접 리스트를 저장할 Edge타입 벡터의 배열start..

[G1] 백준 1175번 배달 C++ 너비 우선 탐색

리뷰 https://www.acmicpc.net/problem/1175배달지 두 곳에 배달을 하는 최소 시간을 구하되, 한 방향으로 연속 두번 이동할 수 없는 제약이 있는 문제  전역 변수n, m : 맵의 세로가로 길이를 저장할 변수sx, sy : 초기 x, y좌표를 저장할 변수lst : 맵 정보를 입력 받을 배열v : 방문 여부를 체크하기 위한 배열dx, dy : 4방향 탐색을 위한 방향 배열Pos : 시뮬레이션 시 현재 위치x, y, 소요 시간 t, 전에 이동한 방향 d, 배달 여부 c를 정의할 구조체dic : key를 배달지의 좌표, value를 배달 여부 체크값을 저장할 해시맵 함수1. bfsint bfs() 너비 우선 탐색을 통해 배달지 두 곳에 배달을 마치는 최소 시간을 구하기 위한 함수Pos..

[AIoT] 무인 사물함 프로젝트 SpringBoot 서버 배포

개요로컬 환경에서 기능 구현이 끝났다면 로컬 환경 외에서 접속 가능하도록 웹 서버를 배포해야한다.AWS EC2 환경에서 서버를 배포하기 위해 우선 깃 허브에 레포지토리 생성 후 push를 해준다.  git clone '레포지토리URL' 이후 AWS환경에 접속하여 해당 레포지토리를 clone해준다.  이러면 깃 허브에 올렸던 개발 했던 내용을 해당 디렉토리에서 확인할 수 있다.  서버 빌드우선 디렉토리 안에서 프로젝트가 위치한 디렉토리로 이동해 준다.mvn clean package 위 명령어를 통해 mvn빌드를 실행해 준다. mvn기반 프로젝트에만 유요하다.clean은 이전 빌드 정보를 날리는 것이고, package를 통해 빌드를 실행한다. 만약 로직이 변경되어 로컬 환경에서 수정 후 git에 다시 pus..

[AIoT] 무인 사물함 프로젝트 환경 설정 Config

개요설정 파일(예: config.py, .env 파일)이나 환경 변수는 애플리케이션의 설정을 관리하는 역할을한다.MVC에서 직접적인 역할을 하지는 않지만, Model, View, Controller 모두에서 사용될 수 있다.MVC 아키텍처에 포함되지는 않지만, 함께 사용되면서 애플리케이션의 유지보수성과 안정성을 높이는 역할을한다. 해당 프로젝트에서는 총 3개의 Config를 작성하였으며, 각각 CORS, Swagger(API 명세), Session 관련 설정을 적용하였다.  WebConfig.javapackage com.a207.smartlocker.config;import org.springframework.context.annotation.Configuration;import org.springfra..

[AIoT] 무인 사물함 프로젝트 예외 처리 Exception

개요예외(Exception)는 애플리케이션의 오류를 처리하는 기능이다.런타임 시 발생하는 예외에 대해 NotFound나 HTTP관련 예외는 지원해 준다.하지만 정확히 어떤 오류가 발생했는지를 사용자가 직접 지정하여 발생시킬 수 있다. 예외 처리는 MVC 구조에서 Controller나 Model에서 발생하는 오류를 처리하는 데 사용된다.Exception Handling은 MVC의 일부는 아니지만, Controller나 Model에서 오류를 처리하는 데 필요하다.하지만 MVC와 함께 사용되면서 애플리케이션의 유지보수성과 안정성을 높이는 역할을한다. 또한 사용자 지정 예외 처리를 만들게 되면, 개발을 진행하면서 어느 부분에서 에러가 발생했는지 쉽게 파악할 수 있다는 장점이 있다.  exception패키지를 생..

[G2] 백준 10711번 모래성 C++ 너비 우선 탐색

리뷰 https://www.acmicpc.net/problem/10711골드 2문제 치고는 좀 쉬운 문제였던 것 같다. 차라리 치즈 문제 시리즈가 더 까다로웠던 것 같은듯?치즈 시리즈 문제 추천이다.[G4] 백준 2636번 치즈 C++ 너비 우선 탐색, 플러드 필, BFS, Flood Fill [G4] 백준 2636번 치즈 C++ 너비 우선 탐색, 플러드 필, BFS, Flood Fill리뷰 https://www.acmicpc.net/problem/2636매 시간이 지날 때 마다 공기 근처에 있는 치즈가 녹는 전형적인 플러드 필 문제  전역 변수n : 맵의 세로 길이를 저장할 변수m : 맵의 가로 길이를 저장할 변수rzzzz955.tistory.com[G3] 백준 2638번 치즈 C++ 너비 우선 탐색,..

[AIoT] 무인 사물함 프로젝트 MVC 모델 작성 Controller

개요MVC 아키텍처에서 Controller는 애플리케이션의 사용자 인터페이스 로직과 비즈니스 로직을 연결하는 중요한 구성 요소이다.클라이언트의 요청을 받아 처리하고, 서비스 계층의 비즈니스 로직을 호출한다.요청된 데이터를 가공하고, 적절한 응답을 반환한다. 주요 기능으로 HTTP 요청 처리, 요청 파라미터 매핑, 서비스 메서드 호출, 응답 데이터 포맷팅 등이 있다.HTTP 요청의 타입에 따라 매핑할 주소를 입력하면, 클라이언트는 해당 주소로 API 호출 요청을 보낼 수 있다.하기엔 무인 사물함 프로젝트를 진행하며 작성한 컨트롤러 정보이다.  AdminController.javapackage com.a207.smartlocker.controller;import com.a207.smartlocker.mode..

[AIoT] 무인 사물함 프로젝트 MVC 모델 작성 Serivce, ServiceImplement

개요서비스는 인터페이스로 구현되며 비즈니스 로직의 추상화된 계약을 정의한다.수행해야 할 비즈니스 메서드의 시그니처(이름, 파라미터, 반환 타입)를 선언한다.구체적인 구현 로직은 포함하지 않고, 메서드의 동작 방식만을 정의합니다. 서비스임플은 서비스 인터페이스의 실제 구현을 담당한다.구체적인 비즈니스 로직을 작성하고, Repository와 상호작용하여 데이터 처리 및 비즈니스 규칙을 적용한다.  Service와 ServiceImpl을 분리하는 이유1. 느슨한 결합(Loose Coupling)인터페이스를 통해 구현을 분리함으로써 시스템의 유연성을 높인다.구현 클래스를 쉽게 교체하거나 변경할 수 있다.2. 다형성(Polymorphism) 지원여러 구현체를 만들어 다양한 비즈니스 로직을 적용할 수 있다.예: 테..

728x90