본문 바로가기

전체 글151

[JPA] ORM 의미 및 JPA 는 왜 쓰는가? 출처) ko.wikipedia.org/wiki/%EA%B0%9D%EC%B2%B4_%EA%B4%80%EA%B3%84_%EB%A7%A4%ED%95%91 객체 관계 매핑 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 객체 관계 매핑(Object-relational mapping; ORM)은 데이터베이스와 객체 지향 프로그래밍 언어 간의 호환되지 않는 데이터를 변환하는 프로그래밍 기법이다. 객체 지향 ko.wikipedia.org ORM을 검색하면 정의는 객체 관계 매핑이라고 한다. 왜 객체 관계 매핑이라는 단어가 생겨났는가? ORM이 생긴 이유를 알기 위해서는 객체 지향 프로그래밍 언어의 객체와 데이터베이스의 데이터의 차이를 알아야 한다. 과일상자라는 객체를 java에서 클래스로 생성한.. 2020. 8. 6.
[JAVA / PYTHON] 연구소 3 (백준 17142) - 삼성기출 자바로 bfs,dfs 문제를 풀어본적이 없어서 간단한 bfs 문제를 풀어보려고 시도했다. 이전에 삼성 sw 역량테스트를 준비하면서 파이썬으로 쉽게 풀었지만 이제는 자바에 익숙해 지고 싶어서 자바로 풀어보았다. 자바로 풀면서 놀랐던것은 왜 순열과 조합과 관련한 라이브러리가 없는 걸까... 물론 분명히 있을거 같은데 본인이 못찾는 것일 수도 있다. 귀찮지만 직접 조합을 구현했다. 조합은 dfs로 구현하였다. 문제를 푸는 알고리즘은 그림으로 표현하겠다. 위와 같은 연구소 배열이 있다고 하자. 값이 2인것은 바이러스가 놓일 수 있는 위치다. 바이러스가 놓인 위치가 아니다. 이 중에서 2개를 활성화 한다고 하면 활성화 한곳은 0 으로 바꾸고 visited 에서 해당위치에 1로 바꿔준다. 또한 비활성화한 곳은 -1.. 2020. 8. 1.
[JAVA] 괄호변환 (kakao 2020) 위 문제는 알고리즘을 다 제공하였다. 그대로 구현만 하면 되는 아주 심플한 문제다. 여기서 String 을 자바로 어떻게 다룰 것인지가 문제인데 예를 들어 String p = "maple Story" 라는 String 이 있을 때, 각각의 char에 접근하는 방법은 몇가지 있는데 1. charAt으로 접근하는 방법 for(int i=0;i 2020. 7. 31.
[MYSQL] 프로그래머스 sql 쿼리 문제 후기 및 접근법 sql 문제를 처음 풀어보면서 내가 생각했던 대로 안되네? 어떻게 내부적으로 동작할까? 에 대한 의문에 대해 적어본다. 보통 데이터베이스 문제를 푼다라고 하면 insert, delete 이런 DML 보다는 데이터를 질의하는 SQL 을 물어본다. 그렇다. select 문으로 답을 구한다. 그러면 select 문을 수행할 때 어떤 순서로 수행 되는지 알아야 하는게 우선이다. 하지만 본인은 문제풀면서 순서를 감으로 알게 되었고 스택오버플로우에 똑같은 질문이 있어서 select 문에서 수행하는 순서에 대해 링크를 남겨본다. https://stackoverflow.com/questions/2617661/whats-the-execute-order-of-the-different-parts-of-a-sql-select.. 2020. 7. 30.
[JAVA] 나무 자르기 (백준 2805) 이분탐색의 기본중에 기본이라고 생각한다. 문제는 쉽지만 프로그래머스에서만 풀다보니 입출력하는 방법이 어색했다. 입출력하는 방법에도 익숙해 질겸 백준문제 쉬운거 하나 골라보았다. 다른 사람들의 풀이를 보니 대부분 BufferReader 와 StringTokenizer의 조합을 쓰고 있었다. 본인도 두개의 조합으로 문제를 풀었다. high를 tree의 최대값으로 설정하면 440ms 까지 줄일 수 있다. 220ms 까지 줄이려면 입출력을 직접 코딩해야한다.... 2020. 7. 30.
[JAVA] 블록 이동하기 (kakao 2020) 최대한 깔끔하게 풀어보려는 욕심 때문인지 시간이 오래걸렸다. 이 문제를 풀면서 자바에 더 익숙해지고 있는 느낌이 든다. 알고리즘은 bfs 이지만 회전하는 부분의 구현이 복잡하다. 어렵진 않지만 작은 하나의 실수라도 굉장히 고민하게 할 수 있다. 만약 이 문제를 풀때 테스트케이스 1번에서 틀렸고 문제를 풀때 "방향" 이라는 설정을 잡았다면 방향에서 오류가 났을 가능성이 크다. 필자가 그러하였다. 예를 들어 데이터를 다음과 같이 잡았다고 하는 경우를 든다. (1,0,0) 의 의미는 좌표(1,0) 에서 방향이 0(수평) 본인은 방향을 잡고 풀었는데 테스트케이스 1번을 도저히 통과가 안되어 좌표 2개를 잡고 로봇의 움직임을 설정하였다. 모든 로직이 같지만 통과한 것을 보면 분명 방향 관련 로직을 잘못 설정했을 .. 2020. 7. 29.
[Spring] 초간단 웹 어플리케이션 구현 **입문 글에서 너무 두서없이 일단 시작해보고 본거 같아서 본 글에서 확실하게 공부한 내용을 정리하고자 한다. 완성된 화면을 보고싶으시면 맨 아래로 가시면 됩니다 1. 요구사항 정리 공부도 할겸 매우 매우 심플한 예제를 들고 배운것을 응용해 보았다. 아래의 이미지는 고객의 비즈니스 요구사항이라고 가정했다. DB는 뭘쓸지 모르기때문에 인터페이스로도 구현한다. 테스트를 위한 데이터베이스로서 h2 데이터베이스를 사용하였다. 2. application.properties & build.gradle 위는 데이터베이스와의 연결 정보를 담고 있는 설정파일이다. 나중에 datasource를 jpa 의 entity manager가 일을 할때 자동으로 설정하는 거 같다. url 은 로컬 ~ 디렉토리에 product.mv... 2020. 7. 28.
[Spring] spring boot 입문하기 spring 이라는 거대한 아이템에 접근하기 위해서 강의를 찾던중 인프런의 김영한님 강의를 듣게 되었다. 스프링부트 입문 강의는 모든 자료와 영상이 무료로 풀려있고 입문 영상으로는 최고라고 생각한다. 아직 안들었다면 꼭 들어보길 추천한다. 강의 들은 내용을 바탕으로 처음 부터 끝까지 혼자 직접 코딩하고 정리해보고 앞으로 어떤 부분을 깊게 공부해야할 지 정해야겠다. 개인적으로 jpa를 깊게 해볼까 생각중이다. 일단 뭘 알기 전에 프로젝트부터 생성해보고 시작하자. 1) 프로젝트 생성하고 살펴보기 설정은 위와 같이 자바11버전과 spring boot 버전 2.3.2 와 빌드 방식은 Gradle Project로 설정한다. 템플릿 엔진은 여러개 있는데 강의에서 타임리프 썼기 때문에 본인도 타임리프를 선택한다. D.. 2020. 7. 27.
[JAVA/PYTHON] 자물쇠와 열쇠(kakao 2020) 파이썬이 역시 간결하긴하다. 그래도 자바공부중이니 자바로 열심히 풀어봤다. 문제를 접근하는 방법에 대해 고민을 많이 했다. 완전탐색으로 해도 될까했는데 대충 계산해본 결과 20*20 자물쇠와 20*20 키를 가지고 있다고 해도 시간초과는 나지 않을거 같았다. 그래서 완전탐색으로 풀기로 한다. 풀기위해서 메소드를 나누는데, 1) 키를 90도씩 돌리는 함수를 작성하기로 한다. 이는 rotate라는 이름으로 작성하였다. 2) 자물쇠 배열을 상하좌우 및 대각선까지 자물쇠 크기만큼 span한 새로운 자물쇠 배열을 초기화한다. 이를 spanLock이라는 이름으로 작성하였다. 3) 키와 자물쇠를 합쳤을 때 참인지 거짓인지 판별하는 check함수를 작성하였다. 4) span 되어있는 자물쇠에 키가 올수있는 모든 경우의.. 2020. 7. 26.