while문과 for문은 가장 기본적인 반복문 구조로 서로 간에 변환이 가능하다.
1을 10번 출력하고 싶다고 하면, 다음과 같이 구현할 수 있다.
< for문으로 구현 >
for (int i=0; i<10; i++) {
System.out.println("1");
}
< while문으로 구현 >
int i=0;
while (i<10) {
System.out.println("1");
i++;
}
둘다 i를 0으로 초기화한 상태에서, i를 1씩 늘려가며 10이 되기 직전까지 출력문을 반복한다. 일반적으로는 반복 횟수를 아는 경우 for, 모르는 경우 while을 쓰라고 말하는데, 반복 횟수를 아는 경우는 무조건 for을 쓰는 게 좋은가?
반드시 그렇지는 않다. 우선 둘의 기본 구조를 보면 다음과 같다.
for(시작 조건; 반복 조건; 진행 조건) {
반복 내용;
}
while (반복 조건) {
반복 내용;
}
나는 직관적으로 while을 쓰는 경우가 많은데, 다음과 같은 경우들이다.
1) for문의 구조를 보면 시작 조건을 입력할 때 반드시 변수를 초기화시킨다. 즉 for 문 안에서 변수의 초기화가 이루어지는 것이다. 따라서 루프를 시작하기 전에 이미 변수가 초기화되어있다면 while을 쓰는 것이 더 직관적이다. 반복 횟수가 정해져있다고 하더라도, 굳이 다시 초기화를 하면서 for문을 사용할 필요는 없다.
2) 또, 가독성 측면에서 while문이 더 나은 측면도 있다. for (int i=0; i<num; i++) 보다는 while (i<num) 이 더 간단하고 직관적이다. 변수 이름이나 코드의 길이가 길어질수록 더욱 그렇다. 한 줄에 내용을 집약해서 넣느냐, 여러 줄에 나눠 넣느냐의 차이이다.
3) 이 외에도 무한 루프를 구현하고 싶은 경우 while (true) 로 쉽게 작성 가능하므로 while을 쓴다.
다만 파이썬에서는 for문 더 편한 경우가 많다. 프로그래밍을 할 때는 다양한 곳에서 변수를 끌어오고 복잡한 요소를 고려하게 되기 때문에, 언제 써야할 지 명확하게 구분하려고 하고 정답을 정해놓는 것 보다는 둘 다 어떻게 쓰는지를 잘 알고 있고, 두 구문 간에 자유롭게 변환할 수 있도록 연습하는 것이 더 중요하다고 생각한다.
'JAVA' 카테고리의 다른 글
자바 bufferedreader & writer 사용법과 IOException (백준 15552번) (0) | 2020.04.29 |
---|---|
구구단 숫자 입력받아 출력하기 자바 - 전체/짝수/홀수단 (백준 2739번) (0) | 2020.04.25 |
자바 윤년 계산 알고리즘 (백준 2753번 윤년 코드) (0) | 2020.03.28 |
자바 조건문 기본 문법 - if문 (백준 1330번, 2884번) (0) | 2020.03.17 |
자바 계산기 프로그램 만들기 (백준 1000번, 1008번, 사칙연산 정답 코드) (0) | 2020.03.10 |