*완전!!!! 기초부터 혼자 공부하면서 기록하기 위해 쓰는 글입니다. 부족한 부분이 많습니다. 혹시 가르쳐주실 부분이 있으시면 댓글 언제든지 환영합니다 :D
참고로, 이클립스를 사용했습니다!
문제:
자연수 n을 입력받고 1부터 홀수를 차례대로 더해나가면서 합이 n 이상이면 그 때까지 더해진 홀수의 개수와 그 합을 출력하는 프로그램을 작성하시오.
일단 데이터값을 입력받기 위해서는
import java.util.Scanner; ☞ Scanner를 import해주고,
Scanner sc=new Scanner(System.in); ☞ Scanner 객체를 생성해줘야 합니다.
int n=sc.nextInt();
☞ 자연수 n을 입력받을 수 있도록 n 변수를 int형으로 만들어줍니다.
int cnt=0;
int sum=0;
☞ 필요한 변수들을 생성한 후 초기화시켜줍니다.
sum 변수는 합계를 저장해줄겁니다. 계속 입력받은 변수를 더해서 저장해놔야겠죠?
일단 cnt는 현재 입력된 변수가 몇개인지 세는 역할을 할 겁니다.
cnt변수와 sum변수에는 정수가 들어갈 것이기 때문에 int형 변수로 지정해줬답니다
for(int i=1;sum<n;i++){
☞ for문은 while문과 같은 반복제어문 중 하나로 기본 구조는 for(초기값; 조건식; 증감식) 입니다
초기값 부분에는 1부터 홀수를 차례대로 더해나가라고 했기 때문에 int형 변수 i를 만들어주고 1로 설정해줍니다.
두번째 부분인 조건식에는 반복문이 실행될 조건을 넣어줍니다. 이 조건식이 참일때만 반복문이 실행됩니다.
합이 n이상이 되면 조건문을 빠져나가야 하기 때문에 sum가 n 미만이라는 조건식을 넣어줍니다.
마지막 증감식 부분에는 반복문이 계속 돌아가는 무한루프를 벗어나기 위해 i의 값을 변경시켜주는 증감식을 넣어줍니다.
i++는 i=i+1과 같은 의미입니다.
if(i%2==1){
☞ 이처럼 ()안의 조건을 만족할 때 {} 안의 문장을 실행하는 if문을 조건문이라고 합니다.
% 연산자는 a를 b로 나눴을 때 몫을 제외한 나머지 값만 돌려줍니다.
예를 들어 5%3을 출력해보시면 나머지값인 2가 출력됩니다.
i를 2로 나눴을 때 나머지가 1인건 i가 홀수라는 걸 뜻합니다.
sum+=i;
☞ sum은 합계를 구하는 함수이기 때문에 입력받은 i변수가 홀수라는 조건을 만족한다면 계속 더해줍니다.
sum+=i 는 sum=sum+i 와 같은 문장입니다.
cnt++;
☞ cnt 변수의 개수도 조건을 만족할때마다 1씩 늘려줍니다.
그래야 cnt에 조건을 만족하는 수의 총개수가 저장되겠죠
System.out.printf("%d %d",cnt,sum);
☞ 그 밑엔 printf 출력문을 써서 avg 변수를 출력해줍니다.
printf 출력문은 %d, %f, %s 와 같은 서식을 써서 변수를 넣기 용이하게 만들어져 있는 출력문입니다.
출력할 문장에 %d라는 서식지정자를 삽입한다면 그 자리에 int형 데이터를 나타낼 수 있습니다.
"," 뒤에는 %d에 들어갈 int 값을 넣어주시면 됩니다.
그럼 for문이 1부터 실행되면서 조건을 만족하는 홀수만 합계와 개수에 더해질 겁니다.
조건을 만족하는 i는 1 3 5 7 9 11 13 15 17 19 이렇게 총 10개가 됩니다.
이렇게 10개를 다 더해보면 합계는 딱 100이 나옵니다.
그래서 개수와 합계인 10과 100이 각각 출력되는걸 볼수 있습니다.
이제 다음문제를 풀어보겠습니당 :)
'JAVA > 정올 문제풀이' 카테고리의 다른 글
기초 다지기 550 : 반복제어문3 - 자가진단3 (0) | 2019.01.27 |
---|---|
기초 다지기 634 : 반복제어문3 - 자가진단2 (0) | 2019.01.22 |
기초 다지기 139 : 반복제어문2 - 형성평가A (0) | 2019.01.22 |
기초 다지기 138 : 반복제어문2 - 형성평가9 (0) | 2019.01.11 |
기초 다지기 137 : 반복제어문2 - 형성평가8 (0) | 2019.01.10 |