๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“— Book/์ž๋ฐ”์˜ ์ •์„

4-2์žฅ ๋ฐ˜๋ณต๋ฌธ

by hyeon-z 2023. 3. 29.

1. for๋ฌธ

๐Ÿ’ก๋ฐ˜๋ณต ํšŸ์ˆ˜๋ฅผ ์•Œ๊ณ  ์žˆ์„ ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉ

 

for๋ฌธ์˜ ๊ตฌ์กฐ์™€ ์ˆ˜ํ–‰ ์ˆœ์„œ

 

- ์ดˆ๊ธฐํ™”

- ์กฐ๊ฑด์‹

- ์ฆ๊ฐ์‹

- ๋ธ”๋ก {}

 

for(์ดˆ๊ธฐํ™”; ์กฐ๊ฑด์‹; ์ฆ๊ฐ์‹;) {
	...  // ์กฐ๊ฑด์‹์ด ์ฐธ์ผ ๋•Œ ์ˆ˜ํ–‰๋œ๋‹ค.
}

 

์ˆ˜ํ–‰ ์ˆœ์„œ

1. ์ดˆ๊ธฐํ™”

2. ์กฐ๊ฑด์‹

3. ์ˆ˜ํ–‰๋  ๋ฌธ์žฅ

4. ์ฆ๊ฐ์‹

 

 

์ดˆ๊ธฐํ™”

 

๐Ÿ’ก ๋ฐ˜๋ณต๋ฌธ์— ์‚ฌ์šฉ๋  ๋ณ€์ˆ˜๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๊ณผ์ •, ์ฒ˜์Œ์— ๋‹จ ํ•œ๋ฒˆ ์ˆ˜ํ–‰๋œ๋‹ค.

 

for(int i = 0; i < 5; i++) {...}  // ๋ณ€์ˆ˜ 1๊ฐœ
for(int i = 0, j = 0; i < 5; i++) {...}  // ๋ณ€์ˆ˜ 2๊ฐœ -> ,(์ฝค๋งˆ)๋ฅผ ๊ตฌ๋ถ„์ž๋กœ ๋ณ€์ˆ˜ ์ดˆ๊ธฐํ™”

 

์กฐ๊ฑด์‹

 

๐Ÿ’ก ์กฐ๊ฑด์‹์˜ ๊ฐ’์ด ์ฐธ(true)์ด๋ฉด ๋ฐ˜๋ณต ๊ณ„์† ์ง„ํ–‰ํ•˜๊ณ  ๊ฑฐ์ง“(false)์ด๋ฉด ๋ฐ˜๋ณต์„ ์ค‘๋‹จํ•˜๊ณ  for๋ฌธ์—์„œ ๋ฒ—์–ด๋‚œ๋‹ค.

โ‡’ ์กฐ๊ฑด์‹์ด โ€˜์ฐธ์ธ ๋™์•ˆโ€™ ๋ฐ˜๋ณต์„ ๊ณ„์†ํ•จ

 

for(int i = 0; i < 5; i++) {...}  // i๊ฐ€ 5๋ณด๋‹ค ์ž‘์€ ๋™์•ˆ ๋ฐ˜๋ณต

 

์ฆ๊ฐ์‹

 

๐Ÿ’ก๋ฐ˜๋ณต๋ฌธ์„ ์ œ์–ดํ•˜๋Š” ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ์ฆ๊ฐ€ ๋˜๋Š” ๊ฐ์†Œ์‹œํ‚ค๋Š” ์‹

 

๋งค ๋ฐ˜๋ณต๋งˆ๋‹ค ๋ณ€์ˆ˜์˜ ๊ฐ’์ด ์ฆ๊ฐ์‹์— ์˜ํ•ด์„œ ์กฐ๊ธˆ์”ฉ ๋ณ€ํ•˜๋‹ค๊ฐ€ ๊ฒฐ๊ตญ ์กฐ๊ฑด์‹์ด ๊ฑฐ์ง“์ด ๋˜์–ด for๋ฌธ์„ ๋ฒ—์–ด๋‚˜๊ฒŒ ๋œ๋‹ค.

for(int i = 1; i <= 10; i++) { ... }     // 1๋ถ€ํ„ฐ 10๊นŒ์ง€ 1์”ฉ์ฆ๊ฐ€
for(int i = 10; i >= 1; i--) { ... }     // 10๋ถ€ํ„ฐ 1๊นŒ์ง€ 1์”ฉ๊ฐ์†Œ
for(int i = 1; i <= 10; i+= 2) { ... }   // 1๋ถ€ํ„ฐ 10๊นŒ์ง€ 2์”ฉ์ฆ๊ฐ€
for(int i = 1; i <= 10; i*= 3) { ... }   // 1๋ถ€ํ„ฐ 10๊นŒ์ง€ 3๋ฐฐ์”ฉ์ฆ๊ฐ€

 

 

