전체 글 121

[Kotlin 기초]

1. function //메인함수 fun main(){ println("Hello World!") } //sum 을 반환하는 함수 fun sum(a: Int, b:Int) : Int{ return a+b } //같은 동작 다른 형태 fun sum(a: Int, b:Int) = a+b //반환을 안하고 출력하는 함수 fun printSum(a: Int, b:Int) { println("sum of $a and $b is ${a+b}") } 2. Variables - val : read-only 로컬 변수를 선언할 때 사용함 -> 오직 단 한번만 값을 할당할 수 있음 - var: 여러번 값을 할당할 수 있음, 로컬에서만 사용하지 않아도 됨 //val val a : Int =1 // immediate assi..

Language/Kotlin 2022.09.04

[CSV to JSON] 공공데이터 자료 변환 후 mongoDB에 넣기

1. 문제점이번 프로젝트에서 공공데이터를 활용해서 DB에 넣을 필요가 있었다이때 주어진 csv 파일이 문제가 있었는데, 정규화가 하나도 안된 상태였다사용한 공공데이터는 아래 링크에서 볼 수 있다https://www.data.go.kr/data/3038404/fileData.do?recommendDataYn=Y  한국산업인력공단_국가기술자격 종목별 시험정보_20220620국가기술자격의 종목별 시험정보(종목명, 개요, 변쳔과정, 수행직무, 진로 및 전망, 취득방법)에 대한 데이터입니다.www.data.go.kr우선 엑셀로 파일을 열어서 확인해봤는데 아래와 같았다Column이 3개로만 나누어져있었으며 type이라고 정의한 곳에는 사실 column으로 가야하고 contents는 각 컬럼에 맞게 내용으로 가야한다..

ETC 2022.07.30

[Spring boot + MongoDB + MySQL] DB 2개 연동하기

Springboot에 Mysql과 MongoDB 연결하기 1. 연결이유 프로젝트 중, RDBMS로 기본적인 것들은 다 구현해 놨는데, 서비스 배포시 사용자들의 로깅이나 결제 데이터가 쌓이면 Document기반인 관리하기 더 편한 NoSQL로 넣는게 좋을것 같다는 생각이 들었다 따라서 구조는 Springboot에 Mysql과 MongoDB둘다 연결되어 있는 구조이다 이번 글에서는 MongoDB에 AOP로 사용자 접근 로그를 저장하도록 하겠다 Collection이름은 user_history이다 2. 코드 1) build.gradle 수정 가장 아랫줄 코드가 mongodb를 추가한 부분이다 2) User History Entity 수정 //@Entity @Document(collection="user_hist..

Back-end/Spring 2022.07.26

Java Basic

Java Basic JVM(Java Virtual Machine) 동작 방식 (1) Class Loader JVM내로 클래스 파일을 로드하고, 링크를 통해 배치하는 작업 수행 (2) Execution Engine class loader를 통해 JVM 내의 Runtime Data Area에 배치된 바이트 코드드을 명령어 단위로 읽어서 실행함 (3) Garbage Collector heap 메모리 영역에 생성된 객체들 중 참조되지 않은 객체들을 탐색 후 제거하는 역할 (4) Runtime Data Area JVM의 메모리 영역으로 자바 애플리케이션을 실행할 때 사용되는 데이터들을 적자하는 영역 - Method Area: 모든 스레드가 공유하는 메모리 영역으로 class, interface, method, f..

Language/Java 2022.07.22

Spring Basic

