본문 바로가기

자바144

[스프링 부트 핵심 가이드] Chapter 1. 스프링 부트란? 스프링 부트 핵심 가이드 Chapter 1. 스프링 부트란? 1.1 스프링 프레임워크 📌스프링 프레임워크 (Spring Framework)는 자바 (Java) 기반의 엔터프라이즈급 어플리케이션 프레임워크다 자바로 어플리케이션 개발을 할 때 필요한 기능들을 제공하고, 쉽게 사용할 수 있도록 도와주는 도구다 엔터프라이즈급 개발이란, 대규모 데이터를 처리하는 환경에서 개발을 하는 것이다 (예. 카카오 같은 대기업에서 데이터를 처리할 때) ✔️ 제어 역전(IoC : Inversion of Control) 일반적으로 자바 개발을 할 때에는 사용하려는 객체를 선언하고 해당 객체의 의존성을 생성한 후 객체에서 제공하는 기능을 사용한다 @RestController public class NoDIController{ /.. 2023. 8. 27.
스프링 Initializer 스프링 Initializer 스프링 프로젝트를 실행할 때에, 기본적인 틀을 Spring Initializr 웹사이트, 또는 IDE에서 만들 수 있다 https://start.spring.io/ 프로젝트 Maven Project / Gradle Project 스프링의 빌드 관리 도구다 빌드 관리 도구는, 라이브러리를 관리해주고, 자바로 코딩한 프로젝트를 빌드 및 실행을 도와주는 주체이다 그 중에 Maven과 Gradle, 최신 빌드 관리 도구다 Gradle이 더 최신 것이다 (새로 만드는 프로젝트는 주로 Gradle로 만들다) Language 프로그래밍 언어를 선택하는 것이다 익숙한 언어를 선택하면 된다! Java, Kotlin, Groovy Kotlin과 Groovy는 Java에서 파생된 언어다 Spri.. 2023. 8. 24.
20230823 [Java] 문제풀이 20230823 [Java] 문제풀이 [프로그래머스] 택배상자 스택에 상자를 넣으면서 order에 있는 숫자와 비교했다 스택에 있는 숫자의 제일 위에 있는 숫자가 현재 order와 같으면, while문을 통해서 하나씩 꺼내면서, 다음 순서로 넘어가고, answer에다 1을 누적시켰다 import java.util.*; class Solution { public int solution(int[] order) { int answer = 0; Stack reserve = new Stack(); int box = 1; int idx = 0; while (box 2023. 8. 23.
스프링 MVC 스프링 MVC Lombok 매번 기계적, 같은 코드를 작성하는 것을, 자동화해주는 라이브러리다 @Setter, @Getter : Java Bean 규약에 있는 setter, getter를 자동으로 생성해준다 @ToString : Object에 기본 구현되 ToString 대신 객체의 데이터를 보여주는 ToString을 자동으로 생성해준다 객체가 담고 있는 값들을 쉽게 출력할 수 있도록 도와준다 @NoArgsConstructor, @AllArgsConstructor, @RequiredArgsConstructor : 객체 생성자를 자동으로 생성 @RequiredArgsConstructor : final 타입이 있으면, 생성자가 필수적으로 있어야 한다 @Data : Getter, Setter, ToString.. 2023. 8. 23.
20230822 [Java] 문제풀이 20230822 [Java] 문제풀이 [프로그래머스] 혼자 놀기의 달인 상자에 카드를 넣고 무작위로 섞어 일렬로 나열한다 그리고 상자를 1번부터 순차적으로 증가하는 번호를 붙인다 상자 번호에서, 카드 번호를 보고, 카드 번호에 대한 상자 번호를 여는 것이다 인덱스를 상자 번호라고 생각하면 카드 번호에 1을 항상 빼야한다 import java.util.*; class Solution { public int solution(int[] cards) { ArrayList group = new ArrayList(); int[] visited = new int[cards.length]; for (int i = 0; i < cards.length; i ++) { int tempCount = 0; if (visited.. 2023. 8. 22.
20230821 [Java] 문제풀이 20230821 [Java] 문제풀이 [프로그래머스] 두 큐 합 같게 만들기 이 문제는 두 큐가 주어지고, 서로의 원소를 주고 받으면서, 서로의 원소들의 값이 같을 수 있도록 만드는 것이다 제일 주의해야할 점은, 두 개의 큐가 있다는 것이다 서로 원소를 주고 받을 때에, 제일 먼저 큐에 들어온 원소를, 다른 큐에게 전달할 수 있다는 점이다 각 두 큐의 값을 구하고, 그 값에 따라, 값이 더 큰 큐에서, 더 작은 큐에게 원소를 주는 방식으로 로직을 짜면 된다 while문이 무한 루프에 빠질 수 있는 상황이 있어서, answer가 나올 수 있는 최대의 수를 정해준다 (answer > queue1.length * 4) 두 개의 큐의 합이 같으면, 바로 answer를 출력해준다 answer는 원소의 움직임의 개.. 2023. 8. 21.
20230819 [Java] 문제풀이 20230819 [Java] 문제풀이 [프로그래머스] 할인 행사 HashMap에 원하는 제품과, 그 수량을 넣는다 그리고 10일 단위로, Discount를 순회하면서, HashMap에 있는 제품과 동일한 제품이 있으면 하나씩 빼준다 즉 10일 단위로 갱신이 될 때마다 새로운 HashMap을 가지고 와야 한다 그래서 copy 라는 메서드를 따로 만들었다 그렇게 10개를 모두 살 수 있으면 answer에다가 1을 누적시키면 된다 제발 문제를 잘 읽자!!!!!!! import java.util.*; class Solution { public static HashMap copy(HashMap list) { HashMap newList = new HashMap(); for (String key : list.key.. 2023. 8. 19.
20230817 [Java] 문제풀이 20230817 [Java] 문제풀이 [프로그래머스] 귤 고르기 해쉬맵으로 문제를 풀었다 해쉬맵에 귤 사이즈를 key, 사이즈에 대한 개수를 value로 넣었다 value기준으로 최소한의 종류를 구했다 (value를 배열에 넣고 내림차순으로 정렬했다) import java.util.*; class Solution { public int solution(int k, int[] tangerine) { int answer = 0; HashMap map = new HashMap(); ArrayList array = new ArrayList(); for (int num : tangerine) { if (map.containsKey(num)) { map.put(num, map.get(num) + 1); } else.. 2023. 8. 17.
20230816 [Java] 문제풀이 20230816 [Java] 문제풀이 [프로그래머스] 디펜스 게임 첫 풀이는 71.9 로, 시간 초과 때문에 실패를 했다 2 중 for문으로, slicing을 하고, 정렬을 하면서 앞의 숫자 위주로 더하면서 정답을 구했다 import java.util.*; class Solution { public int solution(int n, int k, int[] enemy) { int answer = 0; if (k == enemy.length) return k; if (k > enemy.length) return enemy.length; for (int i = enemy.length; i >= k; i--) { int[] newEnemy = new int[i]; int tempAdd = 0; int temp.. 2023. 8. 16.