전체 글 212

[프로그래머스] Lv1. 제일 작은 수 제거하기(java)

문제 설명 정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다. 제한 조건 arr은 길이 1 이상인 배열입니다. 인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다. 입출력 예 내 풀이 import java.util.*; class Solution { public int[] solution(int[] arr) { int min = arr[0]; if (arr.length == 1) { int[] answer = {-1}; return answer..

Back-end/Algorithm 2023.07.09

[프로그래머스] Lv1. 올바른 괄호(java) - 스택

문제 설명 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 "()()" 또는 "(())()" 는 올바른 괄호입니다. ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다. '(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요. 제한사항 문자열 s의 길이 : 100,000 이하의 자연수 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다. 입출력 예 내 풀이 import java.util.*; class Solution { boolean solution(String s)..

Back-end/Algorithm 2023.07.08

[프로그래머스] Lv1. K번째수(java) - 정렬

문제 설명 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다. 예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면 array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다. 2에서 나온 배열의 3번째 숫자는 5입니다. 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 array의 길이는 1 이상 100 이하입니다. a..

Back-end/Algorithm 2023.07.07

[프로그래머스] Lv2. 전화번호 목록(java) - 해시

문제 설명 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조대 : 119 박준영 : 97 674 223 지영석 : 11 9552 4421 전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 return 하도록 solution 함수를 작성해주세요. 제한 사항 phone_book의 길이는 1 이상 1,000,000 이하입니다. 각 전화번호의 길이는 1 이상 20 이하입니다. 같은 전화번호가 중복해서 들어있지 않습니다. 입출력 예 설명 ..

Back-end/Algorithm 2023.07.05

[프로그래머스] 최소직사각형(java) - 완전 탐색

문제 설명 명함 지갑을 만드는 회사에서 지갑의 크기를 정하려고 합니다. 다양한 모양과 크기의 명함들을 모두 수납할 수 있으면서, 작아서 들고 다니기 편한 지갑을 만들어야 합니다. 이러한 요건을 만족하는 지갑을 만들기 위해 디자인팀은 모든 명함의 가로 길이와 세로 길이를 조사했습니다. 아래 표는 4가지 명함의 가로 길이와 세로 길이를 나타냅니다. 가장 긴 가로 길이와 세로 길이가 각각 80, 70이기 때문에 80(가로) x 70(세로) 크기의 지갑을 만들면 모든 명함들을 수납할 수 있습니다. 하지만 2번 명함을 가로로 눕혀 수납한다면 80(가로) x 50(세로) 크기의 지갑으로 모든 명함들을 수납할 수 있습니다. 이때의 지갑 크기는 4000(=80 x 50)입니다. 모든 명함의 가로 길이와 세로 길이를 나..

Back-end/Algorithm 2023.07.03

[프로그래머스] 타겟 넘버(java) - DFS

문제 설명 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3 사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 주어지는 숫자의 개수는 2개 이상 20개 이하입니다. 각 숫자는 1 이상 50 이하인 자연수입니다. 타겟 넘버는 1 이상 100..

Back-end/Algorithm 2023.07.01

[프로그래머스] 폰켓몬(java) - 해시

코딩테스트 고득점 Kit 에 있는 해시 문제를 해시를 안쓰고 그냥 풀어봤다. 문제 설명 당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다. 홍 박사님 연구실의 폰켓몬은 종류에 따라 번호를 붙여 구분합니다. 따라서 같은 종류의 폰켓몬은 같은 번호를 가지고 있습니다. 예를 들어 연구실에 총 4마리의 폰켓몬이 있고, 각 폰켓몬의 종류 번호가 [3번, 1번, 2번, 3번]이라면 이는 3번 폰켓몬 두 마리, 1번 폰켓몬 한 마리, 2번 폰켓몬 한 마리가 있음을 나타냅니다. 이때, 4마리의 폰켓몬 중 2마리를 고르는 방법은 다음과 같이 6가지가 있습니다. 첫 번째(3번), 두 ..

Back-end/Algorithm 2023.06.30

[프로그래머스] 같은 숫자는 싫어(java) - 스택/큐

문제 설명 배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다. 예를 들면, arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return 합니다. arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return 합니다. 배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성해 주세요. 제한사항 배열 arr의 크기 : 1,000,000 이하의 자연수 배열 arr의 원소의 크기 : 0보다 크거나 ..

Back-end/Algorithm 2023.06.29

[프로그래머스][java] 레벨1 약수의 합

문제 설명 정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요. 제한 사항 n은 0 이상 3000이하인 정수입니다. 입출력 예 입출력 예 설명 입출력 예 #1 12의 약수는 1, 2, 3, 4, 6, 12입니다. 이를 모두 더하면 28입니다. 입출력 예 #2 5의 약수는 1, 5입니다. 이를 모두 더하면 6입니다. 내 풀이 class Solution { public int solution(int n) { int answer = 0; for (int i = 1; i

Back-end/Algorithm 2023.06.28

[프로그래머스 입문] 피자 나눠 먹기 (3)

문제 설명 머쓱이네 피자가게는 피자를 두 조각에서 열 조각까지 원하는 조각 수로 잘라줍니다. 피자 조각 수 slice와 피자를 먹는 사람의 수 n이 매개변수로 주어질 때, n명의 사람이 최소 한 조각 이상 피자를 먹으려면 최소 몇 판의 피자를 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요. 제한사항 2 ≤ slice ≤ 10 1 ≤ n ≤ 100 입출력 예 입출력 예 설명 입출력 예 #1 10명이 7조각으로 자른 피자를 한 조각 이상씩 먹으려면 최소 2판을 시켜야 합니다. 입출력 예 #2 12명이 4조각으로 자른 피자를 한 조각 이상씩 먹으려면 최소 3판을 시켜야 합니다. 내 풀이 class Solution { public int solution(int slice, int n) ..

Back-end/Algorithm 2023.06.28

[리눅스]리눅스 서버에서 톰캣을 강제종료 하는 방법 (Web server failed to start. Port 8080 was already in use. 해결)

jar를 재배포하는 과정에서 이전의 jar파일이 실행되고 있어서 오류가 났다. Web server failed to start. Port 8080 was already in use. 라는 문구가 나왔다. 이전에 실행시켰던 서버를 끄는 방법을 정리해보았다. 1. 실행중인 프로세스 찾기 ps -ef | grep [파일명] 또는 ps -ef (전체 실행중 프로세스 보기) 2. 8080의 포트를 사용하는 프로세스 검색하기 netstat -anp |grep 8080 3. 8080의 포트를 사용하는 PID 검색하기 fuser -n tcp 8080 4. 해당 PID 강제 종료 kill -9 [해당 PID] 1번 명령어 다시 실행하여 종료되었는지 확인 후, 재 배포 하면 된다. 나의 경우 1,4번만 실행해서 종료했다...

Back-end/java 2023.06.27

[프로그래머스] 레벨1 콜라츠 추측

문제 설명 1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될 때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다. 1-1. 입력된 수가 짝수라면 2로 나눕니다. 1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다. 2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다. 예를 들어, 주어진 수가 6이라면 6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1 이 되어 총 8번 만에 1이 됩니다. 위 작업을 몇 번이나 반복해야 하는지 반환하는 함수, solution을 완성해 주세요. 단, 주어진 수가 1인 경우에는 0을, 작업을 500번 반복할 때까지 1이 되지 않는다면 –1을 반환해 주세요. 제한 사항 입력..

Back-end/Algorithm 2023.06.27

[프로그래머스 입문] 치킨 쿠폰

문제 설명 프로그래머스 치킨은 치킨을 시켜먹으면 한 마리당 쿠폰을 한 장 발급합니다. 쿠폰을 열 장 모으면 치킨을 한 마리 서비스로 받을 수 있고, 서비스 치킨에도 쿠폰이 발급됩니다. 시켜먹은 치킨의 수 chicken이 매개변수로 주어질 때 받을 수 있는 최대 서비스 치킨의 수를 return하도록 solution 함수를 완성해주세요. 제한사항 chicken은 정수입니다. 0 ≤ chicken ≤ 1,000,000 입출력 예 처음 내 풀이 class Solution { public int solution(int chicken) { int serviceChicken = 0; int coupon = chicken; while (coupon >= 10) { serviceChicken += coupon / 10;..

Back-end/Algorithm 2023.06.27

[프로그래머스] 레벨2 최댓값과 최솟값

문제 설명 문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. 문자열 s에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 "(최소값) (최대값)"형태의 문자열을 반환하는 함수, solution을 완성하세요. 문자열 s에는 둘 이상의 정수가 공백으로 구분되어 있습니다. public static String solution(String s) { String[] array = s.split(" "); ArrayList orderedArrList = new ArrayList(); for (String num : array) orderedArrList.add(Integer.parseInt(num)); for (int startIdxOfPassThrogh = 0; startIdxOfPassThrogh < o..

Back-end/Algorithm 2023.06.25

[프로그래머스] 직사각형 별찍기

문제 설명 이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다. 별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요. 제한 조건 n과 m은 각각 1000 이하인 자연수입니다. 예시 입력 5 3 내 풀이 import java.util.Scanner; class Solution { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int m = sc.nextInt(); for(int i=0; i

Back-end/Algorithm 2023.06.24

프로그래머스 (Level 1) 완주하지 못한 선수 [Java]

문제 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. 제한사항 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. completion의 길이는 participant의 길이보다 1 작습니다. 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다. 참가자 중에는 동명이인이 있을 수 있습니다. 내 코드 1. 비교를 위해 두 배열을 모두 순서대로 정렬시킨다. ← Arrays.sort()..

Back-end/Algorithm 2023.06.23

[프로그래머스 입문] [java] 배열 원소의 길이

문제 설명 문자열 배열 strlist가 매개변수로 주어집니다. strlist 각 원소의 길이를 담은 배열을 retrun하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ strlist 원소의 길이 ≤ 100 strlist는 알파벳 소문자, 대문자, 특수문자로 구성되어 있습니다. 입출력 예 class Solution { public int[] solution(String[] strlist) { int[] answer = new int[strlist.length]; for (int i = 0; i < answer.length; i++) { answer[i] = strlist[i].length(); } return answer; } } for문을 돌면서 길이를 계산하여 넣어준다.

Back-end/Algorithm 2023.06.22

swagger 3.0.0 에러 해결 및 실행 방법 (springboot 2.7.6, maven)

몇시간을 고생시킨 애증의 스웨거, 버전 설정을 잘 해주니 해결되었다. 개발환경 Spring Boot 2.7.6 Maven Java 11 기존코드 SwaggerConfig파일을 만들고, pom.xml에 아래와 같이 의존성을 추가했다. io.springfox springfox-swagger2 2.9.2 io.springfox springfox-swagger-ui 2.9.2 아래와 같은 오류가 났다. Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2023-06-17 19:09:05.660 ERROR 17096 --- [ main] o.s.boot.Spri..

오류 해결 2023.06.17

[프로그래머스 입문] [java] 문자열 뒤집기

문자열 my_string이 매개변수로 주어집니다. my_string을 거꾸로 뒤집은 문자열을 return하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ my_string의 길이 ≤ 1,000 내 풀이 public class StringReverse { public static void main(String[] args) { // 문자열 String str = "ABCDE"; // 문자열 reverse String reverse = ""; for (int i = str.length() - 1; i >= 0; i--) { reverse = reverse + str.charAt(i); } // 결과 출력 System.out.println(reverse); // "EDCBA" } } 반복문을 사용하..

Back-end/Algorithm 2023.06.16

[프로그래머스 입문] 아이스 아메리카노

머쓱이는 추운 날에도 아이스 아메리카노만 마십니다. 아이스 아메리카노는 한잔에 5,500원입니다. 머쓱이가 가지고 있는 돈 money가 매개변수로 주어질 때, 머쓱이가 최대로 마실 수 있는 아메리카노의 잔 수와 남는 돈을 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요. 입출력 예 money result 5,500 [1, 0] 15,000 [2, 4000] class Solution { public int[] solution(int money) { int[] answer = {}; return answer; } } 내 풀이 class Solution { public int[] solution(int money) { return new int[] { money/5500, mon..

Back-end/Algorithm 2023.06.14

항상 헷갈리는 관계형 데이터베이스 다대다 쉬운 예시 (고객 - 상품)

DB를 공부할 때 다대다 관계가 제일 헷갈린다. 혼자 공부를 하면서 나중에 기억하기 쉽도록 초딩들도 이해가능한 예제를 만들어보았다. 개념적 모델링의 기본적인 ERD 작성을 위한 예시이다. 고객 - 상품은 다대다 관계 대표적인 다대다 예시인 고객-상품관계이다. 고객은 여러 상품을 구매할 수 있고, 상품은 여러 고객에게 팔릴 수 있다. 엔티티를 만들어서 이해해 보자. 이 상태로는 아무것도 할 수가 없다. kim 이 어떤 상품을 몇개 샀는지, 신라면은 누구에게 팔렸는지 어떻게 알 수 있을까...... ??? 매핑 테이블을 하나 만들어서 해결해 보자. '상품_고객' 테이블을 만들어 일대다, 다대일로 풀어주기 이렇게 두 테이블 사이에 '상품_고객' 테이블을 넣어주니, 위의 문제점이 해결되었다!! 물론 pk 로는 ..

DB/Database 2023.06.06

자바 ORM 표준 JPA 프로그래밍 총정리

1장. JPA 소개 1. SQL을 직접 다룰 때 발생하는 문제점 1) 반복, 반복 그리고 반복 2) SQL에 의존적인 개발 3) JPA와 문제 해결 2. 패러다임의 불일치 1) 상속 2) 연관관계 3) 객체 그래프 탐색 4) 비교 5) 정리 3. JPA란 무엇인가? 1) JPA 소개 2) 왜 JPA를 사용해야 하는가? 4. 정리 2장. JPA 시작 1. 이클립스 설치와 프로젝트 불러오기 2. H2 데이터베이스 설치 3. 라이브러리와 프로젝트 구조 1) 메이븐과 사용 라이브러리 관리 4. 객체 매핑 시작 5. persistence.xml 설정 1) 데이터베이스 방언 6. 애플리케이션 개발 1) 엔티티 매니저 설정 2) 트랜잭션 관리 3) 비즈니스 로직 4) JPQL 7. 정리 3장. 영속성 관리 1. 엔티..

