Daniel: The Dev Story
Daniel: The Dev Story
    • 홈
  • 분류 전체보기
    • 프로젝트
    • BE
      • --------Java--------
      • Java
      • Basic
      • Spring
      • --------JS--------
      • JavaScript
      • TypeScript
      • NodeJS
      • Express
      • Basics
      • --------Common--------
      • Error
    • FE
      • React
    • DB
      • mySQL
    • Algorithm
      • Concept
      • BackJun
      • Data Structure
      • Sort
    • Git
    • Math
    • Book
    • Private
      • Database
      • Tip
  • 글쓰기
  • 관리자
  • myoskin

      [Spring] HTTP 요청과 응답 방법

      -- 목차 --HTTP 요청 파라미터쿼리 파라미터조회방법필수여부기본값 설정HTTP 요청 메시지JSONHTTP 응답JSON   HTTP 요청 파라미터 쿼리 파라미터 예시 URL ->http://localhost:8080/request-param?id=west&age=20 GET 쿼리 파라미터와 POST HTML Form 전송 방식에서 사용이 가능하다.  조회방법@RequestParam 애노테이션으로 사용가능  @ResponseBody @RequestMapping("/request-param") public String requestParam( @RequestParam String id, @RequestParam Integer age ){ ..

      BE/Spring 2024.07.01

      [백준] 2470: 두 용액 - Java (Two Pointer)

      목 차 문제 접근 방식 풀이 문제 접근 방식 이 문제는 투 포인터를 활용하여 알고리즘을 구현하는 문제이다. 투포인터의 특성상 대부분의 문제가 정렬을 요구하는데, 자바에서는 Arrays.sort(배열)를 사용하면 쉽게 정렬을 할 수 있다. 우리의 요점은 정렬이 아닌 투 포인터 기법이니 가볍게 넘어가기로 했다. 왼쪽과 오른쪽에 포인터를 하나씩 놔두고 조건에 따라 각각 한 칸씩 오른쪽과 왼쪽으로 이동하게 한다. 먼저 다음과 같이 구현순서를 정의했다. 1. 두 포인터가 가리키는 값의 합을 더한다. (sum = arr[left] + arr[right]) 2. 이전까지 가장 가까웠던 거리의 크기와 현재 거리의 크기를 비교한다. 2 - 1. 현재 거리의 크기가 더 작다면 값을 갱신해준다. 2 - 2. 현재 거리의 크..

      Algorithm/BackJun 2024.03.30

      [백준] 2448: 별찍기 11 - Java (RecursiveFunction)

      목 차문제접근 방식풀이 문제 접근 방식 출력은 아래와 같다. 먼저 패턴을 살펴보기로 했다. 재귀를 사용해서 문제를 풀어야 하는데, 다음 유의점을 생각하면서 재귀를 구현하였다. 1. Base Case 부터 출력한다. 2. 작은 삼각형 출력을 목표로 하고 목표에 맞게 재귀를 호출한다. 3. n / 2 를 하고 위쪽 삼각형, 왼쪽 삼각형, 오른쪽 삼각형을 출력하게 한다. 입력으로 24 가 들어올 때 아래와 같이 출력이 되어야 한다. 이 문제에서 가장 핵심적인 부분은 재귀도 있지만 n / 2 부분인데, space 영역을 살펴보면 안쪽 빈 삼각형은 n / 2 를 기준으로 한다는 것을 쉽게 알 수 있을 것이다. 이 부분에서 n / 2 를 하게 되었다. 그리고 3 * (2^k) 으로 입력이 들어온다고 문제에 작성이 ..

      Algorithm/BackJun 2024.03.30

      [백준] 10282: 해킹 - Java (Dijkstra)

      목 차 문제 접근 방식 풀이 문제 접근 방식 먼저 이 문제는 다익스트라(Dijkstra) 알고리즘을 사용하여 푸는 문제이다. A 컴퓨터가 B 컴퓨터를 의존한다. 이 때 B 가 감염되면 A 컴퓨터도 감염된다. 이 뜻은 B 가 출발점, A 가 도착점이 된다. 다익스트라의 경우 비슷비슷하기 때문에 크게 문제가 되지는 않지만 입력이 아래와 같을 때 문제가 발생하게 된다. 1 4 5 1 4 1 1 2 4 10 3 1 2 2 3 2 3 2 2 answer 4 4 이 경우는 1 -> 4 로 1초의 시간이 걸리고, 1 -> 3으로 2초의 시간이 걸린다. 이 경우에 걸리는 시간은 2초이다. 만약 평소대로 다익스트라 알고리즘을 사용한다면 여기서 걸리게 되어 답이 5가 출력될 것이다. 해결방법은 간단하다. 시간을 담아놓은 ..

      Algorithm/BackJun 2024.03.29

      [백준] 2109: 순회강연 - Java (우선순위 큐)

      목 차문제접근 방식풀이 문제 접근 방식 이 문제의 알고리즘 분류는 그리디 알고리즘, 정렬, 우선순위 큐이다. 이 문제를 정렬과 우선순위 큐로 구현을 해보려고 한다. 먼저 강의들의 date 값을 기준으로 small -> Large 순(오름차순)으로 정렬을 한다. 이제 하나씩 큐에 넣는다. 넣을 때 우리가 해줘야 하는 것들은 다음과 같다. 1. 요소의 pay 값을 큐에 넣는다. 2. 만약 큐의 size 가 해당 요소의 date 값을 초과한다면 가장 작은 값을 pop 한다. 이렇게만 보면 상당히 간단한데, 이렇게 구현하면 문제를 풀 수 있다. 사실 여기까지 생각하는 게 힘들 뿐이다. 2109번 문제의 기본 예제를 예를들어 설명해 보려고 한다. 왼쪽이 원본 배열이고, 오른쪽이 정렬 후의 배열이다. 이제 하나씩 ..

      Algorithm/BackJun 2024.02.15

      [알고리즘] 플로이드 워셜(Floyd-Warshall)

      목 차플로이드 워셜(Floyd-Warshall)기본 개념과 작동 원리구현하며 배운 것들구현 방법 플로이드 워셜(Floyd-Warshall) 최단 경로를 구하는 알고리즘 중에는 대표적으로 다익스트라 알고리즘이 존재한다. 다익스트라 알고리즘의 경우 한 점에서 다른 한 점으로의 최단경로를 구하는 반면에 플로이드 워셜은 모든 정점 사이의 최단경로를 찾는 데에 사용된다. 시간 복잡도는 O(V^3)이다. 기본 개념 및 작동 원리 기본 개념위에서 언급하였듯이 모든 정점의 최단경로를 찾는 알고리즘이다. 작동 원리기본적으로 동적 프로그래밍을 기반으로 작동을 하지만 복잡하면 굳이 생각하지 않아도 된다. 이 알고리즘에서는. 이 알고리즘에서는 각 점을 순회하는데, 시작점으로써가 아닌 '경유점'의 개념으로 접근을 하게 된다. ..

      Algorithm/Concept 2024.02.06

      [Java] 컬렉션(ArrayList, LinkedList, Queue) # 6

      목 차 배열과 ArrayList LinkedList Queue 그 외 컬렉션들 ArrayList Javascript의 배열은 동적 배열이다. 그래서 Java 에서는 Arrays 를 통해서 사용해야 하는 배열 메서드들을 직접적으로 사용할 수 있다. 그러한 Javascript 배열의 Java 버전 이라고 생각하면 쉽다. 동작원리 내부구조: ArrayList 는 내부적으로 배열을 사용하여 데이터를 저장한다. 그리고 필요에 따라서 배열의 길이가 조절된다. 요소추가: 새 요소를 추가할 때 배열이 가득 차 있으면, 더 큰 배열을 생성하고 기존 배열을 복사한다. 요소제거: 요소를 제거하면 그 뒤에 있는 요소들이 한 칸씩 이동된다. 배열의 연속성을 위해서 이다. 동적인 배열이 필요할 경우, 그리고 다양한 배열 메서드를..

      BE/Basic 2024.01.27

      [백준] 7576: 토마토 - Java (그래프)

      목 차 문제 접근 방식 풀이 문제 접근 방식 비교적 친근한 BFS를 통해 접근하려고 한다. BFS를 떠올리면 상하좌우 노드를 모두 넣고 마지막으로 빼내어 지는 노드의 날짜를 출력하면 된다. Queue - 상하좌우 범위 내에 있고, 해당 노드가 0(방문하지 않음)이면 Queue에 등록 - 등록 후 그래프에 해당 좌표 노드를 1(방문함)로 변경 예외처리 - 배열에 0이 남아있다면 모두 익지 못하는 상황이니 -1 출력 풀이 package src.Graph; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import java.util.StringTo..

      Algorithm/BackJun 2024.01.23

      [백준] 9465: 스티커 - Java (DP)

      목 차 문제 접근 방식 풀이 문제 접근 방식 이 문제는 '현재 아이템을 선택할 경우와, 하지 않을 경우를 생각해서 최댓값을 할당해라' 이다. bottom-up, top-down 방식으로 볼 수 있는데, 이번 문제는 top-down 으로 보는 것이 이해하기 쉽다. 각 아이템이 선택될 경우 그 전 아이템을 비교하는 것이다. 무슨 말이냐면 40을 선택하기 전 아이템을 생각해 보면 70에서 넘어오거나, 10에서 넘어오는 것, 둘 중 하나이다. 근데 우리는 dp 배열에 원본 데이터가 아닌 더한 값을 저장하니 실질적으로는 3번 인덱스의 100과 10이 더해진 110과 비교를 하게 될 것이다. 우리는 쉽게 그냥 큰 값을 dp[i][j]에 더하면 되는 것이다. 그리고 이렇게 하는 것이 이해하기 어렵게 말하자면 해당 인..

      Algorithm/BackJun 2024.01.21

      [백준] 2606: 바이러스 - Java (그래프 이론)

      목 차 문제 접근 방식 이 문제를 구현하며 알게된 것들 풀이 문제 접근 방식 BFS Lover 인 나는 이 문제를 보았을 때 바로 BFS가 적합하다고 느꼈다. BFS 방식이 언제나 그렇듯 하나씩 하나씩 근접한 값들을 큐에 넣어 돌리면 된다. 이 문제에서 주의할 점만 알면 30분 내로 풀 수 있는 문제인 것 같다. 그 주의할 점은 바로.. 입력 값 한 쌍이 들어왔을 때, 한 쪽에만 값을 저장하는 행위이다. 예를 들면, 4 3 1 2 2 4 3 2 여기서 앞 쪽 숫자를 a 변수에, 뒤 쪽 숫자를 b 변수에 할당한다고 가정해 보자. 만약 graph[a].add(b); 만 하게된다면, 1, 2, 4는 연결이 되고, 3또한 연결이 되어있지만 출력 값에서는 낙오되는 현상을 볼 수 있다. 이 문제를 구현하며 알게된 ..

      Algorithm/BackJun 2024.01.11

      [백준] 2178: 미로 탐색 - Java (그래프 이론)

      목 차문제접근 방식이 문제를 구현하며 알게된 것풀이 문제 접근 방식 이번에는 BFS 알고리즘으로 해당 문제를 해결하려고 한다. BFS는 가장 먼저 도착하는 것을 반환하면 되기 때문에 생각보다 간단하다. 자바에는 컬렉션에 Queue 자료구조가 있어 그 것을 활용하면 된다. 나는 배열 형태의 Queue 자료구조를 만들기로 했다. 근데 javascript 와는 달리 Java 의 배열은 정적 배열이기에 Javascript 의 .push 같은 배열 메서드가 제공되지 않는다. (자료구조 Queue 사용해도됨) 그래서 원형 큐(Circular Queue)를 알게되었고, 대안으로 선택하게 되었다. 원형 큐는 다음 소제목 '이 문제를 구현하며 알게된 것' 에서 언급하겠다. 이 문제는 weight 값만 추가하여 [N][M..

      Algorithm/BackJun 2024.01.11

      [백준] 1932: 정수 삼각형 - Java (DP)

      목 차 문제 접근 방식 풀이 문제 접근 방식 정수 삼각형의 그림은 삼각형의 형태를 하고 있지만, 보면 n 번 째 줄에는 n 개의 정수가 있는 것을 알 수 있다. 코드의 형태로 나타내면 다음과 같다. arr = [ [1], [2, 3], [4, 5, 6], [7, 8, 9, 10], [11, 12, 13, 14, 15] ] DP를 이용해 더한 값을 dp 배열에 추가하는 방식으로 할 예정이다. 먼저 값이 들어가있지 않은 dp 배열을 똑같이 준비해 준다. 그리고 그림을 그려보면 다음 두 식을 산출해 낼 수 있다. dp[n][j] = dp[n - 1][j] + arr[n][j]; dp[n][j + 1] = dp[n - 1][j] + arr[n][j + 1]; 근데 계산을 하는데 곂치는 부분이 있다. 바로 두번째..

      Algorithm/BackJun 2024.01.11

      [Java] Class - 접근 제어자(access modifier) #5

      목 차 접근 제어자 getter 와 setter 접근 제어자 접근 제어자는 사용자가 Class에 대해서 어디까지 접근할 수 있게 하는 가를 정하는 것이다. 캡슐화라고도 하며, 구성요소 중 일부만 밖으로 공개하여 사용 중에 오용이나 혼란을 방지한다. (참고: 얄코님의 제대로 파는 자바) 다음은 각 제어자에 대한 비교표이다. public: 어떤 클래스에서든지 접근할 수 있다. protected: 같은 패키지 내부와, 자신을 상속한 클래스에서 접근이 가능하다. default: 아무 것도 지정하지 않았을 때의 상태이다. 같은 패키지 내부에서만 접근이 가능하다. private: 오직 정의된 클래스 내부에서만 접근이 가능하다. getter 와 setter private 접근 제어자는 클래스의 중요한 부분이라던지, ..

      BE/Basic 2024.01.04

      [Java] Class - 생성자(Constructor) #4

      목 차 생성자 란? 생성자 메서드 만드는 방법 구조 생성자 란? 생성자는 특정 Class의 인스턴스를 초기화하는 데에 쓰이는 메서드이다. 이를 통해서 받은 외부의 변수나 데이터를 이용해 해당 Class의 각 인스턴스를 고유하게 설정할 수 있다. 각각의 인스턴스는 같은Class이지만 생성자에 의해 전달된 서로 다른 값들로 인해 고유한 상태를 가질 수 있다. 인스턴스: Class로 만든 객체를 의미함. (아래 예시) // human은 Employee의 인스턴스 Employee human = new Employee("Daniel", 24, "M", "010-1234-0000", "BE"); 생성자 메서드 만드는 방법 JavaScript 에서는 'constructor'라는 키워드로 생성자를 만들었다. 아주 직관..

      BE/Basic 2024.01.03

      [Java] 여러가지 연산자 #3

      목 차 이항 연산자 단항 연산자 비교 연산자 이항 연산자 가장 기본적이면서 가장 중요한 사칙연산이다. 다만 하나가 추가되었다. +: 더하기 -: 빼기 *: 곱하기 /: 나누기 %: 나머지 % 는 나눈 값의 나머지를 구하는 것으로, 주로 홀수인지 짝수인지를 알고자 할 때 사용된다. 홀수라면 2로 나누었을 때 나머지가 1이고, 짝수라면 2로 나누었을 때 나머지가 0이다. 단항 연산자 변수 x를 선언했다고 할 때, x의 값을 + 1 증감하는 역할을 하는 연산자이다. 주로 반복문에서 사용되는데, 1을 먼저 더하고 다음 반복문으로 넘어갈 것이냐, 현재 값으로 반복문을 실행한 뒤에 1을 더할 것이냐의 차이이다. x ++: x의 값을 1 증가 ++ x: 먼저 증가한 값을 할당 조금 복잡하지만 예시로 설명하자면, in..

      BE/Basic 2024.01.01

      [Java] 변수와 타입 #2

      목 차 타입 변수 상수 타입 자바에 있는 주요 타입은 String(문자열), Number(숫자), Boolean(논리) 이다. String(문자형): char: 단일 문자를 저장한다. ex) char letter = 'A' // 출력: A String: char은 단일 문자만 저장한다면, 보통 우리리는 문자열(문자들이 모인)을 사용한다. 문자가 한 개 이상인 값을 저장한다. ex) String name = "Daniel"; // 출력: Daniel ex) String letter = "B"; // 출력: B Number(숫자형): int: 정수를 저장한다. ex) int number = 13; // 출력: 13 long: int 보다 더 큰 범위의 정수를 저장한다. ex) long number = 214..

      BE/Basic 2023.12.30

    12
    Daniel: The Dev Story

    찾기

    공지

    최근 글

    인기글

    최근 댓글

    캘린더

      5 / 2025
      일 월 화 수 목 금 토
      1 2 3
      4 5 6 7 8 9 10
      11 12 13 14 15 16 17
      18 19 20 21 22 23 24
      25 26 27 28 29 30 31

    글 보관함

    태그

      AlgorithmMYSQLgit타입스크립트백준java코딩자바알고리즘BOJ

    즐겨찾기

    방문자 수

    • Today
    • Yesterday
    • Total
    myoskin

    티스토리툴바