[알고리즘]/백준 85

백준 11005 자바 - 진법 변환2

문제 문제해결 - n과 b의 나머지 연산 결과를 stack에 담고, n을 b로 나누는 방식으로 진수 변환을 한다 - 출력할때 두자리수 결과는 영어 알파벳으로 치환한다 ex) num = 35 일때 num + 55 = 90 90의 아스키코드표는 'Z' import java.util.Scanner; import java.util.Stack; public class B11005 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); long n = sc.nextInt(); int b = sc.nextInt(); //0~35 범위에 있는 두자리 숫자가 나올 수 있으니 StringBuilder보다는 stack 사용 Stack s..

백준 17103 자바 - 골드바흐 파티션

문제 문제해결 - 에라토스테네스의 체로 입력 조건인 1,000,000까지의 소수를 구한다 - 입력받은 T번만큼 N/2씩 반복문을 돌면서 해당 숫자가 소수면서 N에서 소수를 뺀 값이 소수면 count를 1씩 증가시키면 된다 import java.util.Scanner; public class B17103 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); boolean[] sosu = new boolean[1000001]; sosu[0] = true; sosu[1] = true; for (int i = 2; i

백준 2089 자바 - -2진수

문제 문제해결 - 2진수를 구하는 것과 똑같이 구하되 나머지 연산은 -2로 하고 나누기 연산은 ceil을 통해 올림 연산을 한다 import java.util.Scanner; // -2진수 public class B2089 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); StringBuilder sb = new StringBuilder(); if (n==0) System.out.println(0); else { while (n!=1){ //기존 2진수 구하는 방법 // sb.append(n%2); // n /= 2; //-2진수 구하는 방법 sb.append(Math.ab..

백준 1212 자바 - 8진수 2진수

문제 문제해결 - 8진수의 경우 경우의 수가 8가지 밖에 안되기 때문에 switch문을 사용해서 각 자리수를 2진수로 변환하였다 - 맨앞 2자리가 0이 올수도 있기 때문에 0일 경우 삭제하는 로직을 추가하였다 import java.util.Scanner; public class B1212 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = sc.nextLine(); //8진수 -> 2진수 모든 경우의 수 구하기 StringBuilder sb = new StringBuilder(); for (int i = 0; i < str.length(); i++) { char c = str.charAt(i..

백준 1373 자바 - 2진수 8진수

문제 문제해결 - 2진수를 바로 8진수로 바꾸는 방법을 그대로 코드로 작성하였다 1. 자리수가 딱 3에 나누어 떨어지도록 0이나 00을 추가한다 2. 3자리씩 끊어서 0번째에는 2^0, 1번째에는 2^1, 2번째에는 2^2를 곱하고, 그 결과를 더한다 3. 각 계산 결과를 이어서 붙이면 8진수가 나온다 import java.util.Scanner; public class B1373 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = sc.nextLine(); // 3자리씩 끊을 수 있도록 자리수 맞추기 int size = str.length(); if (size%3==2) str = "0" ..

백준 17087 자바 - 숨바꼭질6

문제 문제해결 - 자신의 위치와 동생의 위치의 거리를 배열에 담는다 - 배열을 돌면서 모든 수의 최대공약수를 구하면 된다 import java.util.Scanner; public class B17087 { public static int gcd(int a, int b){ if (b==0) return a; return gcd(b, a%b); } public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int s = sc.nextInt(); int[] arr = new int[n]; for (int i = 0; i < n; i++) { int tmp = sc.nextInt(); arr..

백준 9613 자바 - GCD 합

문제 문제해결 - 중첩 반복문을 사용해서 모든 쌍의 gcd를 구한 후 결과를 더하면 된다 - 결과는 long에 담아야 한다 import java.util.Scanner; public class B9613 { public static int gcd(int a, int b){ if (b==0) return a; return gcd(b, a%b); } public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); for (int i = 0; i < n; i++) { int m = sc.nextInt(); int[] arr = new int[m]; for (int j = 0; j < m; j++)..

백준 2004 자바 - 조합 0의 개수

문제 문제해결 - 이 문제를 풀기 위해서는 공식을 알아야 한다 - n과m의 조합 = 2^(n - (n-m) - m) * 5^(n - (n-m) - m) - getFivePower, getTwoPower 메서드로 n, n-m, m의 5로 나눌 수 있는 개수와 2로 나눌 수 있는 개수를 구한다 - 그렇다면 조합의 2의 승수와 5의 승수를 구할 수 있는데 매칭되는 개수만큼 0이 나온다 import java.util.Scanner; public class B2004 { //num에서 5를 몇개까지 나눌 수 있는지 구하기 public static int getFivePower(int num){ int cnt = 0; while (num >= 5){ cnt += num/5; num /= 5; } return cnt..

백준 1676 자바 - 팩토리얼 0의 개수

문제 문제해결 - 500!은 long으로도 담을 수 없기 때문에 재귀함수로는 구할 수 없다 - 자세한 설명 참고 https://st-lab.tistory.com/165 [백준] 1676번 : 팩토리얼 0의 개수 - JAVA [자바] www.acmicpc.net/problem/1676 1676번: 팩토리얼 0의 개수 N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오. www.acmicpc.net 문제 정말 정말 쉬운 문제다. 알고리 st-lab.tistory.com import java.util.Scanner; public class B1676 { public static void main(String[] args) { Scanner sc = new Scann..