Develop growth diary/JAVA 연습문제 풀이

이것이 자바다 04 조건문과 반복문 확인문제 풀이

pponyo 2022. 10. 4. 21:06
728x90
반응형
04 조건문과 반복문
1. 조건문과 반복문의 종류를 괄호 ( )속에 넣어 보세요.
● 조건문: ( 1 ), ( 2 )
● 반복문: ( 3 ), ( 4 )

<정답>
(1) if
(2) switch
(3) for
(4) while, do-while

<문제풀이>

제어문의 종류에는 조건문과 반복문이 있는데, 조건문에는 if문, switch문이 있고 반복문에는 for문, while문, do-while문이 있다. if문은 조건식의 결과에 따라 블록 실행 여부가 결정되고, switch문은 변수가 어떤 값을 갖느냐에 따라 실행문이 선택된다. 반복문 for문, while문, do-while문은 어떤 작업이 반복적으로 실행되도록 할 때 사용되며, for문과은 정해진 횟수만큼 반복된다면 while문은 조건식이 true일 때 계속해서 반복하고, for문과 while문은 서로 변환이 가능하다.

 

2. 조건문과 반복문을 설명한 것 중 틀린 것은 무엇입니까?
① if문은 조건식의 결과에 따라 실행 흐름을 달리할 수 있다.
② switch문에서 사용할 수 있는 변수의 타입은 int, double이 될 수 있다.
③ for문은 카운터 변수로 지정한 횟수만큼 반복시킬 때 사용할 수 있다.
④ break문은 switch문, for문, while문을 종료할 때 사용할 수 있다.

<정답>
② switch문에서 사용할 수 있는 변수의 타입은 int, double이 될 수 있다.

<문제풀이>

switch문에서는 byte, char, short, int, long, String 변수나 정수값을 산출하는 연산식을 모두 사용할 수 있다.

 

3. for문을 이용해서 1부터 100까지의 정수 중에서 3의 배수의 총합을 구하는 코드를 작성하세요.

<정답>

<문제풀이>

먼저 for문을 이용해 1부터 100까지의 정수 범위를 지정해주고, 3의 배수는 3으로 나누었을 때 나머지가 0이 되는 정수이기 때문에 for문 내에 if문을 활용하여 3으로 나눈 나머지가 0인 경우 변수 sum에 누적하여 합계를 구할 수 있도록 코드를 작성하였다.

- 이때 주의해야할 점은 반드시 합계를 저장하는 변수 sum은 메인메소드 블록에서 선언해 주어야한다는 것!

 

4. while문과 Math.random() 메소드를 이용해서 두 개의 주사위를 던졌을 때 나오는 눈을 (눈1, 눈2) 형태로 출력하고, 눈의 합이 5가 아니면 계속 주사위를 던지고, 눈의 합이 5이면 실행을 멈추는 코드를 작성해보세요. 눈의 합이 5가 되는 조합은 (1, 4), (4, 1), (2, 3), (3, 2)입니다.

<정답>

<문제풀이>

Math.random() 메소드는 0에서 1 사이의 실수를 랜덤으로 출력하는 메소드이기 때문에 double 타입의 결과값을 가지는데,

 특정 범위내의 정수를 랜덤으로 출력하고 싶다면 int 타입으로 캐스팅 해주고, Math.random()의 값에 원하는 최댓값의 범위를 곱해준 다음 1을 더해주면 1부터 최댓값까지의 범위 내 정수를 랜덤으로 출력할 수 있다. 이 원리를 이해하고 활용하면 예를 들어 100부터 150 사이의 정수를 랜덤으로 출력하고 싶다면 (int) (Math.random() * 50) + 100; 으로 구할 수 있다.

