티스토리 뷰

728x90

자바에서 while 문을 사용해서 1~150 까지의 수중 십의자리(10)와 일의 자리(1)가 같은 수 출력 하시오.

결과는 11, 22, 33, 44, 55, 66, .... 122, 133, 144

 

위 문제를 구글신에 물어 보니 생각보다 저런 문제가 나오지를 않았다. 찾기가 쉽지 않았다. 그래서 직접 만들어 본다. 

 

123 만약 123 이라는 수가 있다면 

먼저 1의 자리를 구하기 위해서는 10을 나누어서 나오는 나머지 값을 코드로 나타내면 아래와 같고

int num = 123;
int one = num % 10;
System.out.println(one);

결과는 3이라는 숫자가 나올것 이고

10의 자릴 구하기 위해서는 100을 나누어서 나오는 나머지 값을 코드로 나타내면 아래와 같다.

int num = 123;
int ten = num % 100;
System.out.println(ten);

결과는 23이라는 수가 나온다. 근데 문제는 십의 자리를 구해서 1의 자리가 같은지를 비교를 해야 하기 떄문에 23이

나오면 안된다. 그래서 저 23이라고 나온 수에서 10을 나누어 주게 되면 10의 자리 한자리를 구할 수 있다.

코드로 나타내면

int num = 123;
int ten = (num % 100) / 10;
System.out.println(ten);

만약 100의 자리 1000의 자리들은 10의 자리 공식에서 0을 하나씩 더 추가를 하면 되는지 한번 해보길 바랍니다.

 

자 이제 공식은 다 구해 졌으니 150까지의 반복문을 사용을 해서 1의 자리와 10의 자리가 같은지를 비교 해서 같으면 출력을 해주면 된다. 먼저 150까지를 출력을 해보자.

(이 문제에서는 while을 사용 하라고 되어 있으니 while 로한다)

int i = 1;
while (i <= 150) {
	System.out.println(i);
	i++;
}

1~150 까지를 출력을 했다. 이제 저 while 문 괄호 안에 위에서 1의 자리와 10의 자리를 구하는 공식을 넣고

조건문으로 1의 자리수의 결과와 10의 자리수의 결과를 같은지만 비교해서 출력 해주면 끝이다.

while (i <= 150) {
	one = i % 10;
	ten = (i % 100)/10;
	if (one == ten) {
		System.out.println(i);
	}
	i++;
}

원하는 결과를 얻을 수 있다.

1~10까지는 무의미하니까 초기값을 10으로 시작을 해도 괜찮을거 같다.

코드를 조금 줄인 전체 코드는 다음과 같다.

누군가에게는 도움이 되길...

 

전체 코드

public class MainClass {
	public static void main(String[] args) {
		int i = 10;
		while (i++ < 150) {
			int one = i % 10;
			int ten = (i % 100)/10;
			if (one == ten) {
				System.out.println(i);
			}   // if
		}    // while
    }    // main
}    // class
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함