[Spring] Lombok의 @Builder와 @SuperBuilder
·
🍀 Spring Boot
들어가며Lombok 라이브러리 중 @Builder와 @SuperBuilder 어노테이션을 사용하면, 객체의 생성 과정을 구현하는 것에 있어서 큰 도움을 받을 수 있습니다.이 포스팅에서는 두 어노테이션의 특징과 사용법, 그리고 언제 어떤 것을 선택하면 좋을 지에 대해 다루고 있습니다.❏ @Builder란?@Builder는 Lombok에서 제공하는 어노테이션으로, 빌더 패턴을 자동으로 구현해줍니다. 따라서, 편리하게 빌더 패턴을 사용해줄 수 있는데요. 😆 사용 예시@Getter@Builderpublic class Person { private String name; private int age;}// 객체 생성Person person = Person.builder() ..
[이코테/Python] 화성 탐사 || 최단 경로, 다익스트라
·
🎯PS
이코테 화성 탐사 파이썬더보기❍ 문제화성 탐사 기계가 존재하는 공간은 N x N 크기의 2차원 공간이며, 각각의 칸을 지나기 위한 비용(에너지 소모량)이 존재합니다. 가장 왼쪽 위 칸인 [0][0] 위치에서 가장 오른쪽 아래 칸인 [N-1][N-1] 위치로 이동하는 최소 비용을 출력하는 프로그램을 작성하세요. 화성 탐사 기계는 특정한 위치에서 상하좌우 인접한 곳으로 1칸씩 이동할 수 있습니다.첫째 줄에 테스트 케이스의 수 T(1 매 테스트 케이스의 첫째 줄에는 탐사 공간의 크기를 의미하는 정수 N이 주어집니다. 이어서 N개의 줄에 걸쳐 각 칸의 비용이 주어지며 공백으로 구분합니다.❍ 입력첫째 줄에 테스트 케이스의 수(1 매 테스트 케이스의 첫째 줄에는 탐사 공간의 크기를 의미하는 정수 N이 주어집니다. ..
[이코테/Python] 정확한 순위 || 최단 경로, 플로이드 워셜
·
🎯PS
이코테 정확한 순위 Python더보기❍ 문제선생님은 시험을 본 학생 N명의 성적을 분실하고, 성적을 비교한 결과의 일부만 가지고 있습니다.학생 N명의 성적은 모두 다른데, 다음은 6명의 학생에 대하여 6번만 성적을 비교한 결과입니다.1번 학생의 성적 3번 학생의 성적 4번 학생의 성적 4번 학생의 성적 5번 학생의 성적 5번 학생의 성적 A번 학생의 성적이 B번 학생보다 낮다면 화살표가 A에서 B를 가리키도록 할 때 위의 성적 결과를 다음 그림처럼 표현할 수 있습니다.이 그림으로 유추해서 순위를 정확히 알 수 있는 학생도 있고, 알 수 없는 학생도 있습니다. 예를 들어 1번 학생은 5번 학생보다 성적이 낮고, 5번 학생은 4번 학생보다 성적이 낮으므로 1번 학생은 4번 학생보다 성적이 낮습니다. 따라서 ..
[Git] GitHub author 변경하기
·
🐣 Computer Science
들어가며팀원이 제 노트북을 이용하게 되면서, Github의 작성자(Author)를 팀원 계정으로 설정 해준 적이 있습니다.추후에 알고리즘 문제를 풀고 열심히 Commit & Push를 하다가 나중에서야 이 사실을 깨닫게 되어 수정해주었는데요. 따라서, Github Commit의 Author를 변경하는 방법과, Git Rebase 명령어를 이용한 커밋 이력 변경 방법을 정리하여 소개합니다. ❏ GitHub Author 변경하기❍ Git Log 확인하기시작하기 전에 먼저 Git Log를 확인하여 변경하고자 하는 커밋을 확인해봐야 합니다.git log 해당 명령어를 통해, 우리는 커밋의 해시값, Author, Date, Commit Message과 같은 커밋 기록을 확인해볼 수 있습니다. 해시값을 기억해두고,..
[BOJ/Python] 플로이드 || 최단 경로, 플로이드 워셜
·
🎯PS
백준 플로이드 파이썬 11404https://www.acmicpc.net/problem/11404 더보기❍ 문제n(2 ≤ n ≤ 100)개의 도시가 있다. 그리고 한 도시에서 출발하여 다른 도시에 도착하는 m(1 ≤ m ≤ 100,000)개의 버스가 있다. 각 버스는 한 번 사용할 때 필요한 비용이 있다.모든 도시의 쌍 (A, B)에 대해서 도시 A에서 B로 가는데 필요한 비용의 최솟값을 구하는 프로그램을 작성하시오.❍ 입력첫째 줄에 도시의 개수 n이 주어지고 둘째 줄에는 버스의 개수 m이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스의 출발 도시의 번호가 주어진다. 버스의 정보는 버스의 시작 도시 a, 도착 도시 b, 한 번 타는데 필요한 비용 ..
[이코테/Python] 편집 거리 || 다이나믹 프로그래밍
·
🎯PS
이코테 편집 거리 파이썬더보기❍ 문제두 개의 문자열 A와 B가 주어졌을 때, 문자열 A를 편집하여 문자열 B로 만들고자 합니다.문자열 A를 편집할 때는 다음의 세 연산 중에서 한 번에 하나씩 선택하여 이용할 수 있습니다.삽입(Insert): 특정한 위치에 하나의 문자를 삽입합니다.삭제(Remove): 특정한 위치에 있는 하나의 문자를 삭제합니다.교체(Replace): 특정한 위치에 있는 하나의 문자를 다른 문자로 교체합니다.이때 편집 거리란 문자열 A를 편집하여 문자열 B로 만들기 위해 사용한 연산의 수를 의미합니다.문자열 A를 문자열 B로 만드는 최소 편집 거리를 계산하는 프로그램을 작성하세요.예를 들어 "sunday"와 "saturday"의 최소 편집 거리는 3입니다.❍ 입력두 문자열 A와 B가 한줄..
[Web] DNS란 무엇인가?
·
🐣 Computer Science
❏ DNS 원하는 서비스를 제공받기 위해 서버에 요청을 할 때, 서버의 IP 주소를 알아야 한다. 하지만, IP 주소처럼 복잡한 숫자들을 기억할 필요 없이, 전화번호부처럼 도메인을 정의해 편리하게 접속한다. DNS(Domain Name System)이란, 바로 이 전화번호부가 저장되는 곳이다. 네트워크를 통해서 도메인 정보를 저장하고 조회한다. ❍ DNS Spoofing DNS로 보내는 요청을 가로채서 그에 대한 응답으로 변조된 IP를 전송한다. ❍ A Record vs. CNAME A Record는 도메인을 서버의 IP와 직접 연결되어 속도가 빠르다. CNAME은 서버의 IP가 유동적으로 변하는 경우, 그 IP에 일정하게 연결되는 다른 도메인(Canocical NAME)을 연결하는 것이다. ex. AWS
[BOJ/Python] 연산자 끼워 넣기 || DFS
·
🎯PS
백준 연산자 끼워 넣기 파이썬 14888 14888번: 연산자 끼워넣기첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, 곱www.acmicpc.net더보기❍ 문제N개의 수로 이루어진 수열 A1, A2, ..., AN이 주어진다. 또, 수와 수 사이에 끼워넣을 수 있는 N-1개의 연산자가 주어진다. 연산자는 덧셈(+), 뺄셈(-), 곱셈(×), 나눗셈(÷)으로만 이루어져 있다.우리는 수와 수 사이에 연산자를 하나씩 넣어서, 수식을 하나 만들 수 있다. 이때, 주어진 수의 순서를 바꾸면 안 된다.예를 들어, 6개의 수로..
[Programmers/Python] 괄호 변환
·
🎯PS
프로그래머스 괄호 변환 파이썬 60058 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 더보기 ❍ 문제 설명 카카오에 신입 개발자로 입사한 **"콘"**은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 컴파일하여 로그를 보니 대부분 소스 코드 내 작성된 괄호가 개수는 맞지만 짝이 맞지 않은 형태로 작성되어 오류가 나는 것을 알게 되었습니다. 수정해야 할 소스 파일이 너무 많아서 고민하던 "콘"은 소스 코드에 작성된 모든 괄호를 뽑아서 올바른 순서대로 배치된 괄..
[BOJ/Python] 경쟁적 전염 || BFS
·
🎯PS
백준 경쟁적 전염 파이썬 18405 18405번: 경쟁적 전염첫째 줄에 자연수 N, K가 공백을 기준으로 구분되어 주어진다. (1 ≤ N ≤ 200, 1 ≤ K ≤ 1,000) 둘째 줄부터 N개의 줄에 걸쳐서 시험관의 정보가 주어진다. 각 행은 N개의 원소로 구성되며, 해당 위치www.acmicpc.net더보기❍ 문제NxN 크기의 시험관이 있다. 시험관은 1x1 크기의 칸으로 나누어지며, 특정한 위치에는 바이러스가 존재할 수 있다. 모든 바이러스는 1번부터 K번까지의 바이러스 종류 중 하나에 속한다.시험관에 존재하는 모든 바이러스는 1초마다 상, 하, 좌, 우의 방향으로 증식해 나간다. 단, 매 초마다 번호가 낮은 종류의 바이러스부터 먼저 증식한다. 또한 증식 과정에서 특정한 칸에 이미 어떠한 바이러스가..