알고리즘 8

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

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

[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