피보나치 & 숫자곱셈 - 코딩 문제 풀이

728x90

피보나치 수열

package CodingTestLv1;
public class Fibonachi {
	public static void main(String[] args) {
//		예) 0, 1, 1, 2, 3, 5, 8, 13 21 34 55
//피보나치 수열이란, 첫 번째 항의 값이 0이고 두 번째 항의 값이 1일 때
//이후의 항들은 이전의 두 항을 더한 값으로 이루어지는 수열을 말한다.
		int count = 10;
		for(int i = 0; i<count; i++) {
			System.out.println(fibo(i));
		}
	}
	public static int fibo(int a) {
		if(a<2)
			return a;
		else
			return fibo(a-2) + fibo(a-1);
	}
}

 


숫자 곱셈

예시:

// 13 = 1 * 3 = 3
// 14 = 1 * 4 = 4
// 15 = 1 * 5 = 5
//
// 그러므로, 이 경우의 답은 3+4+5 = 12

 

코드 설명:

  1. String Array에 곱할 숫자 개수를 입력하고 str[i]에 array 숫자만큼 10부터 시작하는 int value를 입력한다.
  2. 받은 입력값을 String list에 받은 후에 그 리스트를 char.array()를 사용하여 tmp char array로 받아온다
  3. 다시 char L이라는 변수에 tmp array의 값을 하나씩 저장한 후에
  4. 위의 mul이라는 인트값 1에 저장된 값을 곱한다.
    1. char 값 그대로 곱하면 정수화된 char 값이 곱해지므로 꼭 get.NumericValue를 쓰던지 - '0'을 해줘야 함 
  5. 곱한 값을 result에 누적 더하고 곱셈되서 변한 mul값을 그대로 두번째 char L의 값에 곱하여 result에 누적 더하면
  6. 두자리 수의 int 값을 서로 곱한 값이 됨
  7. 이 과정을 모든 저장된 String값 숫자에 적용하여 예시해결 완료
package CodingTestLv1;
import java.util.ArrayList;
import java.util.Arrays;
public class NumberMultiply {
	
	public static void main(String[] args) {

		String[] str = new String [10];
		for(int i = 0; i<str.length; i++) {
			str[i] = ""+(i+20);
		}
		int result = 0;
		for(String list : str) {
			char[] tmp = list.toCharArray();
			int mul = 1	;
//	연산이 2개 되고 다시 돌아가면서 전값을 가지므로다음 값에 곱해지는 것과 동일함
//	값을 곱한 후에 연산이 끝나면서 1로 돌아가기 때문에 다시 두번째 자리를 가진 값과 동일한 값을 가지고
// 	첫번째 자리로 곱해줄 수 있음
			for(char L : tmp) {
				mul*=Character.getNumericValue(L);
			}
			result += mul;
		}
		System.out.println("\nresult: " + result);
	}
}

 

728x90