본문 바로가기
코딩수업/AWS 클라우드환경 네이티브

7/21 자바(Java) break과 continue, 반복문 연습 문제

by 인생즐겜러 2022. 7. 21.
728x90
반응형

AWS 클라우드환경 네이티브 수업 48일차

 

 

 

진행

1. break과 continue

2. 여태 배운 걸로 연습 문제 품

 

 

 

 

 

요약

1. break과 continue

 

 

 

 

 


 

 

 

 

 

break과 continue

 

break은 만나게 되면 그 구문의  반복을 바로 멈추고 반복 구문을 튀어나간다.

continue는 반복은 멈추지 않는다.

continue문 아래에 있는 실행해야 하는 문장들을 건너 뛰고, 다음 반복을 시작한다. 

 

 

 

 

 

아래는 break의 예시이다.

 

package LectureExam;

public class RepeatExample {

	public static void main(String[] args) {

		int i = 0;
		
		while(true) {
			
			i++;

			if(i>20) {
				break;		// i가 21이 되는 순간, while 문 자체를 나간다.
			}
		
			if(i%2==0) {
			System.out.println(i + " 다!!! 짝수니까 내려갈 거 바로 요로케! ");
			}	
		}
	}
}



결과
2 다!!! 짝수니까 내려갈 거 바로 요로케! 
4 다!!! 짝수니까 내려갈 거 바로 요로케! 
6 다!!! 짝수니까 내려갈 거 바로 요로케! 
8 다!!! 짝수니까 내려갈 거 바로 요로케! 
10 다!!! 짝수니까 내려갈 거 바로 요로케! 
12 다!!! 짝수니까 내려갈 거 바로 요로케! 
14 다!!! 짝수니까 내려갈 거 바로 요로케! 
16 다!!! 짝수니까 내려갈 거 바로 요로케! 
18 다!!! 짝수니까 내려갈 거 바로 요로케! 
20 다!!! 짝수니까 내려갈 거 바로 요로케!

 

 

 

 

 

아래는 continue의 예시이다.

 

package LectureExam;

public class RepeatExample {

	public static void main(String[] args) {

		int i = 0;
		
		while(true) {
			
			i++;

			if(i>20) {
				break;		// i가 21이 되는 순간, while 문 자체를 나간다.
			}
						
			if(i%2==1) { 
				continue;
              		  // i가 홀수 일 때 아래의 구문을 안하고 위로 다시 올라간다.
			}
			
			System.out.println( i + " 다!!! 짝수니까 내려갈 거 바로 요로케! ");
	
		}
	}
}



결과
2 다!!! 짝수니까 내려갈 거 바로 요로케! 
4 다!!! 짝수니까 내려갈 거 바로 요로케! 
6 다!!! 짝수니까 내려갈 거 바로 요로케! 
8 다!!! 짝수니까 내려갈 거 바로 요로케! 
10 다!!! 짝수니까 내려갈 거 바로 요로케! 
12 다!!! 짝수니까 내려갈 거 바로 요로케! 
14 다!!! 짝수니까 내려갈 거 바로 요로케! 
16 다!!! 짝수니까 내려갈 거 바로 요로케! 
18 다!!! 짝수니까 내려갈 거 바로 요로케! 
20 다!!! 짝수니까 내려갈 거 바로 요로케!

 

 

 

 

 


 

 

 

 

 

연습 문제

(문제풀이는 바로 아래에)

 

문제1. 1~20까지의 숫자 중 2,3의 배수만 빼고 합한 값을 구해라.

           ( for - continue를 사용해서 / while - break 를 사용해서 코딩해라. )

 

문제2. 1 + ( 1+2 ) + ( 1+2+3 ) + ... + ( 1+2+3+4+5+6+7+8+9+10 ) 의 값은?

           ( do ... while 을 사용해서 변수 3개 / for 문을 사용해서 변수 2개 코딩해라. )

 

문제3. 1 + ( -2 ) + 3 + ( -4 ) + .......... 이렇게 더할 때, 몇까지 더해야 100이상이 되는가?

           ( for 문을 사용해서 / while문을 사용해서 코딩해라. )

 

문제4. 2개의 주사위를 던져 눈의 합이 6이 되는 모든 경우의 수를 출력해라.

 

