본문 바로가기

알고리즘 문제

오늘 알고리즘 문제 (09.10)

문제 1:
숫자 추출 재귀

 

문제 설명:
정수 n이 주어진다.

재귀를 사용해 n의 높은 수부터 출력

 

코드:

package number_zeg;

public class number {
	
	
	
	public static void main(String[] args) {
		
		int n = 2312;
		number(n);
	}
	
	
	public static void number(int n) {
				if(n/10 == 0) {
					System.out.println(n);
					return;
				}
				
				number(n/10);
				System.out.println(n % 10);
		
	}
	
	

}

 

문제 2:

2진수 변환 재귀

 

문제 설명:
10진수 n이 주어진다.

재귀를 사용해 n을 2진수로 변환 후 출력

 

코드:

package jinsu_ze;

public class jinsu {
	
	public static void main(String[] args) {
		
		int n  = 17;
		su(n);
		
	}
	
	public static void su(int n) {
		if(n == 0) {
			return;
		}
		
		su(n / 2);
		System.out.print(n % 2);
		
		
	}

}

 

 

문제 3:

치킨 쿠폰

 

문제 설명:

강민이는 치킨 한 마리를 주문할 수 있는 치킨 쿠폰을 n장 가지고 있다.

 이 치킨집에서는 치킨을 한마리 주문할 때마다 도장을 하나씩 찍어 주는데,

도장을 k개 모으면 치킨 쿠폰 한 장으로 교환할 수 있다.

강민이가 지금 갖고 있는 치킨 쿠폰으로 치킨을 최대 몇 마리나 먹을 수 있는지 구하여라,

단 치킨을 주문하기 위해서는 반드시 치킨 쿠폰을 갖고 있어야 한다.

 

내가 푼 코드 :

package chicken;

public class chicken {
	
	private static int coupon = 0;
	private static int chickenCount = 0;
	
	public static void main(String[] args) {
		
		//치킨 한마리를 교환할 수 있는 쿠폰
		int n = 4;
		//도장을 k개 모으면 쿠폰 하나
		int k = 3;
		
		chicken(n,k);
		
		System.out.println(chickenCount);
		
	}
	
	
	public static void chicken(int n, int k) {
		if(n == 0)
			return;
		
		n -= 1;
		chickenCount++;
		coupon++;
		if(coupon == k) {
			n += 1;
			coupon = 0;
		}
		
		chicken(n,k);
	}

}

 

 

 

찾아 본 코드 :

package chicken;

public class chicken_02 {
	
	
	public static void main(String[] args) {
		int n = 4;
		int k = 3;
		
		int coupon = n;
		
		chicken(coupon,0,k,0);
		
		
	}
	
	public static void chicken(int coupon, int stamp, int k, int ans) {
		if(coupon > 0) {
			coupon--;
			stamp++;
			ans++;
			chicken(coupon, stamp, k, ans);
			return;
		}else if(stamp > 0){
			if(stamp/k > 0) {
				stamp -= k;
				coupon++;
				chicken(coupon,stamp,k,ans);
			}
			
		}
		
		
		if(coupon == 0 && stamp/k == 0) {
			System.out.println(ans);
		}
		
		
		
	}

}

'알고리즘 문제' 카테고리의 다른 글

LeetCode (Java) 문제  (0) 2024.09.30
백준 알고리즘 문제 (Java) 09.20  (0) 2024.09.20
오늘 알고리즘(09.09)  (0) 2024.09.09
오늘 알고리즘 문제(09.06)  (0) 2024.09.06
오늘의 알고리즘 문제(09.05)  (0) 2024.09.05