while문 내에 Math.random()을 활용하여 주사위 눈을 랜덤으로 출력할 수 있도록 (int) (Math.random() * 6 ) + 1의 범위로 설정해주고, 눈1, 눈2의 값을 각각 변수에 따로 저장해준다. 그리고 2개의 주사위를 던졌을 때 나오는 눈을 (눈1, 눈2) 형태로 출력할 수 있도록 실행문을 작성해준 다음 눈의 합이 5이면 실행을 멈추도록 if문을 활용해 조건식을 (눈1+눈2 == 5)로 설정하여 break 하도록 코드를 실행하면 된다.

 

5. 중첩 for문을 이용하여 방정식 4x + 5y = 60의 모든 해를 구해서 (x,y) 형태로 출력해보세요. 단, x와 y는 10 이하의 자연수입니다.

<정답>

<문제풀이>

4x + 5y = 60의 해를 구하는 방법을 먼저 생각해보면 x, y는 1부터 10까지의 자연수이므로 범위를 int타입 1부터 10까지로 지정해주고, 중첩 for문을 활용하여 조건식을 만들어주면 된다. x, y가 int 타입의 정수이므로 4 * x, 5 * y 로 연산하여 계산해주면 간편하게 완성!

 

6. for문을 이용해서 실행 결과가 같은 삼각형을 출력하는 코드를 작성해보세요.

<정답>

<문제풀이>

 

중첩 for문을 활용해 i는 1부터 5까지 증감하고, j도 1부터 5까지 증감하는 조건식을 작성해준다. 그리고 i가 j보다 크거나 같으면 "*"을 입력하도록 실행문을 작성해주고, 개행문을 넣어 줄을 띄워주면 별찍기 완성!

표를 그려서 생각하면 훨씬 조건식을 만들기가 쉽다! 변수 i는 행을 나타내고, 변수 j는 열을 나타낸다고 생각하면 i가 j보다 크거나 같을 때 별을 찍어주면 삼각형 모양이 완성된다 :)

 

7. while문과 Scanner를 이용해서 키보드로부터 입력된 데이터로 예금, 출금, 조회, 종료 기능을 제공하는 코드를 작성해보세요. 이 프로그램을 실행시키면 다음과 같은 실행 결과가 나와야 합니다.

<정답>

<문제풀이>

while문과 Scanner를 이용하여 실행결과와 같이 출력하려면 if-else if-else문을 활용하면 된다. 먼저 Scanner를 이용한 입력값을 선택값으로 조건식을 부여해주고, 각 입력값에 대한 실행문을 작성해준다. 예금, 출금의 경우 예금액과 출금액 또한 입력받아야 하므로 실행문 뒤에 Scanner를 이용해 금액을 입력받는다. 그리고 예금액의 경우에는 잔고 balance에 값을 더해주고, 출금액의 경우에는 잔고 balance에서 차감해주면 잔고를 확인했을 때 계산된 잔액을 확인할 수 있다. 그리고 마지막으로 프로그램의 종료는 1, 2, 3이 아닌 어떤 입력값이 와도 종료될 수 있도록 else문에서 break로 조건문을 탈출해주면 프로그램 종료 문구가 출력된다.


조건문과 반복문을 능숙하게 작성하고, 여러가지 방법으로 사고해서 활용하려면

꾸준한 복습과 반복적인 문제 풀이가 필수일 것 같다!

 

코드를 작성하고 실행하였을 때 생각처럼 잘 되지않더라도 직접 수정하고 출력해보면서

다시 한 번 각 메소드와 메소드 내 실행순서를 익히고,

실행문의 작성 순서와 작성 위치도 중요함을 깨닫고 숙지하였다 :)

 

여러번 직접 시도해 봤을때도 잘 해결이 되지않는 부분은 답안지를 보고 옮겨적기보다는

이해가 안되는 부분을 선생님께 직접 질문해서 내 코드에서 잘못된 부분을 같이 찾아보고,

해결 방법을 안내받는 것이 조금 더 도움이 된다고 생각이 들기도했다.

 

다음 주말에는 자바의 정석 연습문제와 이전 수업 교재 실전예제 문제도 열심히 풀어볼 예정이다!

728x90
반응형