Spring DI & Bean Question List DI 종류는 어떤 것이 있고, 이들의 차이는? Autowiring 의 과정에 대해 설명해 보자 Bean/Component 어노테이션에 대해서 설명하고, 차이점에 대해 설명해보자 의존성과 설정값을 생성자 인자로 주입해야하는 이유는? IoC(Inversion of Control: 제어의 역전) 일반적으로 코드를 짤 때 개발자가 직접 의존성을 주입한다 public class IndexController{ private ARepository A= new ARepository(); } 위의 예시와 같이 직접 new 를 해서 의존성을 주입했다 하지만 제어의역전(IoC)의 경우 이와는 다르다 외부에서 의존성을 주입한다는 뜻이다 즉, DI(Dependency In..

CS 2022.07.22

[백준 7569] 토마토

문제설명 토마토가 상자안에 들어있다 가로M, 세로N, 높이 H로 상자가 주어진다 1은 토마토가 익어있다는 의미이고, -1은 빈 공간이다. 하루마다 익은 토마토를 기점으로 위,아래, 상,하,좌,우가 익는다 모든 토마토가 다 익는데 걸리는 최소한의 기간을 출력시킨다 단, 토마토가 원래 다 익어있는 경우에는 0을 출력하고, 토마토가 다 익지 못하는 경우는 -1을 출력시킨다 알고리즘 1. 입력 정보 받기 2. 그래프의 값이 1인(토마토가 익은경우) queue에 그 좌표값을 넣는다 3. bfs알고리즘을 사용하여 상,하,좌,우, 위, 아래를 모두 확인한다 4. 방문기록을 조회하여 0이 남아있는 경우 -1을 출력하고 그렇지 않은 경우엔 최대값을 출력시킨다 코드 #include #include #include usin..

Algorithm 2022.07.11

[백준 5525] IOIOI

문제설명 알고리즘 1. 입력받기 2. N으로 패턴 만들기 3. 주어진 문자열 S에서 N을 find함수로 찾기 4. 찾을때 마다 결과값 변수 1씩 증가, index를 업데이트 1. 입력받기 2. I를 만날때 마다 바로 뒤에 OI가 있으면 k증가, 문자열 index를 2씩 증가 3. OI가 I이후로 N번 나오면 패턴 매칭이 완료된 것이므로 결과 값 증가 , k 감소 4. 결과값 출력 코드 #include #include using namespace std; int main() { int N, M,cnt=0; cin >> N >> M; string S; cin >> S; /*string val; for (int i = 1; i

Algorithm 2022.07.11

[백준 1992] 쿼드트리

문제설명 알고리즘 1. 그래프 정보 입력 받기 2. 4등분 해서 해당 네모가 모두 같은 값으로 이루어진지 판단 3. 모두 같은 값이면 그 값을 출력하고 종료 4. 모두 같은 값이 아니면 또 4등분 해서 반복 코드 #include #include using namespace std; int graph[65][65]; void cut(int a, int b, int size) { int cnt_0 = 0, cnt_1 = 0; for (int i = a; i < a + size; i++)//모두 1이거나 모두 0 인경우 판단 { for (int j = b; j < b + size; j++) { if (graph[i][j]) cnt_1++; else cnt_0++; } } if (!cnt_0 && cnt_1) ..

Algorithm 2022.07.10

[백준 14503] 로봇 청소기

문제설명 알고리즘 1. 입력 받기 : 그래프 크기, 현재 위치, 방향, 그래프 형태 2. 방향 설계 -> 북 서 남 동 순으로 회전하기 때문에 dx,dy에 전진할때 발생하는 값을 정의해 둔다 3. 왼쪽으로 돌고, 안갔으면 간다. 단 갔으면 왼쪽으로 돈다 4. 4방향 다 돌았는데 갈 수 있는 곳이 없는 경우 그 자리에서 1칸 후진한다 5. 후진하려는데 그 뒤도 막혔으면 종료 코드 1) 시행착오 #include using namespace std; //탐색 int dx[4] = { 0,-1,0,1 }; //d=0 ~ 3일때 x의 이동 값 int dy[4] = {-1,0,1,0 }; //d=0 ~ 3일때 y의 이동 값 //후진 int bx[4] = { 1,0,-1,0 }; //d=0 ~ 3일때 x의 이동 값 ..

Algorithm 2022.07.03

[C++] lower_bound / upper bound/ 중복제거

이분탐색을 적용하여 찾고자 하는 값의 index를 반환해주는 함수 (algorithm 헤더 적용 필수! ) 1. lower_bound(하한)       찾고자 하는 그 값 이상인 값의 인덱스 번호를 반환해줌 sort(idx.begin(), idx.end()); //오름차순 정렬 필수cout2. upper_bound(상한)     찾고자 하는 그 값 초과인 값의 인덱스 번호를 반환해줌sort(idx.begin(), idx.end());//오름차순 정렬cout3. 중복제거v.erase(unique(v.begin(),v.end()),v.end()); 알고리즘을 짜다가 벡터관련 헷갈리고, 몰랐던 것들을 발견해서 간단하게 사용법을 정리했다https://www.acmicpc.net/problem/18870 Xj를 ..

Algorithm 2022.07.03