본문 바로가기

Algorithm76

[알고리즘] 최대공약수, 최소공배수 구하기 import java.util.*; public class Main { public static void main(String[] args) { int a = 8; int b = 6; //최대공약수 (유클리드호제법) System.out.println("최대공약수 : "+gcd(a,b)); //최소공배수 = 0이 아닌 두 수의 곱 / 최대공약수 System.out.println("최소공배수 : "+ (a * b) / gcd(a,b)); } //최대공약수 public static int gcd(int a, int b) { //a에 큰 값 위치 시킴 if(a < b) { int temp = a; a = b; b = temp; } //유클리드 호제법 while(b != 0) { int n = a % b; a =.. 2020. 8. 22.
[알고리즘] 각 자리 수의 합 구하기 import java.util.*; public class Main { public static void main(String[] args) { int num = 1234567; int result = 0; //num : 1234567 -> 123456 -> 12345 -> 1234 -> 123 -> 12 -> 1 while(num >= 10) { result += num % 10; num /= 10; } result += num; System.out.println(result); } num을 10으로 나눈 나머지 값을 결과값에 더한다. num을 10으로 나눈 몫을 새로운 num으로 대입한다. 결과적으로 1의 자리 수 -> 10의 자리 수 -> 100의 자리 수 .... 순서대로 수를 더하게 된다. 2020. 8. 22.
[알고리즘] 문자열 → int 형 변환 import java.util.*; public class Main { public static void main(String[] args) { String str = "12345"; int num = 0; int multi = 1; for(int i = str.length()-1;i>=0;i--) { num += (str.charAt(i) - 48) * multi; multi *= 10; } System.out.println(num); } multi라는 값을 두어 1의 자리 -> 10의 자리 -> 100의 자리 순으로 숫자를 구할 수 있게 곱해준다. 각 수들을 차례대로 결과값에 더한다. 최종적으로 5 -> 45 -> 345 -> 2345 -> 12345로 결과값이 변해간다. 2020. 8. 22.
[알고리즘] LCS (최장 공통 부분) 찾기 public class Main { public static void main(String[] args) { String x = "abcdedc"; String y = "bbbcec"; int c[][] = new int[x.length()][y.length()]; String lcs[][] = new String[x.length()][y.length()]; for(int i = 0;i< lcs.length;i++) for(int j = 0;j c[i][j-1]) { c[i][j] = c[i-1][j]; lcs[i][j] = lcs[i-1][j]; } else { c[i][j] = c[i][j-1]; lcs[i][j] = lcs[i][j-1]; } } } } System.out.println(c[x.le.. 2020. 8. 22.