일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 패스트캠퍼스
- CentOS
- 스프링의 정석
- 항해99
- Spring
- 데이터베이스
- emqx
- java
- docker
- JWT
- Kafka
- 생성자 주입
- 스파르타코딩클럽
- 시큐리티
- EC2
- 카프카
- MYSQL
- AWS
- 쇼트유알엘
- JavaScript
- DB
- 개인프로젝트
- 웹개발
- 프로그래머스
- @jsonproperty
- 남궁성과 끝까지 간다
- Spring Security
- visualvm
- 스웨거
- WEB SOCKET
- Today
- Total
목록Back-end (104)
Nellie's Blog
코딩테스트 고득점 Kit 에 있는 해시 문제를 해시를 안쓰고 그냥 풀어봤다. 문제 설명 당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다. 홍 박사님 연구실의 폰켓몬은 종류에 따라 번호를 붙여 구분합니다. 따라서 같은 종류의 폰켓몬은 같은 번호를 가지고 있습니다. 예를 들어 연구실에 총 4마리의 폰켓몬이 있고, 각 폰켓몬의 종류 번호가 [3번, 1번, 2번, 3번]이라면 이는 3번 폰켓몬 두 마리, 1번 폰켓몬 한 마리, 2번 폰켓몬 한 마리가 있음을 나타냅니다. 이때, 4마리의 폰켓몬 중 2마리를 고르는 방법은 다음과 같이 6가지가 있습니다. 첫 번째(3번), 두 ..
문제 설명 배열 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보다 크거나 ..
문제 설명 정수 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
문제 설명 머쓱이네 피자가게는 피자를 두 조각에서 열 조각까지 원하는 조각 수로 잘라줍니다. 피자 조각 수 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) ..
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번만 실행해서 종료했다...
문제 설명 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을 반환해 주세요. 제한 사항 입력..
문제 설명 프로그래머스 치킨은 치킨을 시켜먹으면 한 마리당 쿠폰을 한 장 발급합니다. 쿠폰을 열 장 모으면 치킨을 한 마리 서비스로 받을 수 있고, 서비스 치킨에도 쿠폰이 발급됩니다. 시켜먹은 치킨의 수 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;..
문제 설명 문자열 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..
문제 설명 이 문제에는 표준 입력으로 두 개의 정수 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
문제 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. 제한사항 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. completion의 길이는 participant의 길이보다 1 작습니다. 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다. 참가자 중에는 동명이인이 있을 수 있습니다. 내 코드 1. 비교를 위해 두 배열을 모두 순서대로 정렬시킨다. ← Arrays.sort()..
문제 설명 문자열 배열 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문을 돌면서 길이를 계산하여 넣어준다.
문제 설명 정수가 들어 있는 배열 num_list가 매개변수로 주어집니다. num_list의 원소의 순서를 거꾸로 뒤집은 배열을 return하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ num_list의 길이 ≤ 1,000 0 ≤ num_list의 원소 ≤ 1,000 내 풀이 class Solution { public int[] solution(int[] num_list) { int[] answer = new int[num_list.length]; for(int i = 0;i
문자열 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" } } 반복문을 사용하..
머쓱이네 양꼬치 가게는 10인분을 먹으면 음료수 하나를 서비스로 줍니다. 양꼬치는 1인분에 12,000원, 음료수는 2,000원입니다. 정수 n과 k가 매개변수로 주어졌을 때, 양꼬치 n인분과 음료수 k개를 먹었다면 총얼마를 지불해야 하는지 return 하도록 solution 함수를 완성해보세요. 제한사항 0
머쓱이는 추운 날에도 아이스 아메리카노만 마십니다. 아이스 아메리카노는 한잔에 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..
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. 엔티..
객체와 테이블 매핑 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 등등
사전지식 - MyBatis 기본 사용법 영속성 컨텍스트 엔티티를 영구 저장 하는 환경 영속성 컨텍스트는 엔티티 매니저를 통해 엔티티를 조회하거나 저장할때 엔티티를 보관하고 관리한다. 바로 데이터베이스에 접근하지 않는다는 것이다. 자바의 엔티티 객체를 엔티티 매니저마다 가지고 있는 영속성 컨텍스트라는 공간에다 넣고 빼고 하면서 사용한다. 플러시 commit처리를 하면 flush가 되면서 데이터베이스에 쿼리가 날아간다. 하지만, commit처리를 하지 않아도 강제로 코드상에서 flush처리를 해주면 쿼리가 날아가게 된다. 준영속상태 detach처리를 하여 영속상태를 중단한다. 잘 쓰지는 않는 개념이다. [도서] 자바 ORM 표준 JPA 프로그래밍 (김영한 저) https://codevang.tistory.c..
2. 대소문자 변환 설명 대문자와 소문자가 같이 존재하는 문자열을 입력받아 대문자는 소문자로 소문자는 대문자로 변환하여 출력하는 프로그램을 작성하세요. 입력 첫 줄에 문자열이 입력된다. 문자열의 길이는 100을 넘지 않습니다. 문자열은 영어 알파벳으로만 구성되어 있습니다. 출력 첫 줄에 대문자는 소문자로, 소문자는 대문자로 변환된 문자열을 출력합니다. 예시 입력 1 StuDY 예시 출력 1 sTUdy 풀이 import java.util.Scanner; public class Main { public String solution(String str) { String answer = ""; for (char x : str.toCharArray()) { if(Character.isLowerCase(x)) an..
순수한 객체 연관관계 다대일 단방향 연관관계 (회원 → 팀) 회원에서 팀으로만 접근하는 단방향 매핑. 팀에서는 회원에게 접근할 수 없다. 이 때, 객체 연관관계는 다대일 단방향이지만, 테이블 연관관계는 외래 키 하나만으로 양방향 조회가 가능하므로 양방향! 양방향 연관관계 매핑 회원 엔티티에는 변경한 부분이 없다. 팀 엔티티에 @OneToMany 부분만 추가해주었다. 팀과 회원은 일대다 관계다. 그래서 팀 엔티티에 컬렉션인 List members를 추가했다. mappedBy속성은 양방향 매핑일 때 사용하는데 반대쪽 매핑의 필드 이름을 값으로 주면 된다. 이렇게 양방향 매핑이 완료되었으며, 이제부터는 팀에서 회원 컬렉션으로 객체 그래프를 탐색할 수 있다. 출처 : 자바 ORM 표준 JPA 프로그래밍 (김영한)
1. 문자 찾기 설명 한 개의 문자열을 입력받고, 특정 문자를 입력받아 해당 특정문자가 입력받은 문자열에 몇 개 존재하는지 알아내는 프로그램을 작성하세요. 대소문자를 구분하지 않습니다.문자열의 길이는 100을 넘지 않습니다. 입력 첫 줄에 문자열이 주어지고, 두 번째 줄에 문자가 주어진다. 문자열은 영어 알파벳으로만 구성되어 있습니다. 출력 첫 줄에 해당 문자의 개수를 출력한다. 예시 입력 1 Computercooler c 예시 출력 1 2 내 풀이 package org.example; import java.util.Scanner; public class Main { public int solution(String str, char t) { int answer = 0; str = str.toLowerCa..
컬렉션 프레임워크란? 자료구조(Data Structure) 를 사용해서 객체들을 효율적으로 추가, 삭제, 검색할 수 있게 한 인터페이스와 구현클래스 java.util 패키지에서 제공하는 프레임워크 배열은 선언 시 정한 크기(정한 용량)를 변경할 수 없고, 항목을 저장, 삭제, 추가하는 메소드가 없기 때문에 직접 인덱스를 사용해야 했던 불편함을 해결하기 위해 제공된 프레임워크 주요 인터페이스 : List, Set, Map List 컬렉션 배열과 비슷하게 객체를 인덱스로 관리 배열과의 차이점 : 저장용량이 자동으로 증가, 객체를 저장할 때 자동 인덱스가 부여됨 객체 자체를 저장하는 것이 아닌 객체의 번지를 참조하며, 동일한 객체가 중복저장시 동일한 번지가 참조됨 ArrayList, Vector, Linked..
1. 예외 클래스 예외란, 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는프로그램 오류. 자바는 예외가 발생할 가능성이 높은 코드를 컴파일 할 때 예외 처리 유무를 확인한다. 만약 예외 처리 코드가 없다면 컴파일이 되지 않는다. 예외의 두가지 종류 일반예외 - Exception을 상속받지만 RuntimeException을 상속받지 않는 클래스 - 컴파일러 체크 예외 (컴파일러가 미리 체크를 해준다) - 실행 시 예외가 발생할 가능성이 높기 때문에 자바 소스를 컴파일하는 과정에서 해당 예외 처리 코드가 있는지 검사한다. - 예외처리 코드가 없다면 컴파일 오류 발생. 실행예외 - RuntimeException의 하위 클래스 - 컴파일러 넌 체크 예외 - 실행 시 예측할 수 없이 갑자기 발생하기 때문..
문제 설명 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다. 1478 → "one4seveneight" 234567 → "23four5six7" 10203 → "1zerotwozero3" 이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요. 참고로 각 숫자에 대응되는 영단어는 다음 표와 같습니다. 숫자영단어 0 zero 1 one 2 two 3 three 4 four 5 five 6 six 7 s..
문제 설명 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을 반환해 주세요. 제한 사항 입력..
문제 설명 정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다. 제한 조건 arr은 길이 1 이상인 배열입니다. 인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다. 입출력 예arrreturn [4,3,2,1] [4,3,2] [10] [-1] - 내 이상한 풀이.. import java.util.*; public class Solution { public int[] solution(int[] arr) { int[] answer = {}; if(a..
문제 설명 자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다. 제한 조건 n은 10,000,000,000이하인 자연수입니다. 입출력 예nreturn 12345 [5,4,3,2,1] 내 풀이 import java.util.*; public class Solution { public static int[] solution(long n) { String[] arr = String.valueOf(n).split(""); int[] answer = new int[arr.length]; for(int i =0; i< arr.length; i++) { answer[i] = Integer.parseInt(arr[i]); } Arr..
문제 설명 문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요. 제한 사항 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다. 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다. 입출력 예sreturn "try hello world" "TrY HeLlO WoRlD" 입출력 예 설명 "try hello world"는 세 단어 "try", "hello", "world"로 구성되어 있습니다. 각 단어의 짝수번째 문자를 대문자로, 홀수번째 문자를 소문자로 바꾸면 "..
문제 설명 대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다. 예를 들어 s가 "pPoooyY"면 true를 return하고 "Pyy"라면 false를 return합니다. 제한사항 문자열 s의 길이 : 50 이하의 자연수 문자열 s는 알파벳으로만 이루어져 있습니다. 입출력 예sanswer "pPoooyY" true "Pyy" false 입출력 예 설명 입출력 예 #1 'p'의 개수 2개, 'y'의 개수 2개로 같으므로 true를 return 합니다..
문제 설명 행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요. 제한 조건 행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다. 입출력 예arr1arr2return [[1,2],[2,3]] [[3,4],[5,6]] [[4,6],[7,9]] [[1],[2]] [[3],[4]] [[4],[6]] class Solution { public int[][] solution(int[][] arr1, int[][] arr2) { int[][] answer = {}; return answer; } } 내 틀린 풀이 class Solution {..