분류 전체보기

DFS(Depth First Search) VS BFS(Breadth First Search) 탐색 알고리즘이란? 그래프의 모든 정점들을 특정한 순서에 따라 방문하는 알고리즘 각 장점이 서로 연결되어 있는지, 주어진 시간 내에 탐색을 통해 확인하는 알고리즘이다. 그래프란? 그래프는 정점과 간선으로 구성된, 한정된 자료구조를 의미한다. 각각의 지점을 정점이라고 하고, 정점과 정점의 연결을 간선이라고 한다. DFS(Depth First Search) - 깊이 우선 탐색 가장 직관적이고 구현하기 쉬운 탐색 방법 루트 노드(혹은 다른 임의의 노드)에서 시작해서 다음 분기로 넘어가기 전에 해당 분기를 완벽하게 탐색하는 방법 현재 정점과 연결된 정점들을 하나씩 갈 수 있는지 검사하고, 특정 정점으로 갈 수 있다면 ..
1부터 100까지 더하는 효율적인 방법 찾기 서론 간단하게 1 ~ 100까지 더해 결과를 보여주는 코드를 작성해보려고 한다. for문을 맨 처음 배우게 되면 하게 되는 코드이지만, 좀 더 효율적으로 할 수 있는 방법을 같이 설명하고자 한다. 기본적인 방법 int sum = 0; for (int i = 1; i x+y);효율적인 방법 - 가우스 조금만 생각해보자. 예를들어 1 ~ 10까지 있다고 해보자. 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 1 + 10 = 11 2 + 9 = 11 .... 5 + 6 = 11 즉, 앞에서 순차적으로, 뒤에서 순차적으로 두 값을 더하게 되면 같은 값이 나오게 되는걸 확인할 수 있다. 이에 맞춰 코드를 작성해보면 아래와 같이 나오게 된다. int sum = 0..
· 회고
0년차 개발자의 2020년 회고 😂 벌써 2020년이 끝난게 믿기지가 않네요 ㅎㅎ 사실 빠르게 흘러간 만큼 개발자로써의 1년은 엄청난 활동을 했다고 생각하는데요. 제가 2020년에 했던 활동들을 회고해 보는 시간을 가져볼까 합니다! 우아한 테크코스 2월 4일부터 11월 27일 까지 약 10개월 간 우아한형제들에서 진행한 우아한테크코스 2기에 들어가게 되었습니다. 2019년에는 국비학원에서 3개월동안 Spring을 통한 간단한 웹 애플리케이션을 만드는 작업을 배웠는데, 10개월이라는 기간동안은 웹 애플리케이션을 제작하는 능력 뿐만 아니라 협업, 실제 현업의 일하는 방식 등 많은 걸 배울 수 있는 시간이였습니다. 10개월동안의 생활을 간단한 말로 정리할수는 없지만 각 레벨마다의 글쓰기를 통해 매번 회고같은 ..
· Backend/Java
Overloading(오버로딩) VS Overriding(오버라이딩) 서론 Java 개발자로 면접 볼 시 문제로 많이 나오는 개념으로써, 자주 사용하지만 이름과 개념에 대해 정확한 정리가 없어 이야기 하기가 힘들때가 있어서 이번 기회에 정리를 해보려고 합니다. 이 두개는 다형성을 지원하기 위해 나왔습니다. Overloading(오버로딩) 함수 오버로드(영어: Function overloading)는 다양한 에이다(Ada), C#, C++, 자바(Java) 등의 다양한 프로그래밍 언어에서 사용되는 함수의 특징으로, 같은 함수 이름을 가지고 있으나 매개변수, 리턴타입 등의 특징은 다른 여러개의 서브프로그램 생성을 가능하게 한다. (C언어는 지원하지 않는다) - 위키 백과 간단한 정리 같은 이름의 메소드를 여..
Permutation Algorithm(순열 알고리즘) & Combination Algorithm(조합 알고리즘) 전체적인 코드는 Java코드로 작성합니다. 순열 알고리즘이란? 수학에서 순열(Permutation) 또는 치환은 순서가 부여된 임의의 집합을 다른 순서로 뒤섞는 연산이다. 즉, 순열은 정의역과 공역이 같은 일대일 대응이다. n개의 원소의 순서를 뒤섞는 순열의 개수는 n의 계승 n!와 같다. 즉, n 이하의 양의 정수들을 곱한 값이다. -위키피디아 공식(nPr) 서로 다른 n개중에 r개를 선택하는 경우의 수 모든 경우의 수를 계산하는 완전 탐색에서 사용하는 알고리즘입니다. 순서 n개에 대한 모든 경우의 수를 구하는 것은 n!로 구하기 쉽습니다. 예를들어 {1, 2, 3}이 있다고 했을때 가능한..
WebClient VS RestTemplate RestTemplate이란? Spring은 오랫동안 웹 클라이언트 추상화로 RestTemplate을 제공하고 있었습니다. 내부적으로 RestTemplate은 요청 당 스레드 모델을 기반으로 하는 Java Servlet API를 사용합니다. 이 의미는 웹 클라이언트가 응답을 받을 때 까지 스레드가 차단되는데, 여기서 문제점은 각각의 스레드가 일정량의 메모리와 CPU를 사용합니다. 이때, 결과를 기다리는 느린 서비스를 기다리는 수신 요청이 많다고 한다면 요청이 쌓이고 많은 스레드를 생성해서 스레드 풀을 소모하거나 사용 가능한 모든 메모리를 차지하게 될 것입니다. 또한 빈번한 Context Switch을 통해 성능 저하가 발생할 수 있습니다. 가장 쉽게 생각하면 ..
Greedy Algorithms(탐욕 알고리즘)Greedy Algorithms(탐욕 알고리즘)문제를 해결하는 과정에서 그 순간순간마다 최적이라고 생각되는 결정을 하는 방식으로 진행하여 최종 해답에 도달하는 문제 해결 방식위의 사진에서 큰 요소를 찾을때 분기마다 제일 큰 값을 찾아 최종 해답을 찾아 나갈때 결과는 12이다. 실제는 99가 가장 크다. 이처럼 문제해결에서 최적 해답을 찾지 못한다.즉, 순간 순간 마다 최선의 결정에 전체 문제의 최선의 해결책이 되지는 않는다.위와 같은 단점이 있다만 가장 큰 장점은 속도이다. 위의 문제를 완전탐색으로 풀었다면 7개를 모두 확인했어야 하지만, 실제 Greedy를 사용하면 3개만 확인하면 된다는 장점이 있다.따라서 이 방법이 몇몇 문제에서 최적화를 빠르게 산출해낼..
Transaction의 성질 - ACID 트랜잭션이란? 하나의 논리적 작업 단위를 구성하는 일련의 연산들의 집합 예를 들어 계좌이체를 했을 경우 A 계좌에서 10만원을 인출하고 B 계좌에서 10만원을 입금되었을 경우 A 계좌 인출 시 문제가 생겼을 경우 원래 상태(B 계좌에 입금이 되면 안된다.)로 돌아가야 하고 B 계좌 입금시 문제가 생겼을 경우 원래 상태(A 계좌로 인출이 되면 안된다.)로 돌아가야 한다. 이러한 트랜잭션은 다양한 데이터 항목들을 접근하고 갱신하는 프로그램의 수행 단위가 된다. 트랜잭션은 아래의 ACID 성질이라고 하는 것으로 설명된다. 트랜잭션의 성질 트랜잭션이 안전하게 수행되는 것을 보장하기 위한 성질 A - Atomicity(원자성) All or Notihng 모든 트랜잭션 연산..
· Backend/Java
객체지향 설계를 위한 SOLID 원칙 참고자료 객체지향 개발 5대 원리: SOLID 객체지향 설계의 5가지 원칙 S.O.L.I.D SRP(Single Responsibility Principle - 단일 책임 원칙) 객체는 오직 하나의 책임을 가져야 한다. 객체는 오직 하나의 변경의 이유만을 가져야 한다. 여러 원인에 의한 변경(Divergent Change) 여분의 클래스를 통해 혼재되어 있는 각 책임을 각각의 개별 클래스로 분할하여 클래스 당 하나의 책임만을 맡도록 하는 것이 중요하다. 중요한 점은 책임만 분리하는 것이 아니라, 두 클래스간의 관계의 복잡도를 줄이도록 설계하는 것도 중요하다. 만약 클래스들이 유사하고 비슷한 책임을 중복해서 갖고 있다면 부모 클래스를 만들어 상속받을 수 있도록 하는것이..
Spring Data JPA와 QueryDSL 이해 Spring Data JPA 소개 지루하게 반복, 중복되는 CRUD 문제를 세련된 방법으로 해결 개발자는 인터페이스만 작성 스프링 데이터 JPA가 구현 객체를 동적으로 생성해서 주입 적용 전 public class MemberRepository { public void save(Member member) {...} public Member findById(Long id) {...} public List findAll() {...} public Member findByUsername() {...} } 적용 후 public interface MemberRepsoitory extends JpaRepository { List findByUsername(Stri..
Seyun(Marco)
'분류 전체보기' 카테고리의 글 목록 (17 Page)