์ดˆ๊ธฐํ™”, ์กฐ๊ฑด์‹, ์ฆ๊ฐ์‹ ์ด ์„ธ๊ฐ€์ง€ ์š”์†Œ๋Š” ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฉด ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๋‹ค.

โ‡’ ๋ชจ๋‘ ์ƒ๋žตํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅ!!

for(;;) {...}  // ์ดˆ๊ธฐํ™”, ์กฐ๊ฑด์‹, ์ฆ๊ฐ์‹ ๋ชจ๋‘ ์ƒ๋žต. ์กฐ๊ฑด์‹์€ ์ฐธ

์กฐ๊ฑด์‹์ด ์ƒ๋žต๋œ ๊ฒฝ์šฐ: ์ฐธ(true)๋กœ ๊ฐ„์ฃผ๋˜์–ด ๋ฌดํ•œ ๋ฐ˜๋ณต๋ฌธ์ด ๋œ๋‹ค.

โ‡’ ๋ธ”๋Ÿญ{} ์•ˆ์— if๋ฌธ์„ ๋„ฃ์–ด์„œ ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋ฉด for๋ฌธ์„ ๋น ์ ธ๋‚˜์˜ค๊ฒŒ ํ•ด์•„ ํ•œ๋‹ค.

 

๋ณ€์ˆ˜ 1๊ฐœ vs ๋ณ€์ˆ˜ 2๊ฐœ

 

โ“ ๋ณ€์ˆ˜๊ฐ€ 1๊ฐœ์ธ for๋ฌธ, ๋ณ€์ˆ˜๊ฐ€ 2๊ฐœ์ธ for๋ฌธ์„ ๊ฐ๊ฐ ๋งŒ๋“ค์–ด์„œ ์•„๋ž˜์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•ด๋ผ.

 

for(int i = 1, j = 10; i <= 10; i++, j--) {
	System.out.printf("%d\t %d\n", i, j);
}

 

for(int i = 1; i <= 10; i++) {
	System.out.printf("%d\t %d\n", i, 11 - i);
}

for๋ฌธ์— ์‚ฌ์šฉ๋˜๋Š” ๋ณ€์ˆ˜์˜ ์ˆ˜๊ฐ€ ์ ์€ ๊ฒƒ์ด ๋” ํšจ์œจ์ ์ด๊ณ  ๊ฐ„๋‹จํ•˜๋ฏ€๋กœ ๋ณ€์ˆ˜๋“ค์˜ ๊ด€๊ณ„๋ฅผ ์ž˜ ํŒŒ์•…ํ•˜์—ฌ ๋ถˆํ•„์š”ํ•œ ๋ณ€์ˆ˜์˜ ์‚ฌ์šฉ์„ ์ค„์ด๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

โ‡’ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ผ๋ฉด ๋” ์ ์€ ๋ณ€์ˆ˜ ์‚ฌ์šฉํ•˜๊ธฐ!

 

์ค‘์ฒฉ for๋ฌธ

 

๐Ÿ’ก for๋ฌธ ์•ˆ์— ๋˜ ๋‹ค๋ฅธ for๋ฌธ์„ ํฌํ•จ์‹œํ‚ค๋Š” ๊ฒƒ

 

 

for(int i = 1; i <= 3; i++)
    for(int j = 1; j <= 3; j++)
        for(int k = 1; j <= 3; k++)
        	System.out.println(""+i+j+k);

 

i, j, k๊ฐ€ ๊ฐ๊ฐ 1, 2, 3์ผ ๋•Œ

"" + i + j + k
-> "" + 1 + 2 + 3
-> "1" + 2 + 3
-> "12" + 3
-> "123"

๋ฌธ์ž์—ด์€ ์–ด๋–ค type๋ž‘ ๋”ํ•ด๋„ ๋ฌธ์ž์—ด์ด ๋œ๋‹ค.

 

ํ–ฅ์ƒ๋œ for๋ฌธ

 

for(ํƒ€์ž…๋ณ€์ˆ˜๋ช… : ๋ฐฐ์—ด๋˜๋Š”์ปฌ๋ ‰์…˜) {
	// ๋ฐ˜๋ณตํ•  ๋ฌธ์žฅ
}

 

ํƒ€์ž…: ๋ฐฐ์—ด ๋˜๋Š” ์ปฌ๋ ‰์…˜์˜ ์š”์†Œ์˜ ํƒ€์ž…

 

์˜ˆ์‹œ: int [] arr = {10, 20, 30, 40 ,50};

for(int i = 0; i < arr.length; i++) {
	System.out.println(arr[i]);
}
for(int tmp: arr) {
	System.out.println(tmp);
}

