전체 글 51

[최대공약수] 유클리드 호제법

Q. 두 수의 최대공약수와 최소공배수를 구하여라. 1. 최대공약수 구하는 법 유클리드 호제법 (유클리드 알고리즘) 이론 A와 B라는 값의 최대 공약수를 구하고 싶다 가정 (단, A > B) 이때 A를 B로 나눈다고 가정하면, A = B * Q + R이다. 최대 공약수를 G라고 하였을 때 아래와 같이 수식을 나타낼 수 있다. (a * G == A, b * G == B) a * G = b * G * Q + R 위 수식을 R의 입장으로 정리해보자 R = G * (a - b * Q) 즉, R도 최대 공약수 G를 약수로 갖게 되니 B와 R의 최대 공약수와 A와 B의 최대 공약수는 동일하다. 유클리드 호제법 정리 1. 큰 수를 작은 수로 나눈다. 2. 나누는 수를 나머지로 계속 나눈다. 3. 나머지가 0이 나오면 ..

알고리즘 2023.07.18

SQL 기본 문법 정리

Column : 테이블 상에서 단일 종류의 데이터. Ex) Member 테이블에서 name, phone 등등 Row : 테이블의 컬럼들의 값의 조합 Ex) Member 테이블에서 한 회원의 관련한 정보는 한 Row가 될 수 있다. PK : 행을 구분할 수 있게 하는 컬럼 Ex) Member 테이블의 Mno (회원번호) FK : 다른 테이블의 PK 시퀀스 : 자동으로 고유한 숫자값을 생성해주며 주로 기본 키 값을 생성하기 위해 사용 인덱스 : 쿼리 속도를 향상 (빨리 찾을 수 있게 정렬되어 있다) 스키마 : 객체의 집합으로서 테이블의 소유자를 의미 SQL 명령어의 기본부류 테이블에 새로운 행을 입력,기존의 행을 수정,데이터 삭제 등 데이터 조작에 관한 명령어 Select (R) : 얘는 DML 아니다 In..

DB 2023.06.21

자료구조 Collection - List, Set, Map

1. Collection 자바에서 컬렉션이란 데이터의 집합, 그룹을 의미한다. JCF(Java Collections Framework)는 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합을 의미한다. 주요구현체 List, Set, Map 2. List 저장공간이 필요에 의해 자동으로 늘어난다. 입력순서 유지 O, 데이터의 중복 허용 O ArrayList - 단방향 포인터 구조 - 데이터 순차적 접근 (조회에 용이하다) LinkedList - 양방향 포인터 구조 - 데이터 삽입, 삭제가 빠르다 - 스택, 큐, 양방향 큐 등을 만들기 위한 용도로 쓰인다. - Iterator를 사용한다. Iterator : 추출 전용 인터페이스 데이터를 추출하기 위한 데이터 임시 저장공간..

JAVA 2023.06.02

[Array(1,2차원 배열)] 큰 수 출력하기 & 보이는 학생 & 가위바위보

Q.N개의 정수를 입력받아, 자신의 바로 앞 수보다 큰 수만 출력하는 프로그램 단, 첫번째 수는 무조건 출력한다. Class Main { public ArrayList solution(int n, int[] arr){ ArrayList answer = new ArrayList(); answer.add(arr[0]); for(int i=1; iarr[i-1]) { answer.add(arr[i]); } } return answer; } public static void main(String[] args){ Main T = new Main(); Scanner kb = new Scanner(System.in); int n = kb.nextInt(); int[] arr = new int[n]; for(int i..

알고리즘 2023.03.23

[문자열] 문자열 압축 & 암호(replace(), parseInt(string,2))

Q. 알파벳 대문자로 이루어진 문자열을 입력받아 같은 문자가 연속으로 반복되는 경우 반복되는 문자 바로 오른쪽에 반복 횟수를 표기하시오. 단, 반복횟수가 1인 경우 생략한다. Class Main { public int solution(String str){ String answer = ""; str = str+" "; int cnt = 1; for(int i=0; i1) { answer += String.valueOf(cnt); cnt = 1; } } } return answer; } public static void main(String[] args){ Main T = new Main(); Scanner kb = new Scanner(System.in); String str = kb.next(); Sy..

알고리즘 2023.03.23

[문자열] 단어 뒤집기(StringBuilder 혹은 직접뒤집기) & 특정 문자 뒤집기

Q.N개의 단어가 주어지면 각 단어를 뒤집어 출력하는 프로그램을 작성하라 Class Main { public ArrayList solution(int n, String[] str){ ArratList answer = new ArratList(); for(String x : str) { String tmp = new StringBuilder(x).reverse().toString(); answer.add(tmp); } return answer; } public static void main(String[] args){ Main T = new Main(); Scanner kb = new Scanner(System.in); int n = kb.nextInt(); String[] str = new String[..

알고리즘 2023.03.22

[문자열] 문자 찾기 & 대소문자 변환 & 문장 속 단어찾기(indexOf(), substring())

Q. 해당 특정문자가 입력받은 문자열에 몇 개 존재하는지 알아내시오. 대소문자를 구분하지 않는다. Class Main { public int solution(String str, char t){ int answer = 0; str = str.toUpperCase(); // 대소문자를 구분하지 않음. 모두 대문자가 된다. t = Character.toUpperCase(t); //대문자가 된다. /*for(int i=0; i m) { answer = str; } return answer; } public static void main(String[] args){ Main T = new Main(); Scanner kb = new Scanner(System.in); String str = kb.nextLine..

알고리즘 2023.03.22