숙제 12개 정리

@_@·2021년 5월 30일

Java 1부

목록 보기
10/27

ㅇ 1번

  • 단위 나누기 => 몫/, 나머지% 사용
  • 나눈 나머지와 몫을 연속으로 사용할 수 있어
  • 상위 단위까지는 나머지만 살리고 원하는 단위는 몫으로 살려
  • 천원에서 나머지 구할 때는 (④오백원, ⑤백원) 더 이상 만원 단위는 필요 없어

  • 유사문제 : 시/분/초



ㅇ2번

  • 상황에 맞는 다른 결과들 출력 => 다중 if문
  • (심화) 소수점 원하는 자리까지 살리기
  • 정수/정수는 정수이다 & 대입연산자(=)는 오른쪽부터 실행한다 - 이걸 잘 인지하고 있기!
  • (국+영+수)*100은 정수, 3도 정수이므로
    (국+영+수)*100/3은 정수야!! => 8166
  • 이걸 실수형 자료형에 sum에 넣으면 sum = 8166.0 이 되고
  • 이제 sum은 실수, 100은 정수니까 실수/정수는 실수야 => 그래서 8166.0/100 = 81.66 이라는 값이 오른쪽에서 정리되고
  • 마지막으로 이걸 실수형 자료 avg에 담으면 avg=81.66이 되는 것

(추가실험들)

  • sum의 자료형을 double 대신 int를 사용하면 발생하는 현상

    • sum = 8166 이라는 정수가 되고
    • sum/100은 정수/정수 즉 정수가 되므로 81만 남아
    • 이걸 double 자료형인 avg에 넣으면 81.0 이 되는 거야
  • ★그래서 쌤이 대입 연산자 (=) 있을 때는 오른쪽부터 처리된다고 계속 강조하셨구나!!!★

    • 오른쪽 결과물은 원래 변수의 자료형에 영향을 받아



ㅇ 3번

  • ' 입력받은 숫자까지 {실행문장}하기 ' => for문
  • 보통 for ( int i = 1; i<=num(<-입력받은숫자); i++) 꼴
    • 수정 : int i=0; i<num으로 해주니 더 깔끔하네
  • 1씩 증가하면서 더하기 => 반복
  • 키보드입력 한 번으로 구간이 정해지니까 => for문
  • 합 구할 때 계속 사용하는 식 : sum += i



ㅇ 4번

  • 짝수만 더하기
  • 3번에서 더할 때 조건을 주었으므로 if 문 추가



ㅇ 5번

  • ' x 를 입력할 때까지 {실행문장}하기 ' => while문
  • 보통 while(num != x) {실행문장} 꼴
  • 내가 원하는 결과가 나올 때까지 입력을 반복하니까 => while문
  • while문 전에 x가 아닌 숫자로 num 선언해서 무조건 while문으로 들어오게끔 하기
    • 미리 선언하지 않으면 while(조건식)에 num이라는 변수를 사용할 수 없어!
  • 그 밑에 바로 syso안내문구 & 변수에 입력받기
  • 원하는 실행문장 적기
  • 이 때, x를 입력했더라도 한 번은 실행문장을 실행하게 되므로 그 부분을 잘 고려해서 짜기
    (뒤의 비밀번호 문제에서 다룰거야)
  • 여기서는 0 더해도 0이라서 문제 없이 진행

(추가) 이런 문제가 두와일문제




ㅇ 6번

  • 입력 받은 수만큼 {실행문장} & 경우에 따라 다른 출력 => for 문 안의 if-else문
  • 실행하려는 게 간단하다면 삼항연산자



ㅇ7번

  • 5번에다가 처음 바로 맞는 답을 입력받을 때 상황이 달라지는 경우 => while문 안의 if문 처리

  • 전체 틀 한번 정리해보면

int num = x아닌 다른 수 아무거나;
while(num!=x){
	syso 안내문
	num = sc.nestInt(); 키보드입력
	if(num==x) {
	   x일 때 실행할 실행문장;
       }else{
       x가 아닐 때 실행할 실행문장;
       }
  • 안에 if문 안 쓰고 대신 입력받는 걸 밖에도 쓰는 방법도 있어 - 이게 더 나은 듯
  • 이게 입력 2번 받더라도 더 깔끔하긴 한 듯
    입력받아서 맞으면 while문 안 들어가고
    첫 입력이 틀리면 while문 들어가서 처리하다 나오도록
  • 원하는 수 입력 받았을 때 완료 문자 있으면 이렇게 하는 게 더 나을 듯
    비밀번호 일치를 while문 밖에 두는 거야
    어차피 언젠가 정답 맞춰서 while문 밖으로 나올꺼니까



ㅇ 8번

  • 4번의 응용. 여기서는 약수만 더하기
  • 출력문의 ln 다루는 것 추가되어 있어
    • 오른쪽으로 이어서 나열하고 싶으면 ln 없애기
    • 빈칸 주고 싶으면 " " 사용



ㅇ 9번

  • 7번의 응용
  • 여기서는 x값도 실행문장의 if문을 만족하기 때문에 if문 안에 && num!=x 라는 조건 추가해 줌
  • 아니면 마지막 출력문에서 -1개 해줘도 돼
  • 앞에서는 입력을 밖에도 써줘서 비밀번호가 맞으면 while문 안들어가게 하는게 더 깔끔했는데
    (왜냐하면 이거 아니면 if문 필요 없었어서)
  • 얘는 어차피 이거 아니어도 if문이 필요한 상황이라서
    if문에 첨가하는 게 나은 듯



(결론) 입력 받는 걸 while문 안에

  • 무조건 넣는 게 좋다 (X)
  • 무조건 입력 두번 받는 게 낫다 (X)
  • 상황에 따라 적절한 걸 사용하자 (O)



ㅇ 10번

  • 구구단 한 단 출력하기 => for문



ㅇ 11번

  • 구구단 여러 단 출력하기 => for문 속 for문



ㅇ 12번

  • 별 개수 늘려가며 출력하기 => for문 속 for문
  • 두번째 for문의 변수j가 i의 크기에 영향을 받는다는 걸 볼 수 있어야 해
profile
STEP BY STEP

0개의 댓글