[BOJ] 9095. 1, 2, 3 더하기
24 Jun 2019
Reading time ~1 minute
[BOJ]1, 2, 3 더하기
9명의 난쟁이 중 진짜 난쟁이 7명의 키의 합이 100일 때 일곱난쟁이를 찾아 그 키를 각각 출력하는 문제
N중 for문을 사용한 1, 2, 3 더하기
http://codeplus.codes/006055b814014702aa7abeded348e307
재귀함수로 구현한 1, 2, 3 더하기
재귀함수를 int형으로 하여 전역변수 없이 count 처리
//import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int T=sc.nextInt();
// int arr[]=new int[3];
for (int t = 0; t < T; t++) {
int N=sc.nextInt();
int cnt=go(0,0,N);
// int cnt=go(0,0,arr,N);
System.out.println(cnt);
}
}
public static int go(int index,int sum,int N) {
// public static int go(int index,int sum,int arr[],int N) {
if(index==N) {
if(sum==N) {
// System.out.println(Arrays.toString(arr));
return 1;
}
return 0;
}
if(sum==N) {
// System.out.println(Arrays.toString(arr));
return 1;
}
int count=0;
for (int i = 1; i <= 3; i++) {
// arr[index]=i;
count+=go(index+1,sum+i,N); //
// count+=go(index+1,sum+i,arr,N);
// arr[index]=0;
}
return count;
}
}
코드정리 및 count 계산을 전역변수로 처리
import java.util.Scanner;
public class Main {
static int cnt;
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int T=sc.nextInt();
for (int t = 0; t < T; t++) {
cnt=0;
int n=sc.nextInt();
go(n,0);
System.out.println(cnt);
}
}
public static void go(int n,int sum) {
if(sum>n) {
return;
}
else if(sum==n) {
cnt++;
}
for (int i = 1; i <= 3; i++) {
go(n,sum+i);
}
}
}