Back-end/JPA 2023.01.23

JPA 4장 엔티티매핑

객체와 테이블 매핑 1) 엔티티 매핑 소개 객체와 테이블 매핑 : @Entity, @Table 필드와 컬럼 매핑 : @Column 기본 키 매핑 : @Id 연관관계 매핑 : @ManyToOne, @JoinColumn 2) @Entity @Entity가 붙은 클래스는 jpa가 관리, 엔티티라고 한다. final 클래스, enum, interface, inner 클래스 사용 불가능. 저장할 필드에 final 사용하면 안됨. 속성 : name, -- @Entity(name=”member”) 3) @Table @Table(name=”MBR”) 로 하면 DB의 “MBR”테이블로 쿼리가 나감. catalog,schema, unique 등등

Back-end/JPA 2023.01.20

JPA 3장 영속성 관리

사전지식 - MyBatis 기본 사용법 영속성 컨텍스트 엔티티를 영구 저장 하는 환경 영속성 컨텍스트는 엔티티 매니저를 통해 엔티티를 조회하거나 저장할때 엔티티를 보관하고 관리한다. 바로 데이터베이스에 접근하지 않는다는 것이다. 자바의 엔티티 객체를 엔티티 매니저마다 가지고 있는 영속성 컨텍스트라는 공간에다 넣고 빼고 하면서 사용한다. 플러시 commit처리를 하면 flush가 되면서 데이터베이스에 쿼리가 날아간다. 하지만, commit처리를 하지 않아도 강제로 코드상에서 flush처리를 해주면 쿼리가 날아가게 된다. 준영속상태 detach처리를 하여 영속상태를 중단한다. 잘 쓰지는 않는 개념이다. [도서] 자바 ORM 표준 JPA 프로그래밍 (김영한 저) https://codevang.tistory.c..

Back-end/JPA 2023.01.19

데이터 접근기술의 변천과정 (JDBC, SQLmapper, ORM)

https://velog.io/@jh129047/JDBC%EC%99%80-Spring-Data-JDBC JDBC와 Spring Data JDBC 어떠한 애플리케이션을 제작하더라도 데이터베이스와 같은 데이터 저장소와의 연동은 필수이다. 이번엔 서비스 계층에서 비즈니스 로직을 통해 처리된 데이터를 DB에 저장하고 비즈니스 로직 velog.io https://skyblue300a.tistory.com/7 JPA vs JDBC, JPA vs Mybatis, JPA vs Spring Data JPA의 차이점과 Hibernate Spring은 DB에 접근하기 위해 자바의 API를 사용한다. 웹 서비스에 필요한 기능들이 추상화돼서 Spring이 만들어졌듯이, DB에 접근하는 기술들도 일종의 추상화 과정을 거치며 진화..

DB/Database 2023.01.18

HTTP Request/Response 구조

HTTP Request HTTP Request Message는 공백(blank line)을 제외하고 3가지 부분으로 나누어진다. Start Line Headers Body Start Line HTTP Request Message의 시작 라인 HTTP request의 start line 3가지 부분으로 구성 HTTP method Request target HTTP version GET /test.html HTTP/1.1 [HTTP Method] [Request target] [HTTP version] HTTP method는 요청의 의도를 담고 있는 GET, POST, PUT, DELETE 등이 있다. Request target은 HTTP Request가 전송되는 목표 주소이다. HTTP version은 v..

Frond-end/Web 2023.01.06

[Docker] 도커의 개념과 구조 및 명령어

1. Docker란 Docker는 가상 머신처럼 독립된 실행환경을 만들어주는 것으로, 운영체제를 설치한 것과 유사한 효과를 낼 수 있지만, 실제 운영체제를 설치하지 않기 때문에 설치 용량이 적고 실행 속도 또한 빠르다. 예전에는 윈도에 VM Ware와 같은 가상 머신을 설치하였으나 최근에는 리눅스 계열에서 Docker가 그 역할을 대신한다. 도커 컨테이너는 일종의 소프트웨어를 소프트웨어의 실행에 필요한 모든 것을 포함하는 완전한 파일 시스템 안에 감싼다. 여기에는 코드, 런타임, 시스템 도구, 시스템 라이브러리 등 서버에 설치되는 무엇이든 아우른다. 이는 실행 중인 환경에 관계 없이 언제나 동일하게 실행될 것을 보증한다. 2. Docker image 와 container docker Images(read..

Infra/Docker 2022.12.30