문제5. 방정식 2x + 4y = 10 의 해를 구하시오. (정수 x, y의 범위 : 0 <= x,y <= 10)

 

문제6. 13579의 각 자릿수를 더하면 얼마인가?

          ( 앞에서부터 더하는 방식 / 뒤에서부터 더하는 방식으로 코딩해라. )

 

문제7. 피보나치 수열 10번째의 수는 무엇일까? 1, 1, 2, 3, 5, .....

 

문제8. 13579가 회문수 (숫자를 거꾸로 읽어도 앞으로 읽은 것과 같은 수, 12321, 11233211... ) 인지 판별 하라.

          ( 각 자릿수끼리 매칭해서 알아내는 방식 / 숫자 자체를 뒤집어서 비교하는 방식 으로 코딩해라. )

 

 

 

 

 


 

 

 

 

 

문제 풀이

 

문제1-1 답.

package LectureExam;

public class exercise1 {

	public static void main(String[] args) {
		
		int i ;
		int sum = 0 ;		

		
		for( i = 1; i<21 ; i++) {
			
			if(i%2 == 0 || i%3 == 0) {
				continue;
			}
			
			sum += i;
			
		}
		
		System.out.println(sum);
	}	
}



결과
73

 

 

문제1-2 답.

package LectureExam;

public class exercise1 {

	public static void main(String[] args) {
		
		int i = 0;
		int sum = 0 ;		

		
		while (true) {

			if(i>20) {
				break;
			}

			i++;

			if(i%2 == 0 || i%3 == 0) {
				continue;
			}
			
			sum += i;		
			
		}
		
		System.out.println(sum);
    }	
}

 

 

 

문제2-1 답.

package LectureExam;

public class exercise2 {

	public static void main(String[] args) {

		
		int i = 1 ;
		int j = 0 ; 
		int sum = 0 ;
			
			do {

				j += i;
				sum += j ;
				i ++;
				
				System.out.println(i);
				System.out.println(j);
				
			} while(i<11);
		
		System.out.println(sum);
		
	}
}



결과
220

 

 

문제2-2 답.

package LectureExam;

public class exercise2 {

	public static void main(String[] args) {

		
		int i = 0 ;
		int sum = 0 ;
		

		
		for(i = 0 ; i<11 ; i++) {			
			 
			sum = sum + i*(i+1)/2;
            // 응~ 변수 부족~ 계차수열~ ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
            // 진성 프로그램으로만 만들면 님은 천재ㅇㅇ
							
		}

		System.out.println(sum);
		
	}
}

 

 

 

문제3-1 답.

package LectureExam;

public class exercise1 {

	public static void main(String[] args) {
		
		int i = 0 ;
		int sum = 0 ;		
		
		for(sum = 0 ; sum<100 ; sum = sum) {
					
			if(i%2 == 1) {				
					sum += i ;
					i++;
					continue;
			} else {
					sum -= i;
					i++;
					continue;
			}	
		}	
		
		System.out.println("합은 " + sum);
		System.out.println("이 때의 i는 " + (i-1));
		
	}
}



결과
합은 100
이 때의 i는 199

 

 

문제3-2 답.

package LectureExam;

public class exercise1 {

	public static void main(String[] args) {
		
		int i = 0 ;
		int sum = 0 ;		
		
		while(sum<=100) {
				
			if(i%2==0) {
				sum -= i;				
			} else {
				sum += i;		
			}
			
			if(100<=sum) {
				break;
			}
			
			i++;
			
		}
	
		
		System.out.println("합은 " + sum);
		System.out.println("이 때의 i는 " + i);
		
	}
}

 

 

 

문제4 답.

package LectureExam;

public class exercise1 {

	public static void main(String[] args) {
		
		int i , j;
		int sum = 0 ;		

		
		for (i=1 ; i<7 ; i++) {
			
			for(j=1 ; j<7 ; j++) {
				
				sum = i+j;
				
				if(sum == 6) {
					System.out.println("(" + i + "," + j + ")");
				}
				
			}			
		}
	}
}



결과
(1,5)
(2,4)
(3,3)
(4,2)
(5,1)

 

 

 

