일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- proxy
- immutable
- mutable
- 인덱스
- 프록시서버
- 정규화
- forward프록시
- 데이터베이스
- Database
- reverse프록시
- 불변객체
- 얕은복사
- 이진탐색
- NoSQL
- RDBMS
- 깊은복사
- java
- 조인
- 방어적복사
- index
- binarySearch
- 알고리즘
- ERD
- transaction
- 자료구조
- acid
- Today
- Total
목록알고리즘/백준 (12)
jacketList

문제 개요 두개의 문자를 입력받는다. 입력받은 문자열을 비교하여 두 문자열의 부분 수열이 되는 수열 중 가장 긴 수열의 길이를 구해 출력해주어야 한다. 풀이 방법을 생각하지 못해 도움을 받아 풀었다. 두 문자열을 비교해주어야 하니 행과 열에 문자열을 적어주고 하나씩 비교하며 길이를 적어주었다. 1. ACAYKP 와 C 비교 -> 처음 A와 비교했을 때는 일치하는 문자가 없기 때문에 0의 값이 들어가고 이후 C는 1개가 무조건 포함되므로 1이 들어간다. 2. ACAYKP 와 CA 비교 -> 위와 마찬가지 방식으로 적어주고 문자열에 CA가 포함된 순간 값이 1개 증가한다. . . . 3. ACAYKP 와 CAPCAK 비교 -> 두 문자열에서 가장 긴 수열의 길이는 ACAK로 4가 출력값이 된다. 해당 방식을..

문제: 1대 있는 ATM에서 N명의 사람이 줄을 서있고 각 사람이 돈을 인출하는데 걸리는 시간이 다르게 주어지기 때문에 줄을 서는 순서에 따라 전체 인원이 돈을 인출하는 시간의 합이 달라지게 된다. 사람수와 각 사람이 인출하는데 걸리는 시간이 주어질 때 전체 사람이 인출하는데 드는 시간의 합 중 최솟값을 출력하는 문제이다. 해설: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class Main { public static void main(String[] args) t..

문제: 지민이가 찾은 M*N의 체스판을 8*8의 형태인 판으로 잘라서 체스판을 만든다고 한다. 체스판이기 때문에 흰칸과 검은칸이 번갈아서 칠해져 있어야 하고 8*8의 크기는 M*N안에서 어느 곳이든 크기가 맞다면 자를 수 있다. 해설 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class Main { public static boolean[][] arr; public static int min = 64; public static void main(String[] arg..

앞선 2745번 문제와 반대인 문제이다. 10진법 수를 입력받고 이를 입력받은B진법의 수로 변환하는 문제 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringT..

10진법을 넘어가는 수 N이 주어진다. 10진법을 넘어가기 때문에 알파벳 대문자를 사용해서 N을 표시한다. B는 진법을 나타낸다. 실행과정 1. 문자열 N과 실수 B 제곱근을 표현해 줄 tmp변수, 총 합을 구해줄 sum 변수 선언 2. for문 안에서 문자열 N을 char타입으로 형변환 한다.(아스키 코드값 활용을 위해) ※ 주의할 점: for문 안에 조건식은 for(int i=n.length() - 1; i>=0; i--) 이렇게 되는데 진법 변환시 제일 마지막 글자 부터 적용하기 때문 ex) 5*2^3 + 5*2^2 + 5*2^1 + 5*2^0 =0; i--){ //10진법으로 변환해주기 위해 char형으로 변환 char c = n.charAt(i); // 입력받은 문자가 해당 조건에 있다면 if(..

간단한 문제이지만 머리가 안돌아가는건지 문제 이해하는데 한참걸렸다. 알파벳 순서대로 입력받은 알파벳이 몇번째에 나왔는지 출력해주면 되는 문제 아스키 코드를 이용하면 바로 풀 수 있다. import java.io.IOException; import java.util.Scanner; public class Main { public static void main(String[] args) throws IOException { Scanner sc = new Scanner(System.in); //26개 알파벳을 담을 배열 int[] arr = new int[26]; for (int i=0; i 입력받은 글자에 포함되어 있지 않다면 -1을 출력하기 때문 arr[i] = -1; } String s = sc.next..

여러가지 풀이법이 있었다. import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); //나누는 수가 42이기때문에 크기가 42인 배열 생성 boolean[] arr = new boolean[42]; int count = 0; //10개의 수 입력 받기 for(int i = 0; i < 10; i++){ //입력받은 숫자 % 42 = 나머지일때 나머지 값이 같다면 동일한 배열을 초기화 하는 연산이 된다. arr[(sc.nextInt()) % 42] = true; } for (boolean value : arr){ value에 배열값을 담고 tr..