ํ–ฅ์ƒ๋œ for๋ฌธ์€ ์ผ๋ฐ˜์ ์ธ for๋ฌธ๋ณด๋‹ค ๊ฐ„๊ฒฐํ•˜์ง€๋งŒ ๋ฐฐ์—ด์ด๋‚˜ ์ปฌ๋ ‰์…˜์— ์ €์žฅ๋œ ์š”์†Œ๋ฅผ ์ฝ์–ด์˜ค๋Š” ์šฉ๋„๋กœ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ œ์•ฝ์ด ์žˆ๋‹ค.

 

์ˆ˜ํ–‰๋  ๋ฌธ์žฅ์ด ์—†๋Š” for๋ฌธ

 

for(int j = 0; j <2_000_000_000; j++) ๏ฝ›
	;  // ์•„๋ฌด๋Ÿฐ ๋‚ด์šฉ๋„ ์—†๋Š” ๋นˆ ๋ฌธ์žฅ
}
for(int j = 0; j <2_000_000_000; j++);  // ํ•œ ๋ฌธ์žฅ์ด๋ผ ๊ด„ํ˜ธ{} ์ƒ๋žต ๊ฐ€๋Šฅ
for(int j = 0; j <2_000_000_000; j++) {}  // ๊ด„ํ˜ธ{}์•ˆ์— ๋ฌธ์žฅ์„ ๋„ฃ์ง€ ์•Š์•„๋„ ๋จ

 

์˜ˆ์‹œ)

for (i = 1; i <= 10; i++); // ๋นˆ ๋ฌธ์žฅ ';'์„ 10๋ฒˆ ๋ฐ˜๋ณตํ•œ๋‹ค.
{
	System.out.println("i = " + i); // i = 11 ์ด ์ถœ๋ ฅ๋œ๋‹ค.
}

๋นˆ ๋ฌธ์žฅโ€˜;โ€™๋งŒ for๋ฌธ์— ์†ํ•œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋˜์–ด ๋ธ”๋ก {}์€ ๋ฐ˜๋ณต๋˜์ง€ ์•Š๋Š”๋‹ค. ๋‹จ ํ•œ๋ฒˆ๋งŒ ์ˆ˜ํ–‰๋œ๋‹ค.

 

2. while๋ฌธ

๐Ÿ’ก์กฐ๊ฑด์‹์ด ์ฐธ(true)์ธ ๋™์•ˆ, ์ฆ‰ ์กฐ๊ฑด์‹์ด ๊ฑฐ์ง“์ด ๋  ๋•Œ๊นŒ์ง€ ๋ธ”๋Ÿญ {} ๋‚ด์˜ ๋ฌธ์žฅ์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

 

while(์กฐ๊ฑด์‹) {
	...  // ์กฐ๊ฑด์‹์˜ ์—ฐ์‚ฐ๊ฒฐ๊ณผ๊ฐ€ ์ฐธ(true)์ธ ๋™์•ˆ, ๋ฐ˜๋ณต๋  ๋ฌธ์žฅ๋“ค์„ ์ ๋Š”๋‹ค.
}

1. ์กฐ๊ฑด์‹์ด ์ฐธ์ด๋ฉด ๋ธ”๋ก{ } ์•ˆ์œผ๋กœ ๋“ค์—‰๊ฐ€๊ณ , ๊ฑฐ์ง“์ด๋ฉด while๋ฌธ์„ ๋ฒ—์–ด๋‚œ๋‹ค.

2. ๋ธ”๋Ÿญ{ }์˜ ๋ฌธ์žฅ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ๋‹ค์‹œ ์กฐ๊ฑด์‹์œผ๋กœ ๋Œ์•„๊ฐ„๋‹ค.

 

for๋ฌธ๊ณผ while๋ฌธ์˜ ๋น„๊ต

 

for๋ฌธ

for(int i = 1; i <= 10;i++) { 
	System.out.println(i);
}

 

while๋ฌธ

int i = 1;

while(i <= 10) {
	System.out.println(i);
	i++;
}

for๋ฌธ์€ ์ดˆ๊ธฐํ™”. ์กฐ๊ฑด์‹, ์ฆ๊ฐ์‹์„ ํ•œ ๊ณณ์— ๋ชจ์•„ ๋†“์€ ๊ฒƒ์ผ ๋ฟ. while๋ฌธ๊ณผ ๋‹ค๋ฅด์ง€ ์•Š๋‹ค

๋งŒ์ผ ์ดˆ๊ธฐํ™”๋‚˜ ์ฆ๊ฐ์‹์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ๋ผ๋ฉด, while๋ฌธ์ด ๋” ์ ํ•ฉํ•  ๊ฒƒ์ด๋‹ค.

 

while๋ฌธ์˜ ์กฐ๊ฑด์‹์€ ์ƒ๋žต ๋ถˆ๊ฐ€

 

