전체 글

알고리즘 문제 풀이와 C++·Spring·프론트엔드 개발, 컴퓨터 과학과 AI 논문을 쉽게 정리하는 기술 블로그입니다.
https://www.acmicpc.net/problem/1194 1194번: 달이 차오른다, 가자. 첫째 줄에 미로의 세로 크기 N과 가로 크기 M이 주어진다. (1 ≤ N, M ≤ 50) 둘째 줄부터 N개의 줄에 미로의 모양이 주어진다. 같은 타입의 열쇠가 여러 개 있을 수 있고, 문도 마찬가지이다. 그리고, www.acmicpc.net 1. Logic 열쇠가 6개밖에 없기때문에 비트로 표현 가능하다. 큐에 현재 열쇠를 모은 상태를 비트로 저장해서 관리해준다. 이 문제에서 나눠질 부분문제를 생각해보면 1. 열쇠를 만날경우 - 현재 열쇠를 모은거와 지금 열쇠를 or연산하여 모은 상태를 구하고 모았던 열쇠면 다시 갈 필요 없기 때문에 건너뛰고 안모은 열쇠면 갱신한 열쇠 컬렉션 상태를 큐에 넣어준다. 2...
https://www.acmicpc.net/problem/17144 17144번: 미세먼지 안녕! 미세먼지를 제거하기 위해 구사과는 공기청정기를 설치하려고 한다. 공기청정기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기의 칸으로 나눴다. 구사 www.acmicpc.net 1. Logic 구현은 어렵지 않은문제인데 실수하기 쉬운 문제인 것 같다. 1. 입력을 받고 공기청정기가 있는 위치의 y좌표를 저장해둔다. 2. 미세먼지의 합을 더할 임시 배열에 먼지를 /5한 값을 4방향으로 더해준다. 3. 이전 먼지 배열과 임시배열을 더해줌과 동시에 0으로 초기화해준다. 2. Code #include using namespace std; int r, c, t; int dust..
게시물 대표 이미지
스프링 리액트 통합 빌드 환경 구축하는 도중 빌드는 됐는데 빌드를 실행하려니까 빌드 파일에 접근을 못한다는 에러가 떴다 이건 빌드 파일이 있는곳에서 접근을 하지 않아서 빌드파일이 어디있는지 못 찾아서 그런것이다. 통합 빌드 커맨드 : java -jar demo-web-0.0.1-SNAPSHOT.jar 이때 빌드를 하는 방법은 1. 빌드 파일이 생성된 디렉터리로 이동 후 커맨드를 입력한다. 이러면 빌드 파일이 있는 경로를 안붙혀줘도 된다. 2. 빌드 파일이 생성된 디렉터리의 주소까지 붙혀서 빌드파일 디렉터리 커맨드를 입력한다. 빌드 파일은 mainProject/build/libs에 있다. 통합 빌드 커맨드 :java -jar build/libs/demo-web-0.0.1-SNAPSHOT.jar
게시물 대표 이미지
Spring-React 통합 빌드 환경 구축 중 리액트 파일을 찾을 수 없어서 빌드를 실패했단다. 보통 다른 블로그들을 보면 아래의 코드를 build.gradle의 하단에 붙여넣기 하라고 한다. 아래 코드의 내용은 빌드를 할 때 프론드 경로에 있는 React 프로젝트를 빌드하고 SpringBoot 프로젝트 빌드 결과에 포함시킨다 이런 내용이다. def frontendDir = "$projectDir/frontend" sourceSets { main { resources { srcDirs = ["$projectDir/resources"] } } } // 생략 저 오류가 뜬 이유는 React 프로젝트를 만들 때 npx create-react-app을 한 경로와 내가 설정한 frontendDir이 일치하지 않..
게시물 대표 이미지
현재 나는 군 복무중이라 인텔리제이를 사용하지 못하고 VSCode기반으로 하는 codespaces와 gitpod을 사용하고 있다. Spring - React 통합 빌드를 구축하는 과정에서 JDK 버전 오류가 나서 빌드가 안된다는 오류 메세지가 떴다. 이유는 확실히 모르겠지만 내 gitpod에서는 계속 자바 버전이 11로 잡혔다. 내 스프링 부트 버전은 3.2.1로 3.x.x 버전부터는 Java17이상부터 지원하기 때문에 그래들 빌드가 실행이 안됐다. 그래서 자바 업그레이드 하는 방법을 찾아서 기록해 두려고 한다.(또 언제 이럴지 몰라..) Spring - React 통합 빌드를 구축하는 과정에서 JDK 버전 오류가 나서 빌드가 안된다는 오류 메세지가 떴다. 설치 가능한 Java 버전 목록 조회 : sdk..
https://www.acmicpc.net/problem/11054 11054번: 가장 긴 바이토닉 부분 수열 첫째 줄에 수열 A의 크기 N이 주어지고, 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ Ai ≤ 1,000) www.acmicpc.net 1. Logic 부분문제를 나눠보자면 1. 오름차순으로 받는경우 1-1. 이전에 선택한 숫자보다 현재 인덱스의 숫자가 큰경우 > 선택 1-2. 이전에 선택한 숫자보다 현재 인덱스의 숫자가 작은 경우 > 내림차순으로 변경하고 선택 2. 내림차순으로 변경된 경우 2-1. 이전에 선택한 숫자보다 현재 인덱스의 숫자가 작은경우 > 선택 3. 선택안하고 인덱스를 넘기는 경우 2. Code #include using names..
https://www.acmicpc.net/problem/2580 2580번: 스도쿠 스도쿠는 18세기 스위스 수학자가 만든 '라틴 사각형'이랑 퍼즐에서 유래한 것으로 현재 많은 인기를 누리고 있다. 이 게임은 아래 그림과 같이 가로, 세로 각각 9개씩 총 81개의 작은 칸으로 이루 www.acmicpc.net 1. Logic 대표적인 백트래킹 문제. 문제를 푸는 로직은 아래와 같다. 1. 입력을 받으면서 0의 갯수(채워야 하는 빈칸의 갯수)를 같이 카운트한다. 2. solve함수의 파라미터로 0을 넣고 스도쿠 칸이 총 81칸이기 때문에 나누기, 나머지 연산자로 y, x칸의 좌표를 구한다. 나눗셈 연산 : y, 나머지 연산 x 3. 가로, 세로, 3*3에 이미 나온 숫자들이 있는지 확인하고 1~9까지 돌..
오늘 백준에서 문제를 풀다가 vector정렬 시 내가 원하는 순서대로 커스텀해서 정렬하는 compare함수를 만들어서 사용하다가 Runtime Error를 만나서 구글링으로 알아낸 결과를 정리하려고 한다. 결론은 벡터를 정렬하기 위해 sort로 넘겨준 cmp 함수가 잘못돼서 발생한 문제였다. 1. C++ 공식 문서에서 알아보는 Sort C++ STL의 sort함수는 수학적으로 strict weak ordering 조건을 만족해야 한다. 1. cmp(a, a) == false 2. cmp(a, b) == true이면 cmp(b, a) == false. 두 비교체를 바꾸면 참/거짓 값도 변경되어야한다. 3. cmp(a, b) == true이고 cmp(b, c) == true이면 cmp(a, c) == tru..
게시물 대표 이미지
1. Singleton Pattern이란? Singleton의 뜻은 실제로 사전에 (단독)개체, 독신자, 외둥이 라는 뜻이다 단어의 뜻과 같이 오직 한개의 인스턴스만 생성하여 사용하는 디자인 패턴을 싱글톤 패턴이라고 한다. 프로그램에서 자주 사용되고 정해진 일정한 동작을 하는 객체들을 계속 인스턴스화 했다가 메모리 해제 해주며 사용하면 한번에 여러개를 만드는 경우 메모리가 비효율적으로 사용되기 때문에 하나의 메모리에 할당하여 생성하고 이걸 계속 돌려쓰면 보다 메모리를 효율적으로 사용할 수 있다..! 2. Singleton Pattern Code 싱글톤 패턴의 장단점을 알아보기 전에 먼저 코드를 보고 가자. 2-1. new를 통한 무분별한 객체 생성 new를 통해 인스턴스를 생성하게 되면 singleton..
https://www.acmicpc.net/problem/20056 20056번: 마법사 상어와 파이어볼 첫째 줄에 N, M, K가 주어진다. 둘째 줄부터 M개의 줄에 파이어볼의 정보가 한 줄에 하나씩 주어진다. 파이어볼의 정보는 다섯 정수 ri, ci, mi, si, di로 이루어져 있다. 서로 다른 두 파이어볼의 위치 www.acmicpc.net 1. Logic 1. 파이어볼을 이동시킨다. 이떄 참조자를 통해 파이어볼의 x, y좌표를 계산해서 변경한 후 임시 그래프에 넣어준다. 2. 파이어볼 이동이 끝나면 합쳐줘야한다. 모든 파이어볼의 방향이 짝수거나 홀수면 0,2,4,6으로 가야하기 떄문에 홀짝을 bool로 판단한다. 3. 홀짝 판단 여부를 가지고 방향을 정해서 다시 임시 벡터에 넣어준다. 4. k..
보글보글소다
Conquer Mind, Conquer All | 개발 블로그