개발일기

[JAVA] 앞뒤가 같은 10진수 만들기

삐삐들의 주인 2023. 1. 26. 22:34

문제:

10진수 2진수 8진수의 대칭수가 되는 수 중 10이상 최솟값을 구하여라

StringBuffer로 10진수, 2진수, 8진수의 reverse를 구해서 equals로 비교를 하였다

package AlQuiz;

public class Quiz01 {

	public static void main(String[] args) {
		
		int num = 11;

		while (true) {
		       //2진수
			StringBuffer sBuf = new StringBuffer();
			String numBinary = Integer.toBinaryString(num);
			StringBuffer bBack = sBuf.append(numBinary).reverse();
			String nbnb = bBack.toString();
			
                      //8진수
			StringBuffer sBuf2 = new StringBuffer();
			String numOct = Integer.toOctalString(num);
			StringBuffer octBack = sBuf2.append(numOct).reverse();
			String obob = octBack.toString();

			//10진수
			StringBuffer sBuf3 = new StringBuffer();
			String numString = Integer.toString(num);
			StringBuffer numBack = sBuf3.append(numString).reverse();
			String realnumB = numBack.toString();
			
			//2진수와 2진수reverse, 이게 true이면 true를 리턴
			if ((numBinary.equals(nbnb)) && (numOct.equals(obob)) && (numString.equals(realnumB))) {
				System.out.println("correct:" + num);
				break;

			} else {
                             //짝수는 끝이 0이 되는데 그러면 앞이 0이 되야 하는데 그것은 힘들어서
				num+= 2;
			}

		}

	}

}

StringBuffer를 3개 선언한 것은 append()를 썻더니 위에서 append()한 값이 그대로 붙어서 연장 되고 연장되어서 각각 따로 버퍼를 만들어줬다