while () {  // ERROR ์กฐ๊ฑด์‹์ด ์—†์Œ!
	...  
}

 

๋ฌดํ•œ ๋ฐ˜๋ณต๋ฌธ (์กฐ๊ฑด์‹์ด ํ•ญ์ƒ true)

 

for(;;) {
	...
}
while(true) {
	...
}

 

3. do - while๋ฌธ

do {
	...  // ์กฐ๊ฑด์‹์˜ ์—ฐ์‚ฐ๊ฒฐ๊ณผ๊ฐ€ ์ฐธ์ผ ๋•Œ ์ˆ˜ํ–‰๋˜๋Š” ๋ฌธ์žฅ๋“ค
} while (์กฐ๊ฑด์‹); -> ๋์— ';'์„ ์žŠ์ง€ ์•Š๋„๋ก ์ฃผ์˜!!

์ตœ์†Œํ•œ ํ•œ ๋ฒˆ์€ ๋ธ”๋ก์ด { } ๋ฌด์กฐ๊ฑด ์ˆ˜ํ–‰๋œ๋‹ค.

 

โ“ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ์ถœ๋ ฅ๋˜๋„๋ก do-while๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ 3, 6, 9 ๊ฒŒ์ž„์„ ๊ตฌํ˜„ํ•˜๋ผ. (๋‹จ, ๋ฒ”์œ„๋Š” 1์—์„œ 100๊นŒ์ง€์ด๋‹ค.)

 

public class game369{
    public static void main(String[] args) {
        for (int i = 1; i <= 100; i++) {
            System.out.printf("i = %d ", i);

            int tmp = i;
            do {
                if (tmp % 10 % 3 == 0 && tmp % 10 != 0) {  // ๋์ž๋ฆฌ๊ฐ€ 3์˜ ๋ฐฐ์ˆ˜์ธ์ง€ ํ™•์ธ (0์€ ์ œ์™ธ)
                    System.out.print("์ง");
                }
            } while ((tmp /= 10) != 0);
            System.out.println();
        }
    }
}

 

4. break๋ฌธ

๐Ÿ’ก ์ž์‹ ์ด ํฌํ•จ๋œ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋ฐ˜๋ณต๋ฌธ์„ ๋ฒ—์–ด๋‚œ๋‹ค.

 

while(true) {
	if(sum > 100)
		break;
	i++;
	sum += i;
}

๋ฌดํ•œ ๋ฐ˜๋ณต๋ฌธ์—๋Š” ์กฐ๊ฑด๋ฌธ๊ณผ break๋ฌธ์ด ํ•ญ์ƒ ๊ฐ™์ด ์‚ฌ์šฉ๋œ๋‹ค.

 

5. continue๋ฌธ

๐Ÿ’ก ๋ฐ˜๋ณต์ด ์ง„ํ–‰๋˜๋Š” ๋„์ค‘์— ๋ฐ˜๋ณต๋ฌธ์˜ ๋์œผ๋กœ ์ด๋™ํ•˜์—ฌ ๋‹ค์Œ ๋ฐ˜๋ณต์œผ๋กœ ๋„˜์–ด๊ฐ„๋‹ค.

 

์ „์ฒด ๋ฐ˜๋ณต ์ค‘ ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๊ณ ์ž ํ•  ๋•Œ ์œ ์šฉํ•˜๋‹ค.

 

3์˜ ๋ฐฐ์ˆ˜ ์ œ์™ธ

 

 

for (int i = 1; i <= 10; i++) {
	if (i % 3 == 0) {
		continue;
	}
	System.out.println(i);
}

 

break๋ฌธ & continue๋ฌธ

 

 

public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);

while (true) {
	int num = scanner.nextInt();
		
	if (num == 0) {
		System.out.println("ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ");
		break;
	} else if (num == 1) {
		System.out.println("์žฌ์ž…๋ ฅ");
		continue;
	}
	System.out.println("๊ตฟ");
	}
}

์ž…๋ ฅ ๊ฐ’ ๋ณ„๋กœ ๋”ฐ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ์— ์œ ์šฉํ•˜๋‹ค.

 

6. ์ด๋ฆ„ ๋ถ™์€ ๋ฐ˜๋ณต๋ฌธ

0์„ ์ž…๋ ฅํ•˜๋Š” ๊ฒฝ์šฐ for๋ฌธ์„ ๋ฒ—์–ด๋‚˜๊ณ  99๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๊ฒฝ์šฐ 'break outer'์— ์˜ํ•ด for๋ฌธ๊ณผ while๋ฌธ์„ ๋ชจ๋‘ ๋ฒ—์–ด๋‚˜ ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋œ๋‹ค.

 

 

Reference

์ž๋ฐ”์˜ ์ •์„ - ๋‚จ๊ถ ์„ฑ

๋Œ“๊ธ€