반응형
해당 문제는 위키독스 웹 사이트에서 공개되지 않으며 교재를 구입하거나 E-Book을 구입해야 확인 가능합니다.
서평단 및 학습 기록 목적으로 작성된 글임을 밝히며 문제시 댓글 주시면 삭제하도록 하겠습니다.
요즘 나는 Do it! 점프 투 자바 교재를 보면서 차근차근 기본기를 다시 다지고 있는데
제어문 파트의 '3의 배수의 합 구하기' 문제를 풀던 중 의문이 생겼다.
while문을 사용해 1부터 1000까지의 자연수 중 3의 배수의 합을 구하는 문제
public class study {
public static void main(String[] args) {
int result = 0;
int i = 1;
while (i <= 1000) {
if (i % 3 == 0) {
result += i;
}
i += 1;
}
System.out.println(result);
}
}
- int result = 0;
> 합계를 저장하기 위한 변수 result를 초기화 - int i = 1;
> 반복문에서 사용될 변수 i를 1로 초기화 - while ( i <= 1000) {
> 문제에 나와 있는 대로 while문을 사용해 1부터 1000까지 아래의 코드를 반복 실행 - if ( i % 3 == 0) {
> i를 3으로 나눴을 때 나머지가 0인 3의 배수를 확인 - result += i;
> i가 3의 배수일 경우 result 변수에 i를 더하여 3의 배수들의 합을 누적 - i += 1;
> i를 1씩 증가시켜 다음 수를 검사 - System.out.println(result);
> 반복문이 종료된 후 3의 배수인 숫자들의 합을 출력
for문을 사용한 경우
public static void main(String[] args) {
int result = 0;
for (int i = 1; i <= 1000; i++) {
if (i % 3 == 0) {
result += i;
}
}
System.out.println(result);
}
}
조건에 따라 반복을 수행하는 while문과 다르
위와 같이 for문을 사용하면 (초기화; 조건식; 증감식)을
한 블록에 모아 사용하기 때문에 코드가 간결해질 수 있다.
for문과 while문 차이점
모두 반복문의 종류로서,
특정한 작업을 반복적으로 수행할 때 사용한다는 건 알고 있지만 몇 가지 차이점이 있다.
while문 | for문 |
- 조건식만을 사용해 반복을 제어하는 구조 - 주로 반복 횟수가 정해져 있지 않거나, 조건에 따라 반복을 수행할 때 사용 - 조건식을 체크하고 조건이 참인 동안 반복 |
- 초기화, 조건식, 증감식을 한 곳에 모아서 사용하는 구조 - 주로 반복 횟수가 정해져 있을 때 사용 - 반복 시작 전에 초기화를 하고, 반복이 계속될 조건 체크, 반복이 끝날 때마다 증감식을 실행 |
|
훨씬 더 간결하다는 걸 한 눈에 볼 수 있다. |
람다식을 사용한 경우
// 1부터 1000까지의 정수 범위를 나타내는 스트림을 생성
IntStream intStream = IntStream.rangeClosed(1, 1000);
// 스트림에서 3의 배수만을 걸러내는 작업을 수행
IntStream filteredStream = intStream.filter(i -> i % 3 == 0);
// 걸러진 값들의 합을 계산
int result = filteredStream.sum();
// 결과를 출력
System.out.println(result);
람다식과 스트림을 활용하면 for문을 사용하지 않아도
보다 코드를 간결하게 작성할 수 있다는 것을 알게 되었다.
팩트)
람다식에 대해서는 추후 자세히 다루겠지만
'->' 사이에 공백이 오는 것은
올바른 람다식의 문법이 아니라는 것까지 모르니..
아직도 갈길이 멀다고 생각드는 하루
반응형
'활동 > 호기심' 카테고리의 다른 글
클래스(class), 객체(object), 인스턴스(instance) 차이점 비교 (0) | 2023.08.28 |
---|---|
자바 for문을 이용한 '공포의 별 찍기 문제' (0) | 2023.08.25 |
String.valueOf()와 Integer.toString() 차이점은 Null 값 처리 (0) | 2023.08.23 |
해시함수 정리 (Hash 충돌 발생 원인과 해결방법 / Hash Table과 Hash Map 차이점) (0) | 2023.08.22 |
자바 제네릭(Generic) 정의와 사용하는 이유 정리 (0) | 2023.08.21 |