전체 글 115

[프로그래머스] 명예의 전당(1)

문제설명 알고리즘 1. 점수 값을 조회하면서 다른 벡터에 값을 넣는다 2. 내림차순으로 정렬한다 3. K번째가 되기전까지는 가장 큰 인덱스 값이 최하 값이고, K번째까지 벡터에 들어왔을 경우 K-1번째가 최하값이므로 저장한다 코드 #include #include #include #include using namespace std; vector solution(int k, vector score) { vector answer; vector temp; for(int i=0; i< score.size(); i++){ int current = score[i]; temp.push_back(current); sort(temp.rbegin(), temp.rend()); // 내림차순 정렬 if(i

Algorithm 2023.02.22

[프로그래머스] 과일장수

문제설명 해당 문제는 주어진 값에서 얻을 수 있는 최대 가치를 계산하는 문제이다 상자에 과일의 가치가 주어지면 한 상자에 들어갈 수 있는 과일의 수와 최대 과일의 가치 값을 입력받는다 알고리즘 1. 과일의 가치를 내림차순으로 정렬한다 2. 팔 수 있는 최대의 상자 수 만큼 반복문을 돈다(남는 과일은 버리기 때문에 완성되는 상자 기준으로 계산한다) 3. 각 상자마다 가장 가치가 낮은 것이 얻을 수 있는 값이기 때문에 각 상자마다 제일 가치가 낮은 인덱스에 접근해서 결과 값을 계산한다 코드 #include #include #include #include using namespace std; int solution(int k, int m, vector score) { int answer = 0; //내림차순 ..

Algorithm 2022.11.14

[Java] Generics

1. 정의 - 타입을 일반화 하는 것을 의미 - 클래스 내부에서 정하는 것이 아닌 사용자 호출에 의해 타입이 지정되는 것 - class / interface / method 등의 타입을 파라미터로 사용할 수 있게 해주는 역할 - Java 5 부터 추가된 개념 ex) List list = new ArrayList(); // 는 diamond라고도 하고 제네릭 표현식임 2. 사용하는 이유 1) 재사용성 증가 : 여러 타입의 파라미터를 삽입해 객체를 생성할 수 있기 때문에 코드를 간결하게 하고, 재사용성을 높인다 2) 컴파일 시 타입 에러 발견 가능 : 컴파일시 잘못 사용되는 문제점을 발견할 수 있기 때문에 런타임 단계에서 발견 될 가능성을 방지한다 3) 컴파일러가 타입 변환 수행: 컴파일 단계에서 타입 캐스..

Language/Java 2022.10.26

[Kotlin] Null Safety

Nullable types and non-null types 코틀린은 null 참조 위험에 대비한다 예를 들어, Java언어의 경우에는 null 참조가 NullPointerException(NPE)를 불러일으킨다 1. Regular variable 기본적인 변수 선언 방식 var a : String = "abc" //non-null 하게 초기화 된 변수 a = null //이러한 경우 컴파일 에러가 발생함 ////////// var b: String ? = "abc" // it can be set to null b= null //ok print(b) //null이 출력됨 ////////// val l = a.length //a는 non-null하므로 가능 val l = b.length //b는 null ..

Language/Kotlin 2022.09.13

[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는 각 컬럼에 맞게 내용..

Project/Python 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