본문 바로가기

알고리즘 문제

오늘의 알고리즘 문제(09.05)

문제 1:

상수

 

문제 설명:

입력 값으로 정수 n, m이 주어진다

이 숫자를 뒤집었을 때 둘 중 큰 수를 출력

 

코드:

package Hansu;

public class hansu {
	public static void main(String[] args) {
		
		int n = 734;
		int m = 893;
	
		
		String stN = Integer.toString(n);
		String stM = Integer.toString(m);
		
		int reverseN = reverseNum(stN);
		int reverseM = reverseNum(stM);
		
		if(reverseN > reverseM) {
			System.out.println(reverseN);
		}else {
			System.out.println(reverseM);
		}
	}

	
	
	public static int reverseNum(String stNum) {
		
		String reverse = "";
		for(int i =stNum.length() - 1; i >= 0; i--) {
			reverse += stNum.charAt(i);
		}
		
		return Integer.parseInt(reverse);
		
	}
}

 

 

문제 2:

10진수 2 ~ 16진수로 변환

 

문제 설명:
입력값으로 10진수와, n이 주어진다

10진수를 n진수로 변환하고 출력

 

코드:(2 ~ 16진수까지 변환)

package su;

public class su_02 {
	
	public static void main(String[] args) {
		int num = 200;
		int n = 16;
		
		
		char[] ch = new char[100];
		
		int i = 0;
		while(num > 0) {
			int tmp = num % n;
			
			if(tmp >= 10 && tmp <= 15) {
				ch[i] = (char) ('A' + (tmp - 10));
			}else {
				ch[i] = (char) ('0' + tmp);
			}
			
			num /= n;
			i++;
		}
		
		for(;i >=0; i--) {
			System.out.print(ch[i]);
		}
	}

}

 

 

코드:(2 ~ 8진수까지 변환)

package su;

import java.util.ArrayList;
import java.util.List;

public class su {
	
	public static void main(String[] args) {
		int z = 200;
		int n = 16;
		
		List<Integer> List = new ArrayList<>();
		
		while(z > 0) {
			List.add(z % n);
			z /= n;
		}
		
		int mux = 1;
		int d = 0;
			
		for(int i = 0; i < List.size(); i++) {
			d += List.get(i) * mux;
			mux *= 10;
		}
	
		
		System.out.println(d);
	}

}