본문 바로가기

java29

[Data Structure] Stack(스택) 자료구조란? -Java Stack 자료구조란 무엇인가? - Java 1. 스택이란? - 'Stack'은 한쪽 방향에서만 자료를 넣고 빼는 형태의 자료구조이다 - LIFO(Last In First Out) - 선입후출 의 특징을 갖고 있으며, 제일 먼저 들어간 데이터는 제일 마지막에 꺼낼 수 있다는 의미를 가진다. - 이해하기 쉬운 예시로 -> '프링글스' 과자를 상상하면 쉬울 것이다. 제일 먼저 들어간 과자는 제일 마지막에 먹을 수 있게 되는 방식인 것이다. - Stack이 많이 사용되는 곳은 - DFS(깊이 우선 탐색)이다. 2. Java Stack 라이브러리 Mehtods push(object) : object를 Stack 에 삽입한다. pop() : stack에 있는 최상단 object를 삭제 하고 반환한다. peek().. 2023. 1. 16.
[Java] Stack 2개로 Queue 처럼 사용하기 java - Stack 2개로 Queue 구현하기 - 사실 Stack 2개로 Queue 처럼 구현할 일이 있는지는 잘 모르겠다... (그냥 Queue를 사용하면 되는 부분) 하지만 상황에 따라 Stack을 Queue 방식으로 구현해야 할 수도 있고, 필자의 기준에서는 신박한 내용이었기에 구현과 포스팅을 해보려 한다. - 자료구조에서 Stack, Queue 라는 개념을 한번쯤은 들어봤을 것이다! 간단하게 얘기하자면 Stack : 선입후출(FILO), 처음에 넣은 요소가 제일 마지막에 나오는 것이고 Queue : 선입선출(FIFO), 처음에 넣은 요소가 처음으로 나오는 것이다. 방법 목표 : 숫자 1,2,3,4 를 차례로 추가하고 1,2,3,4 순서대로 출력하는 것. 1. Stack이 A,B 2개가 있다고 .. 2023. 1. 13.
[Java] DTO <-> Entity 변환(ModelMapper & method & ModelMapper List 바인딩) * 정답이 아닐수 있으며 제가 사용하는 방법들에 대해 설명할 예정입니다! DTO Entity 변환 Entity 와 DTO는 분리하여 사용하는것이 좋기 때문에 분리해서 사용하다 보면 각 객체간에 어떻게 변환을 하는지에 대해서 의문점이 생길것이다. 구글링을 조금만 하더라도 여러가지 방법들이 보이기 때문이다..! 1. DTO 내부 메서드로 값을 전달하는 방법. 2. Model Mapper 라이브러리를 사용하는 방법. 3. JPA사용시 Repository에서 직접 조회하는 방법 이 글에서는 3번을 제외하고 설명 해볼 생각이다. - DTO, Entity 내부 편의 메서드 작성법 - Model Mapper 단건 바인딩. - 다건(List) 바인딩. (Model Mapper List 바인딩.) Entity DTO 분.. 2022. 12. 22.
[Java] DAO, DTO, VO, Entity 란? 웹 개발을 하다 보면 DAO, DTO, VO, Entity라는 단어들을 많이 접하게 된다. 해당 개념을 잘 잡아놔야 협업시에 문제가 없을 것 같다. DAO - DAO란 Data Access Object 의 약자이며 이름 그대로 DB의 data에 접근하는 객체 이다. 비즈니스 로직과, DB Access 로직을 분리하기 위해 사용된다. - Java Spring을 기준으로 DAO는 여러 가지의 모양새를 취하고 있는걸 알 수 있을것이다. 여러가지 모양새라 함은 DAO에 DB Connection이 설정되어 있는 경우, 아닌 경우로 나눌 수 있다. - 많이 사용하는 MyBatis의 경우 DB Connection 정보를 root-context.xml이라는 파일에 정의한다. - JPA 같은 경우는 application.. 2022. 12. 22.
[springBoot] spring Boot 이메일 발송(Google SMTP) Spring Boot 이메일 발송하기! 웹 서비스를 기획하고 구성하다보면 이메일 관련한 작업을 해야 할 경우가 발생한다. 예를들면 우리가 많이 접하는 '회원가입시 이메일인증', '각종 알림을 위한 이메일 전송' 등 이 존재한다. 다양한 라이브러리가 이미 존재하기 때문에 우리는 선택을 해야한다. 1. 라이브러리를 사용해서 이메일을 발송할 것 인지? 2. 라이브러리를 사용하지 않고 코드만으로 작성 할 것인지! 이 글에서는 라이브러리를 사용하여 구글이메일 발송을 해볼 것이다. JavaMailSender 를 사용 할 것이며 2가지 방법을 소개할 예정이다. * 2022.05.30일 부터 Google 약관이 변경되어 2단계 인증 (앱 비밀번호 사용)을 해야 사용가능. -현재 개발 환경에서 이메일 발송 로직 1. F.. 2022. 12. 14.
[프로그래머스] 나머지 한점(알고리즘) - Java 문제 https://school.programmers.co.kr/learn/courses/18/lessons/1878?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 분석 및 이해 1. 직사각형을 만들어야 한다. 2. 직사각형에 필요한 점4개중 3개의 좌표값이 주어진다. 3. 나머지 한점의 좌표를 Return 한다. (좌표는 [x축, y축] 순서로 Return 해야 한다.) - 해당 문제는 코딩의 능력 보다는 이해하는 것이 가장 중요하다고 느꼈다. 좌표 3개가 주어지기 때문에 그 점을 활용 하면 된다. 소거법을 사용하여 해결 .. 2022. 12. 12.
[Java] 1차원 배열 & 2차원 배열 이 글에서는 Java의 1,2차원 배열에 대해서 알아보도록 하겠습니다!! - 1차원 배열의 선언, 초기화, 출력 방법. - 2차원 배열의 선언, 초기화, 출력 방법. 1차원 배열이란? Java뿐 아니라 모든 언어에서 1차원 배열이 존재하며 많은 분야에서 사용합니다. 1차원 배열은 같은 자료형의 묶음이라고 이해하면 좀더 쉽게 이해할 수 있을것입니다! 1차원 배열의 선언및 활용은 아래와 같이 할 수있습니다. 1. 배열을 선언하는 방법 int[] array; int []array; int array[]; - 언 뜻 보면 같은것 같지만 해당 변수가 배열이라는 것을 알려주는 '[]'의 위치가 다르다는 것을 확인 할 수 있다. - 값을 모르고 초기화를 하지 않을 경우에 사용한다. 2. 배열을 초기화 하는 방법 //.. 2022. 12. 12.
[프로그래머스] 최대공약수와 최대공배수(Lv1) - Java 문제 https://school.programmers.co.kr/learn/courses/30/lessons/12940 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 분석 1. 두 수 n,m 을 입력 받는다. 2. 두수의 최대 공약수, 최소 공배수를 구한다. 3. 배열의 [0] 인덱스에는 최대 공약수, [1]인덱스에는 최소 공배수를 넣어서 Return. 문제 자체는 최대공약수, 최소공배수를 구하는 방법만 알면 구할 수 있다. 만약 구하는 방법을 모른다거나, 코드로 구현하는 법을 모른다면 아래의 링크에서 개념을 확인하자! https://lucas-ow.. 2022. 12. 11.
[Algorithm]최대공약수 & 최소공배수 - Java [알고리즘] 최대공약수 & 최소공배수 - Java 로 구현하기 많은 사람들이 코딩테스트 문제를 풀다보면 접하게 되는 최대공약수 & 최소공배수 구하기 이다. 학생 시절에 배웠던것이라 기억이 나는 사람도 나지 않는 사람도 있을것이다. 또한 알고 있더라도 코드로는 접근하기 어려울수 있기 때문에 한번은 공부해두면 좋을것 같다. 최대 공약수를 코드로 구현하는 방법은 2가지가 있다! (변형해서 사용가능) - 반복문 사용(for ,while) - 재귀함수 사용 최소 공배수를 코드로 구현하는 방법은 두 수 a,b 가 존재할때 a,b의 최대 공약수를 구한후 공식 : a * b / 최대공약수 해당 공식으로 구할 수 있다. (본 글에서는 예제를 위해 메서드로 구현) 유클리드 호제법 유클리드 호제법이란? 2개 수의 최대 공약.. 2022. 12. 11.