• Home
  • About
    • Ryureka Moment photo

      Ryureka

      Sin Prisa, Sin Pausa

    • About Me
    • Facebook
    • Github
    • Youtube
  • Projects
  • Posts
    • Posts
    • ProblemSolvings
    • Tags
    • Blog
    • TIL
    • Examples
  • ProblemSolving
    • ProblemSolving
    • BruteForce
    • DFS
    • DP
    • Optimization
  • FrontEnd
    • FrontEnd
    • HTML
  • BackEnd
    • BackEnd
    • Spring
    • Node.js
    • DataBase
      • MySQL
  • Programming
    • Programming
    • Java
    • Python
  • ComputerScience
    • DataStructure
    • Algorithm

[BOJ] 9095. 1, 2, 3 더하기

24 Jun 2019

Reading time ~1 minute

  • [BOJ]1, 2, 3 더하기
    • N중 for문을 사용한 1, 2, 3 더하기
    • 재귀함수로 구현한 1, 2, 3 더하기
    • 코드정리 및 count 계산을 전역변수로 처리

[BOJ]1, 2, 3 더하기

http://boj.kr/9095

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);			
		}
	}
}



BruteForceCombination Share