Java] 조건문과 반복문

for문

알고 있던 for문이 아닌 다른 for문에 대해서 알아보자.

1
2
3
4
5
6
7
8
9
for(int i=0, j=7; i<j; i++, j--) {
System.out.println("i: " + i + ", j: " + j);
/*
* i: 0, j: 7
* i: 1, j: 6
* i: 2, j: 5
* i: 3, j: 4
*/
}

for문을 while문 처럼 사용하는 방법

1
2
3
for( ; ; ) {
System.out.println("무한 루프")
}

레이블을 설정하는 break문

1
2
3
4
5
6
7
8
9
10
11
12
13
outerLoop :
for(int i=0; i<5; i++) {
for(int j=0; j<5; j++) {
if(i==0 && j==2) {
break outerLoop;
}
System.out.println("i: " + i + ", j: " + j);
/*
* i: 0, j: 0
* i: 0, j: 1
* */
}
}

Break & Continue

break

break를 사용하면 사용된 범위의 for문을 나갈 수 있다.

그렇지만 이중 for문일 때 하나의 break문을 이용해서 나가는 방법에 대해서 알아보자.

지금까지 이러한 경우가 있을 때는 boolean 변수를 하나 더 이용해서 if문으로 검사하여 break를 두 개 사용하거나, 함수를 이용해서 return으로 처리했었다.

continue

1
2
3
4
5
6
7
8
9
10
11
12
for(int i=0; i<5; i++) {
if(i == 3) {
continue;
}
System.out.println(i);
/*
* 0
* 1
* 2
* 4
* */
}

위 예제를 보게되면 continue에 대해서 쉽게 이해할 수 있다.

Problem]

01.

1+(-2)+3+(-4)+…과 같은 식으로 계속 더해나갔을 때, 몇까지 더해야 총합이 100이상이 되는지 구하시오.

1
2
3
4
5
6
7
8
9
10
11
12
int num = 1;
int sumV = 0;
while(sumV < 100) {
if(num % 2 == 1) {
sumV += num;
} else {
sumV -= num;
}
num += 1;
}
System.out.println(num); //200
System.out.println(sumV); //100

02.

1+(1+2)+(1+2+3)+(1+2+3+4)+…+(1+2+3+4+5+6+7+8+9+10)의 결과를 계산하시오.

1
2
3
4
5
6
7
8
9
10
11
12
private static int sum(int num) {
if(num == 1) return 1;
return num + sum(num-1);
}

public static void main(String[] args) {
int sumV = 0;
for(int i=1; i < 11; i++) {
sumV += sum(i);
}
System.out.println(sumV); //220
}

https://www.python.org/dev/peps/pep-3136/

못 찾은 것일수도 있겠지만, 파이썬에는 레이블을 이용한 break문은 없다.

라이브러리를 사용하여 하는 방법은 있다.