유난스런 개발 기록

[JAVA] Day-7 _ 중첩 반복문 본문

개념정리/JAVA

[JAVA] Day-7 _ 중첩 반복문

yourhwan 2023. 1. 18. 21:09

day-7

반복문


 

중첩반복문이란? 

  • 반복문  안에 또 다른 반복문을 작성하는 것을 말한다.
  • 대표적인 예제로 구구단이 있다.

사실 중첩반복문은 for문을 이해했다면 크게 어렵지 않다.

오늘은 구구단을 네단씩 끊어서 출력하는 문제를 풀고 마무리하겠다.

System.out.println("=== 구구단 4단씩 끊기 ===");
		
		for(int dan=2; dan<10; dan+=4) { // 4개씩 끊기
										 // 2단 부터 시작해서 5단 까지 하는 것,
										 // 6단 부터 시작해서 9단 까지 하는 것.
	
			for(int jul=1; jul<=9; jul++) { // jul은 단마다 곱해지는 수이다.
				
				for(int i=dan; i<(dan+4); i++) {
					System.out.print(i+"*"+jul+"="+(i*jul)+"\t");
				}// end of for----------------------------
				
				System.out.print("\n");
				
			}// end of for----------------------------
			
			System.out.print("\n");
			
		}// end of for----------------------------

네개의 단씩 끊기 위해서 가로로, 즉 행을 먼저 출력하는 방법을 생각했다.

예를 들어 2단을 2*1, 2*2, 2*3 ... 8*1, 8*2, 8*3 ... 9*1, 9*2...9*9 까지의 의 순서가 아닌

2*1, 3*1, 4*1 ... 8*1, 9*1의 형식으로 출력하는 것이다. 

네개의 단씩 끊어주기 위해서 내부 for문 조건식에 i가 해당  변수 dan+4 보다 작을 때까지로 설정했다

이후 출력문에 \n을 통해 줄바꿈을 해주면 다음 행의 출력으로 넘어갈 수 있다.

출력 결과는 다음과 같다.

/*
=== 구구단 4단씩 끊기 ===
2*1=2	3*1=3	4*1=4	5*1=5	
2*2=4	3*2=6	4*2=8	5*2=10	
2*3=6	3*3=9	4*3=12	5*3=15	
2*4=8	3*4=12	4*4=16	5*4=20	
2*5=10	3*5=15	4*5=20	5*5=25	
2*6=12	3*6=18	4*6=24	5*6=30	
2*7=14	3*7=21	4*7=28	5*7=35	
2*8=16	3*8=24	4*8=32	5*8=40	
2*9=18	3*9=27	4*9=36	5*9=45	

6*1=6	7*1=7	8*1=8	9*1=9	
6*2=12	7*2=14	8*2=16	9*2=18	
6*3=18	7*3=21	8*3=24	9*3=27	
6*4=24	7*4=28	8*4=32	9*4=36	
6*5=30	7*5=35	8*5=40	9*5=45	
6*6=36	7*6=42	8*6=48	9*6=54	
6*7=42	7*7=49	8*7=56	9*7=63	
6*8=48	7*8=56	8*8=64	9*8=72	
6*9=54	7*9=63	8*9=72	9*9=81	
*/

 

for문의 구조를 이해하면 어렵지 않게 풀 수 있는 문제다.

선생님 말로는 이 문제의 출처가 다른 제자 분의 회사 면접 손코딩 문제였다고 한다...

설마 이거 하나만 풀게 했을까...? 궁금하다