전체 글 134

프로그래머스 : 양옆앞뒤 큰 수 찾기

오늘은 알고리즘 테스트 시험을 봤다. 난이도 상, 중, 하 이렇게 세문제가 나왔으나 중, 하는 쉬웠다. 하지만 난이도가 상인 문제는 어려웠다. 상하좌우의 값을 비교해 가장 큰 값이라면 별을 출력하게 해야 하는 문제였다 처음에는 배열초과가 일어나지 않게 하기 위해 총 세부분으로 나누어 작업했다 1. 두 부분의 값만 비교하면 되는 꼭짓점 2. 세 부분의 값만 비교하면 되는 모서리 3. 상하좌우 모두 비교하여야 하는 안쪽 부분 public class Test_3 { public void Solution(int[][] checkin){ String [][] answer = new String[checkin.length][checkin[0].length]; // 1 꼭짓점 부분 구현 // 1-1. [0, 0] a..

Algorithm 2023.06.22

프로그래머스: 포켓몬

알고리즘 문제를 풀면서 Stream을 이용하여 문제를 너무 풀어보고 싶었다. 그래서 시간이 날 때 틈틈이 Stream에 대해 알아봤다 처음 볼 땐, 무슨말인지도 모르겠고 걱정이 앞섰지만 코드들이 어떤 역할을 하는지 눈에 익기 시작했다. Stream을 사용하여 풀었던 첫번째 문제이다. 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 여러 종류의 포켓몬이 주어진다. 포켓몬의 종류는 중복될 수 있다. 포켓몬은 주어진 포켓몬의 절반만큼 가져갈 수 있다. 이때, 다른 종류의 포켓몬은 몇 마리인가? 가 문제이다. 손쉽게 풀 수 있었던 문제였다. 이번에는 Stream을..

Algorithm 2023.06.21

[Java] Stream

스트림(Stream)은 데이터를 작은 조각으로 나누어 순차적으로 처리하는 방식이다.예를 들어, 유튜브를 생각해보자.우리가 영상을 볼 때, 처음부터 끝까지 파일을 한 번에 받아오는 게 아니라, 작은 단위(조각)로 조금씩 받아오면서 영상이 재생된다.만약 중간에 분 단위로 스킵하면 영상이 잠깐 멈추는(버퍼링) 이유는, 해당 구간의 조각 데이터를 아직 못 받았기 때문이다.이처럼 스트리밍은 전체 데이터를 한꺼번에 가져오지 않아도 실시간으로 처리할 수 있어서, 메모리도 효율적으로 사용할 수 있다. ⚙️ 스트림의 특징 원본 데이터를 변경하지 않는다스트림은 원본 데이터를 건드리지 않고, 복사된 데이터를 기준으로 작업한다.휘발성이다스트림은 한 번 사용하면 다시 사용할 수 없다.(재사용하려면 새 스트림을 만들어야 함)..

Java 2023.06.21

오버로딩(Overloading)과 오버라이딩(Overriding)

🔁 오버로딩 (Overloading)같은 이름의 메서드나 생성자를 매개변수만 다르게 여러 개 정의하는 것같은 이름의 메서드를 여러 개 정의할 수 있다.단, 매개변수의 개수, 타입, 순서 중 하나 이상이 달라야 한다.호출 시 컴파일러가 전달된 인자를 바탕으로 어떤 메서드를 호출할지 판단한다.가독성과 일관성을 높일 수 있어 매우 유용하다//오버로딩 예제 public int add(int a, int b) { return a + b; } public double add(double a, double b) { return a + b; } public int add(int a, int b, int c) { return a + b + c; }같은 ad..

Java 2023.06.09

Python mongoDB Join 사용 코드

mongoDB는 NoSql DB로, Join문을 사용할 수 없다. 하지만 $lookup을 사용하여 MongoDB에서 여러 개의 컬렉션 간 조인을 수행할 수 있다. $lookup은 RDBMS의 조인 기능과 유사한 기능을 제공하는 파이프라인 연산자이다. 코드 작성 예시 import pymongo my_client = pymongo.MongoClient('mongodb://localhost:27017/') my_db = my_client['Orders'] my_collection = my_db['buy_orders'] result = my_collection.aggregate([{ '$lookup' : { 'from': 'sell_orders', 'localField': 'id_transaction', 'fo..

DB 2023.06.09

AWS를 이용한 배포

우선, AWS에 회원가입을 하여야 한다. 회원가입이 완료되었다면 아래와 같은 창이 뜰 것이다. 그림과 같이 1번 클릭 후 2번(보안 자격 증명)을 클릭한다. 이후 아래와 같은 창이 뜰 것이다. 스크롤을 내리다 보면 엑세스 키가 보일 것이다. 이미 엑세스 키를 생성한 뒤라 조금 다르겠지만 액세스 키 만들기를 눌러, 액세스 키를 생성한다 생성된 엑세스 키 ID와 보안 엑세스 키를 따로 복사하여 저장해둔다. 이후 배포를 원하는 python으로 가서 터미널을 킨다. 터미널 준비하기 - 아래의 순서대로 입력 mkdir deploy cp app.py deploy/application.py cp -r templates deploy/templates pip freeze > deploy/requirements.txt c..

웹 개발 종합 2023.06.05

MongoDB 이용하기

파이썬을 기준으로 작성된 글이다. 우선 MongoDB에 DB를 생성했다면, 아래와 같은 창이 뜰 것이다. 1. 빨간 원으로 표시한 Connect를 누른다. 누른다면 아래와 같은 창이 뜰 것이다. 2. 맨 위에있는 Connect to your application에 있는 Drivers를 누른다. 3. 위의 붉은 동그라미에 Driver에서 사용할 언어(java, python 등)를 선택하고 Version 에서는 언어의 버전을 선택한다. 4. 아래의 붉은 동그라미의 코드를 복사한다. from pymongo import MongoClient client = MongoClient('application code 입력') db = client.dbsparta 5. 이후 위 코드의 application code 입력..

카테고리 없음 2023.06.02

모던 자바 알아보기(람다, 스트림, Optional)

모던 자바란 Java 8 이상의 버전을 가리키며, 새로운 기능들을 포함한 자바의 현대적인 개발 스타일과 패러다임을 의미한다. 모던 자바의 개선 사항들은 코드의 가독성, 유지보수성, 생산성, 성능 등을 향상시키고, 개발자들이 더 효율적으로 자바 애플리케이션을 개발할 수 있게 한다. 이전 버전의 자바와 비교했을 때, 다음과 같은 주요 개선 사항들이 있다. 1. 람다 표현식 (Lambda Expressions): 함수형 프로그래밍을 위한 기능으로, 익명 함수를 간결하게 표현할 수 있다. 코드의 간결성과 가독성을 향상시킨다. 2. 스트림 API (Stream API): 컬렉션 데이터를 처리하기 위한 선언적인 방식을 제공한다. 병렬 처리와 메서드 체이닝 등을 통해 데이터 처리를 효율적으로 수행할 수 있다. 메서드..

Java 2023.05.30

쓰레드의 상태

쓰레드의 상태 상태 Enum 설명 객체생성 NEW 쓰레드 객체 생성(new()). start() 메서드 호출 전 상태 실행대기 RUNNABLE 실행 가능한 상태 실행 Running 실행중인 상태(start()메서드가 호출된 상태) 일시정지 WAITING 다른 쓰레드가 통지(notify)할 때까지 기다리는 상태 일시정지 TIMED_WAITING 주어진 시간 동안 기다리는 상태 일시정지 BLOCKED 사용하고자 하는 객체의 Lock이 풀릴 때까지 기다리는 상태 종료 TERMINATED 쓰레드의 작업이 종료된 상태

Java 2023.05.30

동기화(synchronized)

멀티 쓰레드의 경우, 자원을 공유하여 작업하기에 장애나 버그가 발생할 수 있다. 이러한 일을 방지하기 위한 방법이 동기화(synchronized)이다. synchronized(동기화)란? 한 쓰레드가 진행중인 작업을 다른 쓰레드가 침범하지 못하도록 막는 것이다. 동기화를 하려면 다른 쓰레드의 침범을 막아야하는 코드들을 '임계영역'으로 설정하여야 한다. 임계영역 : Lock을 가진 단 하나의 쓰레드만 출입이 가능한 영역 동기화 방법 1. 실행할 메서드 앞에 synchronized를 붙여 임계영역을 지정한다. public synchronized void asyncSum() { //코드 구현 .... } 2. 실행할 코드 묶음 앞에 synchronized를 붙여 임계영역을 지정한다. synchronized(해..

Java 2023.05.30