Java 기반 클라우드 융합 개발자 과정 - KH 정보교육원/4월

22. 04. 12 - CodeUp 문제 풀이로 조건문/반복문 개념 확립

giggs 2022. 4. 14. 15:42

 

 

진도를 더 나가기보다는

 

문제풀이를 통해서

 

어제 배운 내용 ( 조건문, 반복문 ) 복습 + 추가 학습 내용 위주로 진행

 

 

 

 


 

 

code up 

 

 

조건문 문제 풀기

 

 


Code up : 1153번 : 두 수의 대소 비교

두 정수가 입력된다.  
두 정수의 크기를 비교하여 왼쪽 수가 크면 >를 출력, 오른쪽 수가 크면 < 를 출력, 같으면 = 을 출력하시오.

 

Scanner로 입력받아 - if - else if - else로 처리 

 

 

 

 


 

 

 


Code up : 1156번 : 홀수 짝수 구별

용준이와 봉찬이는 짤짤이로 내기를 하였다.
만약 홀수개의 돌을 쥐게 되면 용준이가 이기게 되고, 짝수개의 돌을 쥐게 되면 봉찬이가 이기는 것으로 룰을 정하였다.

어떤 자연수가 입력되면  홀수이면 "odd"을 출력하고, 짝수이면 "even"을 출력하시오.

X % 2 == 0 은 짝수

else 홀수

 

X % 2 == 1 은 홀수 ( X % 2 != 0 가능 )

else 짝수

 

 


 


Code up : 1173번 : 30분 전

수호는 30분 전으로 돌아가고 싶은 1人이다.
공백을 기준으로 시간과 분이 주어진다.
그러면 이 시간을 기준으로 30분 전의 시간을 출력하시오.
예)
12 35  =====> 12 5
12 0 ======> 11 30
11 5 ======> 10 35

 

시간, 분 입력받기

30분 빼기

30분 못 빼는 경우 추가

 

중복 제거한 방법 Check

 

+ 시간 못빼는 경우 추가 처리해주기

 

 


 

 


Code up : 1203 : 비만도 측정 0

비만을 판단하기 위해서 BMI 수치가 필요하다.
BMI 수치가 입력되면 비만을 판단하시오.
* BMI에 따른 비만 판정

BMI 수치 비만 판정
~10 이하 정상
~20 이하 과체중
20 초과 비만

 

첫 번째 if문 걸리면 뒤에 거 안 본다는 점 이용~

if ( bmi <= 10 ) 
else if ( bmi <= 20)
else

 

 

 


 

 


Code up : 1218번 : 삼각형 판단하기


삼각형의 3 변의 길이 a, b, c가 입력으로 주어진다.
여기서 입력되는 변의 관계는 a ≤ b ≤ c이다. 
그 삼각형이 무슨 삼각형인지 출력하시오.


조건에 따라 삼각형을 출력한다.
조건)
세 변의 길이가 같은 경우 : 정삼각형
두 변의 길이가 같은 경우 : 이등변 삼각형
a2 + b2 = c2일 경우(피타고라스 정리) : 직각삼각형
위의 조건에 맞지 않는 일반 삼각형일 경우 : 삼각형
삼각형이 아닐 경우 : 삼각 형아님
을 출력한다.


 

삼각형이 아니면 어떤 삼각형인지 체크할 필요가 없으므로

삼각형인지 아닌지 판단을 제일 먼저 해주는 것이 효율적일 것으로 판단

 

삼각형이 되는 기준 

  • 세 변의 길이 중 가장 긴 C의 길이가 A+B보다 작아야 한다
  • C < A+B 이어야 삼각형 성림

나머지도 조건에 맞게 if - else if 해주어서 풀이

 

 

 


 

 

 

반복문 문제 풀기

 

 

 


Code up : 1251번 : 1부터 100까지 출력하기

반복문 연습용 예제입니다.
입력은 없습니다.
1부터 100까지 공백으로 띄워 하나씩 출력하세요.


 

 

 


 

 

 


Code up : 1253번 : a부터 b까지 출력하기

어떤 두 수 a, b가 있을 때 두 수 사이의 모든 정수를 오름차순으로 출력하시오.
예를 들어, a=5 , b=10일 경우 5 6 7 8 9 10입니다.

두 수 a, b가 입력으로 들어온다. ( a, b는 정수, a, b 중 어떤 수가 큰지 모름)

입력 예시   
3 8

출력 예시
3 4 5 6 7 8

 

 

a와 b 중 어떤 수가 큰지 체크하는 부분 추가

1부터 100까지 에서 a부터 b까지 수정

공백과 함께 출력되도록 처리

 

if ( a < b ) { } else { }로 처리 ( if - else if - else X )

  • a = b인 상황 처리된다. else에 걸려서 한 번 출력되고 끝날 테니까.

 

 

 

 


 

 

 

 


Code up : 1256번 : 별 출력하기

별(*)을 n개만큼 출력한다.

입력 예시
5

출력 예시
*****

 

 

 

 

 


 

 

 

 

중첩 반복문 문제 

 

 

 

 

 


Code up : 1352번 : 사각형 출력하기 1

길이 n이 입력되면 길이가 n인 사각형을 출력하시오.
단, 사각형은 * 모양으로 채운다.

입력 예시   
4

