반응형

전체 글 111

Queue

public void QueueCreate() { Queue queue = new LinkedList(); //int형 queue 선언, linkedlist 이용 Queue queue2 = new LinkedList(); //String형 queue 선언, linkedlist 이용 } Queue란? Queue의 사전적 의미는 무엇을 기다리는 사람, 차량 등의 줄 혹은 줄을 서서 기다리는 것을 의미하는데 이처럼 줄을 지어 순서대로 처리되는 것이 큐라는 자료구조입니다. Queue는 데이터를 일시적으로 쌓아두기 위한 자료구조로 스택과는 다르게 FIFO(First In First Out)의 형태를 가집니다. FIFO 형태는 뜻 그대로 먼저 들어온 데이터가 가장 먼저 나가는 구조를 말합니다. Queue의 특징 먼..

자료구조 2023.05.24

NUXT Error: Cannot find module 'node:fs'

젠킨스를 통한 자동 배포를 진행하던중 다음과 같은 오류가 발생하였습니다. (해당 오류는 2023.02.06_월요일부터 발생하였습니다) NUXT Error: Cannot find module 'node:fs' 구글링을 해본 결과 많은 케이스의 수정 방법이 있었지만, 모두 저의 케이스와는 맞지 않았습니다 젠킨스의 에러로그를 천천히 살펴봤을 때 다음과 같은 로그가 있었습니다 npm WARN notsup Unsupported engine for @nuxt/babel-preset-app@2.16.3: wanted: {"node":"^14.18.0 || ^16.10.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"} (current: {"node":"14.17.6","npm":"6.14.15"}) n..

ETC 2023.05.09

BFS, DFS

DFS (Depth First Search) DFS는 깊이 우선 탐색 알고리즘으로, 특정한 경로를 따라 최대한 깊숙히 들어가면서 노드를 탐색하는 알고리즘입니다. 스택 자료구조 또는 재귀 함수를 통해 구현할 수 있습니다. DFS 알고리즘은 시작 노드에서부터 한 방향으로 갈 수 있는 경로를 모두 탐색하고, 갈 수 있는 경로가 더 이상 없다면 다시 바로 이전 노드로 돌아와 다른 방향으로 다시 탐색합니다. 이러한 과정을 모든 노드를 방문할 때까지 반복합니다. DFS 알고리즘의 시간 복잡도는 최악의 경우 모든 노드를 방문해야 하므로 O(V + E) 입니다. BFS (Breadth First Search) BFS는 너비 우선 탐색 알고리즘으로, 특정한 경로를 따라 이동할 때 너비를 우선으로 탐색하는 알고리즘입니다...

알고리즘 2023.05.03

[프로그래머스] JadenCase 문자열 만들기

https://school.programmers.co.kr/learn/courses/30/lessons/12951 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 각각 단어에서 첫 문자만을 대문자로 변경하고 나머지 모든 문자를 소문자로 변환하는 문자입니다. 해당 문자열을 Character로 변환하여서 문자를 받았고, 공백열 뒤에 오는 문자는 Upper Case로 변환하였고 그렇지 않은 문자들은 Lower Case로 변환하였습니다. StringBuilder sb = new StringBuilder(); boolean capitalize = true; for ..

CodingTest 2023.05.01

[프로그래머스] 이진 변환 반복하기

https://school.programmers.co.kr/learn/courses/30/lessons/70129 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 특정 문자열(2진수로 이루러진)이 주어지면, 1. 0을 제거한 후 2. 제거된 문자의 length를 확인 3. length 값을 다시 2진수로 변환 해당 과장을 반복하여, 반복된 횟수와 제거된 0의 갯수를 return 하는 문제입니다. public static int[] solution(String s) { int n = s.length() - s.replace("0", "").length(); ..

CodingTest 2023.04.28

[프로그래머스] 최솟값 만들기

https://school.programmers.co.kr/learn/courses/30/lessons/12941 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 두 개의 배열이 주어지고 두 배열을 곱하였을 때 나올 수 있는 최솟값을 구하는 문제입니다. 최솟값은 A의 가장 큰 값과 B의 가장 작은 값이 곱해졌을 때 구할 수 있습니다. (A의 가장 작은 값과 B의 가장 큰 값도 마찬가지로 매칭되어야 합니다.) Arrays.sort(A); Arrays.sort(B); 따라서 우선 두 개의 배열을 초기화해주었습니다. 그다음은 이제 가장 큰 값과 가장 작은 값이 ..

CodingTest 2023.04.28

Decoupled Architecture - 백엔드와 프론트엔드의 분리

개발을 하다보면 프론트엔드와 백엔드가 구분되어있는 것을 확인할 수 있다. 이를 Decoupled Architecture이라고한다. Decoupled Architecture를 알아보기 전에 전통적인 웹사이트 아키텍처를 이해해야 한다. 전통적인 아키텍처 - Monolithic Architecture Monolithic Architecture의 구조는 아래와 같다. Monolithic Architecture - 전통적인 웹 사이트 아키텍처 이 구조는 많은 기능이 동일한 코드베이스 내에 있다. 이 구조에서는 동일한 코드베이스 내에 있는 기능을 통해서 작업을 처리하게 된다. 코드베이스란? 특정 소프트웨어 시스템, 응용 소프트웨어, 소프트웨어 구성 요소를 빌드하기 위해 사용되는 소스 코드의 모임 따라서 이런 단일 ..

ETC 2023.04.11

함수형 인터페이스

1. 함수형 인터페이스란? 함수형 인터페이스는 하나의 추상 메서드만을 가지고 있는 인터페이스입니다. 즉, 함수형 인터페이스를 구현하는 클래스는 하나의 메서드만을 반드시 구현해야 합니다. 예를 들어, 아래와 같은 함수형 인터페이스를 정의할 수 있습니다. @FunctionalInterface public interface Calculator { int calculate(int x, int y); } 위 인터페이스는 calculate라는 하나의 메서드만을 가지고 있습니다. 이 인터페이스를 구현하는 클래스는 calculate 메서드를 반드시 구현해야 합니다. 2. 함수형 인터페이스의 활용 Java 함수형 인터페이스는 함수형 프로그래밍을 지원하기 위해 도입되었습니다. 함수형 프로그래밍은 상태를 변경하는 대신 입력..

java 2023.04.06

Java Stream

Java Stream은 컬렉션, 배열 등의 데이터를 다룰 때 사용되는 API로서, 람다식과 함수형 인터페이스를 이용하여 데이터 처리를 더욱 간결하고 효율적으로 할 수 있도록 지원합니다. Stream 개요 Stream은 크게 중간 연산과 최종 연산으로 구성됩니다. 중간 연산은 Stream을 반환하며, 최종 연산은 다른 타입의 값을 반환합니다. 이때, 최종 연산이 수행되기 전까지는 중간 연산이 실행되지 않습니다. Stream API에서 제공하는 대표적인 중간 연산과 최종 연산은 다음과 같습니다. 중간 연산 filter(Predicate predicate): 조건에 맞는 요소만을 Stream에 남깁니다. map(Function mapper): 각 요소를 매핑하여 Stream을 반환합니다. flatMap(Fun..

java 2023.03.28

블로킹(Blocking)? 논블로킹(Non-Blocking)?

블로킹(Blocking) 블로킹이란, 어떤 작업이 수행될 때 해당 작업이 완료될 때까지 프로그램이 다른 일을 할 수 없는 상태를 말합니다. 즉, 입출력 작업을 수행할 때 결과가 반환될 때까지 대기하는 것입니다. 이러한 블로킹 모델은 I/O 작업이 끝날 때까지 스레드를 중단시켜 대기하도록 만들어져 있으며, 이는 시스템 자원의 비효율성을 야기할 수 있습니다. 아래는 블로킹 모델로 I/O 작업을 수행하는 Java 코드입니다. import java.io.*; public class BlockingIOExample { public static void main(String[] args) { try { FileInputStream fileInputStream = new FileInputStream("input.tx..

java 2023.03.07

WEB SOCKET

ws프로토콜을 이용하는 양방향 통신방식이다. ws프로토콜은 한번 연결되면 연결을 끊지 않고 계속 유지" 한 상태로 "클라이언트와 서버가 서로 데이터를 주고 받는다 따라서 서버 하나에 여러 클라이언트가 붙어서 지속적으로 데이터를 주고 받아야하는 서비스에 유용하다. HTTP 통신의 경우, 클라이언트가 요청을 하고 서버가 응답을 하면 바로 연결이 끊어진다. ws 모듈 ws 모듈이란? : 간단한 웹소켓 통신을 구현하기 위한 모듈이다. 참고: socket.io라는 모듈을 사용하면, WebSocket이 지원되지 않는 브라우저에서도 여러가지 방식을 동원해 비슷하게 구현해준다.(+편의기능 제공) socket.io에 대한 글 참고: [node.js] socket.io 웹 소켓 모듈 기본 사용 방법 ws사용 방법 기본 구..

ETC 2022.11.23

SOCKET 통신

소켓? SOCKET(소켓)? 프로세스가 네트워크를 통해서 데이터를 주고받으려면 반드시 열어야 하는 창구 같은 것이다. PORT(포트)를 통해서 통신을 진행하려면 기본적으로 소켓이 필요하다. 소켓의 경우 통신을 위해서 반드시 필요한 존재이며, 한 포트의 여러개의 소켓이 존재할 수 있다. 이는 하나의 앱에서 여러개의 통신이 가능한 이유와 같다 ex) 채팅 포트와 소켓의 관계를 간단히 정리하자면 포트, 소켓 프로세스가 고유하게 받는 것이 포트 그 포트내에서 통신을 위해서 사용되는 것이 소켓 소켓의 경우 포트가 여러개를 만들 수 있다. 같은 protocol, 같은 ip, 같은 port를 가진 데이터가 소켓을 찾아가는 방법? Descriptor(디스크립터) - 소켓 고유 번호 (서비스 pid와 유사) 여기까지 소..

ETC 2022.11.22

[백준][11399] ATM

https://curiouskidd.tistory.com/15 main calss 규정 https://www.acmicpc.net/problem/11399 최소 시간을 구하는 문제입니다. 사람마다 일을 처리하는데 걸리는 시간이 다를 것이고, 처리 순서에 따라서 필요한 시간의 합은 달라질 것입니다. int n = 5; int[] arrayInt = {3, 1, 4, 3, 2}; Arrays.sort(arrayInt); // array의 순서 정렬 int returnInt = 0; int lengthInt = n; for (int value : arrayInt) { returnInt += (value * lengthInt); lengthInt -= 1; } System.out.println(returnInt..

CodingTest 2022.10.05

[백준] 코드 제출 필수 내용

www.acmicpc.net 해당 사이트에서 코딩테스트를 풀고, 코드를 제출 할 경우 필수로 적어야 하는 코드가 있다. 우선 입력값을 받아와야 하기 때문에 util 라이브러리를 import 해줘야한다 class의 이름은 Main 이어야 하며, method는 main(String[] args) 로 정의 되어야한다 import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String text = sc.next(); // text int n = sc.nextInt(); // number // 여러개의 입력일 경우 for (int i = 0; i < X; i+..

CodingTest 2022.09.29

[백준][2839] 설탕 배달

https://curiouskidd.tistory.com/15 main calss 규정 https://www.acmicpc.net/problem/2839 설탕을 3kg, 5kg 단위로 가장 적게 가져갈 수 있는 수량을 계산하는 문제입니다 정확한 배분이 가능할 경우 계산값을 출력하고, 배분이 불가능 할 경우 -1을 출력해야 합니다. int n = 10; // 설탕의 무게 int five = n / 5; // 5kg 설탕 갯수 int three = (n % 5) / 3; // 3kg 설탕 갯수 int other = (n % 5) % 3; // 나머지 유무 if (n == 4 || n == 7) { // 문제 규정상 설탕이 4kg or 7kg 일경우 정확한 배분이 불가능 System.out.println(-1..

CodingTest 2022.09.29
반응형