본문 바로가기

취준생341

20230828 [Java] 문제풀이 20230828 [Java] 문제풀이 [프로그래머스] 전력망을 둘로 나누기 1부터 n까지의 전력망이 있고, 모두 연결이 되어 있다 하나의 연결 선을 끊고 둘로 나누면서, 두 개의 연결되어 있는 노드 그룹의 차이 중, 제일 적은 차이를 출력한다 DFS를 통해서, Union Find를 사용했고, 하나의 그룹에 몇 개의 노드가 있는지 찾았다 연결선 하나만 자르게 되면, 어차피 2개의 그룹으로 나뉜다 (n - nodeCount) - nodeCount 를 통해 두 그룹의 노두 개수의 차이를 구했다 import java.util.*; class Solution { public int dfs(ArrayList wr, int[] visited) { Stack stack = new Stack(); int count = .. 2023. 8. 28.
스프링 구동시키기 스프링 구동시키기 build.gradle 빌드 관리 도구로서, maven 또는 gradle을 선택할 수 있다 (gradle 더 최신) build.gradle은 빌드 구성 스크립트다 gradle에서 어떻게 빌드를 할지, 미리 써 놓은 스크립트다 build.gradle은 전에 선택한 의존성 (Dependency)와 같은 스프링 부트 프로젝트의 빌드와 관련된 설정 정보를 담고 있다 IDE는 이것을 읽어서, 스프링 부트 프로젝트를 설정한다 WeatherApplication에 들어간다 @SpringBootApplication public class WeatherApplication { public static void main(String[] args) { SpringApplication.run(WeatherAp.. 2023. 8. 28.
[스프링 부트 핵심 가이드] Chapter 3. 개발 환경 구성 스프링 부트 핵심 가이드 [스프링 부트 핵심 가이드] Chapter 3. 개발 환경 구성 자바 JDK 설치 (Java Development Kit) 자바 개발을 위해 설치가 필요한 키트다 OpenJDK 를 검색해서 JDK를 설치한다 https://jdk.java.net/java-se-ri/11-MR2 - Java 11 버전이지만, 왼쪽 창에 다른 버전들도 다운로드 받을 수 있다 환경 설정 윈도우 [제어판] - [시스템 및 보안] - [시스템]에 들어간다 [고급 시스템 설정]을 들어간다 [고급 시스템 설정]에서 [환경 변수] 버튼을 클릭한다 [시스템 변수]에서 [새로 만들기] 버튼을 클릭한다 JDK가 설치된 위치를 찾아 bin 경로를 넣어 준다 개인적으로 bin 경로를 넣지 않아도, 작동하고 있다 인텔리제.. 2023. 8. 28.
[스프링 부트 핵심 가이드] Chapter 2. 개발에 앞서 알면 좋은 기초 지식 스프링 부트 핵심 가이드 [스프링 부트 핵심 가이드] Chapter 2. 개발에 앞서 알면 좋은 기초 지식 2.1 서버 간 통신 어플리케이션을 업데이트 또는 유지보수 할 때에, 블로그, 카페, 메일 등의 기능을 통합을 하면, 어플리케이션 자체를 닫아야 한다 즉 업데이트 또는 유지보수 할 때에는 유저들이 어플리케이션 자체를 못 사용한다는 것 MSA, Microservice Architecture를 통해 위의 상황을 해결했다 블로그, 카페, 메일 같은 기능들을 기능별로 따로 프로젝트를 만들어서 개발을 하는 것이다 그렇게 되면, 블로그 기능을 업데이트 또는 유지보수 할 때에 다른 기능들은 사용할 수 있게 된다 MSA를 사용하여 어플리케이션을 개발할 때에는 서버 간 통신을 해야 한다 그렇게 나온 프로토콜이 HT.. 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.