백준 2309번 일곱난쟁이 문제를 풀면서 이중 for문을 빠져나오게 코드를 작성해야하는 일이 있었다.
2중 for문 또는 다중 for문을 사용할 때, 안쪽에있는 for문에서 조건에 부합할 때 한번에 상위 for문까지 빠져나오는 법에 대해 머리를 굴려보다 찾아낸 기능이 바로 label이었다.
그래서 오늘은 label에 대해서 소개하고자한다.
Label이란
label은 앞서 말한 것과 같이 다중 for문을 사용할 때 안쪽 for문에서 전체 루프를 즉시 종료하거나 다음의 큰 반복문으로 이동할 때 사용할 수 있다.
코드 예제
* 기본형태
outerLoop: // 외부 루프에 레이블 지정
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
if (i * j > 50) {
break outerLoop; // outerLoop 레이블이 지정된 반복문을 탈출
}
}
}
* 백준 2309번 일곱난쟁이 풀이코드
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
ArrayList<Integer> numList = new ArrayList();
int sum = 0;
int minus = 0;
for (int i = 0; i < 9; i++) {
int num = sc.nextInt();
numList.add(num);
sum += num;
}
Collections.sort(numList);
minus = sum - 100;
outer:
for (int i = 0; i < 9; i++) {
for (int j = i + 1; j < 9; j++) {
if (numList.get(i) + numList.get(j) == minus) {
Integer num1 = numList.get(i);
Integer num2 = numList.get(j);
numList.remove(numList.indexOf(num1));
numList.remove(numList.indexOf(num2));
break outer;
}
}
}
for (Integer integer : numList) {
System.out.println(integer);
}
}
}
'코딩테스트' 카테고리의 다른 글
[코딩테스트] 최대공약수, 최소공배수 구하기 (유클리드 호제법) (0) | 2024.04.20 |
---|