문제5 답.

package LectureExam;

public class exercise1 {

	public static void main(String[] args) {
		
		int i , j;
		
		for (i=0 ; i<11 ; i++) {
			
			for(j=0 ; j<11 ; j++) {
							
				if(2*i + 4*j == 10) {
					System.out.println("(" + i + "," + j + ")");
				}
				
			}			
		}
	}
}



결과
(1,2)
(3,1)
(5,0)

 

 

 

문제6-1 답.

package LectureExam;

public class exercise1 {

	public static void main(String[] args) {
		
		int i ;
		int j = 4;
		int num = 13579;
		int sum = 0 ;
			
		while(j>=0) {			
			
			i = (int)(num / Math.pow(10, j)) ;	// Math.pow( 밑 , 지수 )
			num -= i * Math.pow(10, j) ;
			
			sum += i;
			
			j-- ;			
			
		}
		
		System.out.println(sum);
		
	}
}



결과
25

 

거듭 제곱 함수 : Math.pow( 밑 , 지수 )를 사용하면 쉽게 풀 수 있다. (역순기준)

더 쉬운 방법. 아래의 정순 방향이 더 쉽게 풀린다.

 

문제6-2 답.

package LectureExam;

public class exercise1 {

	public static void main(String[] args) {
		
		int num = 13579;
		int sum = 0 ;
			
		while(num>0) {			
			
			sum += num%10 ;
			num = num/10;			
		}
		
		System.out.println(sum);
		
	}
}

 

 

 

아래 7번은 내가 푼 답이랑 더 쉬운 답.

 

문제7 답.

package LectureExam;

public class exercise1 {

	public static void main(String[] args) {
		
		int i ;
		int sum = 1 ;
		int presum = 1;
			
		for(i=0; i<10 ; i++) {			

			if(i == 0 ) {
				sum += 0;
				presum = sum;
				continue;
			}
			
			presum = sum - presum;			
			sum += presum ;			
			
		}
		
		System.out.println(sum);
		
	}
}



결과
55

 

문제7 쉬운 답.

package LectureExam;

public class exercise1 {

	public static void main(String[] args) {
		
		int num1 = 1;
		int num2 = 1;
		int num3 ;
			
		for(int i=0; i<8 ; i++) {			

			
			num3 = num1 + num2;
			
			num1 = num2;
			num2 = num3;

			System.out.println(num3);			
			
		}
		
	}
}

 

 

 

문제8-1 답.

package LectureExam;

public class exercise1 {

	public static void main(String[] args) {
		
		int num = 1223221;
		int checknum = 0;
		int right = 0;
		int left = 0;
			
		for(int i = 1; true ; i ++ ) {

			right = num % 10 ; 
			checknum = num ;
			int deci = 0;				

			
			while(num > 0) {
				
				deci++;
				left = num % 10 ;
				num = (int)(num/10);
					
			}

			System.out.println(right);			
			System.out.println(left);
			System.out.println(deci);
			
			
			if(right == left) {
				System.out.println(i + "번째 매치입니다.");
				checknum = checknum - left*(int)(Math.pow(10, deci-1));
				num = checknum/10 ;
				System.out.println(num);
				
				if((num-10) < 0) {
					System.out.println( i + "번째 매치에서 끝입니다. 회문자입니다.");				
					break;
				}
				
				continue;
				
			} else if ( i == 1 || right != left ) {
				System.out.println("회문자가 아닙니다.");
				break;
			} 
			
		}					
	}
}



결과
1
1
7
1번째 매치입니다.
22322
2
2
5
2번째 매치입니다.
232
2
2
3
3번째 매치입니다.
3
3번째 매치에서 끝입니다. 회문자입니다.

 

문제8-2 답.

package LectureExam;

public class exercise2 {

	public static void main(String[] args) {

		int num = 13579;		
		int origin = num ;
		int rev = 0 ;
		
		
		while(num>0) {
			rev = rev*10 + num%10 ;
			num = num/10;
		}
		
		
		if(origin == rev) {
			System.out.println("회문수 지비.");
		}else {
			System.out.println("회문수 아니지비.");
		}
		
	}

}



결과
회문수 아니지비.

 

 

728x90
반응형

댓글