JAVA/정올 문제풀이

기초 다지기 549 : 반복제어문3 - 자가진단1

최뭉뭉 2019. 1. 22. 17:38

*완전!!!! 기초부터 혼자 공부하면서 기록하기 위해 쓰는 글입니다. 부족한 부분이 많습니다. 혹시 가르쳐주실 부분이 있으시면 댓글 언제든지 환영합니다 :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 값을 넣어주시면 됩니다.

저희가 출력하고 싶은건 개수와 합계이므로 cnt와 sum을 넣어줍니다








그럼 간단하게 숫자 100을 넣어보겠습니다




그럼 for문이 1부터 실행되면서 조건을 만족하는 홀수만 합계와 개수에 더해질 겁니다.

조건을 만족하는 i는 1 3 5 7 9 11 13 15 17 19 이렇게 총 10개가 됩니다.

이렇게 10개를 다 더해보면 합계는 딱 100이 나옵니다.



그래서 개수와 합계인 10과 100이 각각 출력되는걸 볼수 있습니다.




이제 다음문제를 풀어보겠습니당 :)