출력 예시
****
****
****
****

 

 

  1. 입력된 수만큼 별이 출력되는 반복문을 만든다. ( 가로 한 줄 만든다 )
  2. 그 반복문을 입력된 수 만큼 반복하도록 만든다. ( 세로 반복 처리 )

 

 

 

 


 

 

 

 


Code up : 1353번 : 삼각형 출력하기 1

n이 입력되면 다음과 같은 삼각형을 출력하시오.


예)
n 이 5 이면
*
**
***
****
*****

 

  1. 별이 1,2,3,4,5 개 반복 출력되는 반복문 만들어준다. ( 가로 한 줄 )
  2. 입력받은 수 만큼 반복하게 해 준다. ( 세로 반복 처리 )
  3. 별 출력 반복문을 2번 반복문 안으로 넣으면서 2번 반복문 i 만큼 별 출력되도록 변경 ( 반복문 수정 )

 

int num = sc.nextInt( );

for(int i = 0; i < num; i++){
	for( int j = 0 ; j <i ; j++ ){
    	System.out.print('*');
     }
     System.out.println();
}

 

줄바꿈은 x번만큼 출력해준 다음에 해준다.

 

 

 

 

 


 

 

 

 


Code up : 1351번 : 구구단 출력하기 2

시작단과 마지막 단을 입력하면
그 구간의 구구단을 출력하는 프로그램을 작성하시오.

예시)
입력 : 2 3

2*1=2
2*2=4
2*3=6
2*4=8
...중략
2*9=18

3*1=3
3*2=6
...중략
3*9=27

 

 

2개의 수 a, b를 입력받고, ( 어떤 수가 더 큰지는 조건 생략 )

구구단 만들고

a, b 사이 반복되도록 만든 반복문 안에다가 넣어준다.

 

 

 

 


 

 

 

 

강사님의 퀴즈 !~

 

 

Up Down 게임

컴퓨터가 만들어준 랜덤 숫자를 맞추는 게임

컴퓨터가 만든 수가 내가 입력한 수보다
크면 UP
작으면 DOWN
맞으면 정답 
출력되도록

+@
몇 번만에 맞췄는지 Count 추가


 

 

  • 컴퓨터 랜덤 숫자 생성법
int x = Math.random();

Math.random( ) 해주면 - 랜덤숫자가 – 0부터 11 사이에서 랜덤 한 숫자가 만들어진다.

 

random 메서드의 실행결과는 double타입으로 나온다. - 0.1568 , 0.3584 이런식으로

 

int 형으로 형 변환 필요 casting

0.뭐뭐머를 int로 바꾸면 0이된다. - 해결법필요

 

 

 

 

  • 1부터 10까지 범위를 주겠다 하면
int x = (int) ( Math.random()*10 ) +1

*10+1 해준다.

0이상이고 1미만의 작대기

작대기는 아무리 길어도 1을 갖지 않는다.

작대기 10개를 가져온다 치면

최소값으로는 0 10

최대값으로는 0.9999999 10개 존재할 수 있다.

 

 

 

 

 

 

 

 

*10을 하면 최소값 0부터 최대값 9.9를 얻을 수 있다.

우리가 원하는 것은 1부터 10까지이므로 *10 해준 것에다가 +1 해준다.

+1 해주면 1~10.999 까지 얻을 수 있다.

( int ) 1~10

##point Math.random() 은 0~1사이의 랜덤한 숫자 생성

 

 

 

 

  • 1~50 까지 랜덤 숫자 생성

 

int x = (int) ( Math.random()*50 ) +1

 

 

몇 번 시도해서 맞췄는지 기능 추가

언제 count를 증가시켜줘야 하는가??

입력받을 때마다 증가시켜줄 것이므로 입력받은 다음 줄에 추가

 

 

 

 

 

 


 

 

 

단축키

  • 드래그한 후 tap // shift + tap – 들여 쓰기 내여 쓰기
  • 윈도우 창 선택하고 윈도우 + 화살표 하면 창 이동

 

 

 


 

 

 




review


지금 수준에 풀어볼 수 있는 문제들을 뽑아서 내주고
풀어보는 시간을 약간 주시고
거의 같이 풀이하였다.

같이 풀어보면서 배웠던 내용은 다시 알려주시며 복습!
배우지 않은 추가적인 내용이 나오면 그 부분에 대해
설명해주시면서 개념 확립!

진도를 빨리 뺀 이유와 문제를 풀어보는 이유를 말씀해주셨다.
진도를 빨리 나간 이유는
'복습 할 내용을 만들어 주기 위해서'
문제를 풀어보는 이유는
'어떻게 풀까 고민해 보는 시간을 가지기 위해서'

수업시간은 하루 6시간이고
복습 시간은 최소 6시간 이상
가져가야 하는데, 진도를 너무 안 나가면
복습할 내용이 부족해서 6시간 이상 못한다.
그래서 좀 빨리 나갔다. 내일부턴 좀 천천히 나갈 예정!

문제풀이는 못 푸는 것이 당연하다고
고민하는 시간을 가지는 것만으로도 충분하다고 하셨다.

조금 알고 있는 내용 배우고 있다고 자만하지 말고
겸손한 자세로 열심히 복습과 예습을 진행해야겠다는
다짐이 생겼다.