클라이언트/ 서버/ 엔지니어 " 게임 개발자"를 향한 매일의 공부일지

자바 기초 프로그래밍 15 - 연습문제 다시 풀어보기 <4~7번> 본문

프로그래밍 언어/자바

자바 기초 프로그래밍 15 - 연습문제 다시 풀어보기 <4~7번>

huenuri 2024. 8. 10. 23:06

이제 조금 전에 풀었던 연습문제를 이어서 풀어보기로 하자. 오늘 배열까지 학습하려고 했지만 그건 불가능하고 반복문까지 하는 것도 쉽지 않을 것 같다. 그래도 하는데까지 해보자. 오늘은 조금이라도 공부 습관을 만드는데 집중하는 시간이다.


 

 

문제 4번

 

첫번째 도전

 

 

middleNum을 0으로 초기화했기 때문에 중간값이 0이 된 것 같다. 다시 한번 풀어보자!


 

 

 

두번째 도전

 

왼쪽이 있는 값이 넣을 값임을 잊었다. 그러니까 최종 값을 왼쪽에 써야 한다. 그리고 maxNum보다 작으면 그 값은 middleNum인 것이다. maxNum을 저장할 필요는 없다.


 

 

 

문제 5번

 

첫번째 도전

 

 

어떤 문제든지 난 처음 풀면 다 틀리게 된다. 이 문제 역시 틀렸다. 삼각형이 되는 경우는 너무나 많으니 되지 않는 경우를 먼저 생각하는 것이 좋을 것 같다.


 

 

 

 

다시 풀어보기

 

 

 

이제 삼각형이 제대로 만들어졌다.


 

 

 

 

문제 6번

 

하지만 박수짝만 출력이 되었다. 마지막 출력문을 if문으로 하면 박수짝과 박수짝짝 2개가 출력되었다.


 

 

 

다시 풀어보기

 

 

모든 경우에 박수짝짝이 나와서 이 방법도 틀렸다. 어떻게 풀어야 대체 답이 나올 수 있을까?


 

 

 

 

마지막 도전

 

 

드디어 해결되었다. 전의 코드에서는 3,6,9가 들어가는 걸 그대로 받아들여 3, 6, 9일 경우로 하나씩 나누어서 조건문을 나누었다. 그렇게 하니 코드만 길어지고 별 필요가 없는 것들이 있어 수정해보았다. 숫자 안에 3,6,9가 들어있다는 건 3의 배수라는 뜻이다. 그리고 여기에 0이 아닐 경우를 포함해야 한다. 마지막 출력 결과를 보면 30으로 0이 들어있지만 3의 배수는 맞다. 하지만 문제에서 요구하는 조건은 아니므로 0일 때를 제외해야 하는 것이다.

이 코드로 작성하면 한 자리 숫자도 해당이 된다. clapCount는 박수를 치는 횟수를 말하는 것으로 이를 하나씩 증가시키고, 이 횟수가 1일 때와 2일 때로 나누어 나중에 출력문을 작성하면 된다.


 

 

 

 

문제 7번

 

 

이 문제는 한번에 아주 잘 풀었다. 범위만 잘 설정하면 충분히 풀 수 있는 문제였다.


 

 

 

 

학습을 마치고

전에는 실습 문제 12문제를 하나의 포스트에 모두 담았는데 그렇게 하니 포스트가 너무 길어졌다. 이번에는 한번에 학습할 수 있을만큼 나누니 더 좋은 것 같다.

그래도 오늘 나름 열심히 공부하고 있다. 진도는 별로 나가지 못했지만 난 이제 조건문 문제를 어느 정도 풀 수 있게 되었다. 나머지 문제들은 많이 어렵지만 이것도 모두 풀어보려고 한다.