본문 바로가기
알고리즘/수학 퍼즐

[수학 퍼즐 / java] 01.앞뒤가 같은 10진수 만들기

by drCode 2021. 3. 23.
728x90
반응형

 

안녕하세요.

이 카테고리의 게시글은 프로그래머의 뇌를 단련하는 수학퍼즐 책을 풀어볼 겁니다.

첫번째 문제부터 가보겠습니다.

 

앞뒤가 같아 거꾸로 읽어도 같은 수를 '대칭수' 또는 '거울수'라고 한다.

예를 들면 '123454321'과 같은 수를 의미한다.

문제

10진수, 2진수, 8진수 그 어느 것으로 표현하여도 대칭수가 되는 수 중,

 

10진수에서 10이상인 최솟값을 구해보시오.

예) 9 (10진수) = 1001(2진수) = 11(8진수)

※ 위의 예시는 10진수에서 10미만이므로 제외

 

package equalFtoB;

public class EqaulFtoB {
	public static void main(String[] args) {
		int init = 10;

		String binStr, octStr, decStr;
		String binRev, octRev, decRev;

		do {
			binRev = octRev = decRev = "";
			binStr = Integer.toBinaryString(init);
			octStr = Integer.toOctalString(init);
			decStr = Integer.toString(init);

			for (int i = binStr.length() - 1; i >= 0; i--) {
				binRev += binStr.charAt(i);
			}

			for (int i = octStr.length() - 1; i >= 0; i--) {
				octRev += octStr.charAt(i);
			}

			for (int i = decStr.length() - 1; i >= 0; i--) {
				decRev += decStr.charAt(i);
			}

			init++;
			if (binStr.equals(binRev) && octStr.equals(octRev) && decStr.equals(decRev))
				break;
		} while (true);

		System.out.println("앞, 뒤가 동시에 똑같아지는 2진수, 8진수, 10진수의 값");
		System.out.println("2진수 : " + binStr + ", 8진수 : " + octStr + ", 10진수 : " + decStr);
	}
}

 

정답 :

10진수 : 585

2진수 : 1001001001

8진수 : 1111

728x90
반응형

댓글