목록Algorithm/BOJ (12)
스테코더
연산자 끼워넣기 14888 문제 풀이 전략 수의 개수(n), n개의 수, (n-1)개의 연산자 입력 sign[i] > 0일때 연산자 계산 & 재귀호출 → 재귀 호출 후 sign[i]++로 원상복구 6개의 수들이 재귀 호출로 연산이 끝나면 min,max값 계산 진행 순서 INPUT 6 1 2 3 4 5 6 2 1 1 1 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class no_14888 { public static int n; // n개의 수 public static int[] a; // 수열 public..
피보나치 수 5 10870 문제 풀이 전략 💡 fibo[1] = fibo[2] = 1; 과 같이 base case를 작성하면 0을 입력했을 때 런타임에러(ArrayIndexOfBound)가 발생함 코드 Dynamic Programming으로 풀었을 경우 (재귀보다 메모리 사용량 적음) import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(Syst..
최소, 최대 10818 문제 풀이 전략 입력 받을 정수의 개수(n)을 입력 받음 n개의 정수를 입력 받음(num[]) Math함수 사용하여 최대, 최소값 구함 코드 import java.util.Scanner; public class no_10818 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] num = new int[n]; for (int i = 0; i < num.length; i++) { num[i] = sc.nextInt(); } int min = num[0]; int max = num[0]; for (int i = 1; i < num.length; ..
약수 구하기 2501 문제 풀이 전략 num과 index를 입력 받음 1부터 num까지의 숫자 중 num과 나누었을 때 나머지가 0이면→ 약수 값 저장 count 값이 index와 동일하면 반복문을 빠져나옴 → count 값 증가 약수 값 출력 count 값과 index 값이 동일하면 저장한 약수 값 출력 그렇지 않다면 0 출력 (해당 약수 없음) 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class no_2501 { public static void main(String[] args) throws IOE..
최대공약수와 최소공배수 2609 문제 풀이 전략 두 수 (n1, n2)를 입력 받음 n1의 약수 중 큰 것부터 n2로 나누어지는 것을 찾음 → 가장 먼저 n2로 나눠지는 n1의 약수가 최대공약수 n1, n2 중 큰 수의 배수 중 작은 값부터 n1, n2 중 작은 값으로 나누었을 때 나머지가 0인 수를 찾음 → 최소공배수 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class no_2609 { public static void main(String[] args) throws IOException { Buffe..
소수 1312 문제 풀이 전략 💡 a / b를 나눈 결과인 소수를 배열로 바꾸면 index 에러 발생!!! (ex. 25 / 7의 결과 3.5714....는 배열로 모든 소수자리를 담을 수 없으므로 index 에러) 두 수(a, b)와 소수점 자리수(n)을 입력 받음 n -1번 반복 a를 b로 나눈 나머지에 10을 곱함 그 수를 다시 b로 나누어 나머지를 구함 위 과정을 반복하여 나온 결과에 10을 곱한 후 b로 나눈 몫을 구함 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class no_1312 { pub..
쉽게 푸는 문제 1292 문제 풀이 전략 💡 수열을 만들 때 구하고자 하는 범위까지의 수열만 생성하면 됨!! (범위가 3~7이면 7개만 생성하면 됨 → 1 2 2 3 3 3 4) 범위 (a, b)를 입력 받음 수열(arr)을 만듦 → 배열의 인덱스가 1001일 경우 중단 1 ~ b까지 1일 때 →1개의 index에 1 대입, 2일 때 2개의 index에 2 대입 ... b일 때 b개의 index에 b 대입 (구하고자 하는 범위의 제한 조건이 1000이기 때문) 범위 안의 수열의 합을 구함 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTok..
소수 찾기 1978 문제 풀이 전략 수의 개수(n)를 입력 받음 → 소수의 개수(count) = n으로 시작 소수일 경우 → count - 1 n이 1일 경우 2 ~ (n -1)까지 나누었을 때 나머지가 0인 것이 있을 경우 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class no_1978 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReade..