일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 자바
- 데이터베이스
- 정보처리기사실기
- 정수와유리수
- SQL
- numpy/pandas
- 중학1-1
- 코딩테스트
- 딥러닝
- 데이터입출력구현
- CSS
- html/css
- 데이터분석
- 혼공머신
- 파이썬
- JSP/Servlet
- 파이썬라이브러리
- 정보처리기사필기
- 컴퓨터비전
- C++
- 중학수학
- 영어공부
- 머신러닝
- 운영체제
- 컴퓨터구조
- 연습문제
- pandas
- 자바 실습
- 텍스트마이닝
- CNN
- Today
- Total
클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지
클래스와 객체 20 - 단원 마무리 연습문제 실습편 풀기 : 1~6번 본문
어제 하루종일 공부를 했음에도 static에서 final 개념 학습 그리고 14문제밖에 풀지 못했다. 하지만 난 한 문제를 풀 때 굉장히 심혈을 기울여 거기서 배울 수 있는 것을 모두 학습한다는 마음으로 풀었기에 그 값어치는 매우 크다고 본다.
비록 다 이해하지는 못했고 절반도 이해하지 못한 문제들도 많았지만 우선은 넘어가기로 했다. 나중에 복습을 하며 이 부분을 심화 학습해볼 수 있으리라 믿는다.
어제는 부족함이 많아서 스스로에게 실망이 되고 화가 났던 그런 날이었고 이건 어제뿐만이 아니라 매일 그런 것 같다. 하지만 얼마나 많이 하는 것보다 포기하지 않고 그 일을 하는지가 가장 중요하다. 오늘부터는 새벽 기상도 1시간 당길 수 있어서 정말 좋았다. 지난 1주일이 넘도록 새벽 6시 기상에 도전했고 그 일을 잘 해냈으니 이제 한 단계 수준을 올릴 수 있게 되었다. 처음부터 새벽 4시에 일어나려고 했으면 분명 실패했을 것이다.
하지만 이처럼 한 단계씩 올라가다보면 어느새 정상에 다다르게 된다. 개발 공부도 마찬가지일 것이다.
연습문제 실습편 문제 풀기
1번 문제
자바 클래스를 작성하는 연습을 해보자. 다음 main() 메소드를 실행했을 때 예시와 같이 출력되도록 TV 클래스를 작성하라.
예제를 조금 참조했지만 잘 풀었다. 생성자부터 만들고 메소드는 어떤 기능을 만드는 것이다. 여기는 출력을 할 예정이니 이 분분을 show()로 만들어주면 된다.
문제 2번
3과목의 점수를 입력 받아 Grade 객체를 생성하고 성적 평균을 출력하는 main()을 작성하라.
입력은 되는데 출력이 되지 않았다. 그 이유가 뭔가 했더니 average() 메소드 내에서 average()를 다시 호출하는 재귀 호출로 인해 스택 오버플로우가 발생한 거였다. 괄호가 있으면 함수가 된다는 것을 깜박 잊었다. 올바르게 계산된 average 값을 반환해야겠다.
언제나 틀려봐야 더 많은 걸 배우는 것 같다. 이제 이 부분을 확실히 풀 수 있을 것 같다. 이젠 하도 많이 문제를 풀어서 어떤 코드인지 쓰지 않아도 이해가 된다.
문제 3번
노래 한 곡을 나타내는 Song 클래스를 작성하라.
혼자서도 이 문제를 모두 잘 풀었다.
문제 4번
다음 멤버를 가지고 직사각형을 표현하는 Rectangle 클래스를 작성하라.
잘 만들긴 했는데 포함한다는 말이 두 번이나 출력되고 있다. 이 부분을 수정해야 할 것 같다.
else if 구문을 수정하니 이렇게 사각형이 이 안에 들어있는지 조건을 검사할 필요가 없었지만 그래도 한번 이런 식으로 코드를 작성해본다.
contains 메소드의 로직:
이 로직은 현재 사각형(this)이 다른 사각형(r)을 완전히 포함하는지 확인한다. 포함하려면 r의 모든 꼭짓점이 this 사각형의 내부에 있어야 한다.
- this.x <= r.x
- r 사각형의 좌측 상단 모서리의 x 좌표가 this 사각형의 좌측 상단 모서리의 x 좌표보다 오른쪽에 있거나 동일한지 확인한다.
- r의 왼쪽이 this의 왼쪽보다 안쪽(오른쪽)이어야 한다.
- this.y <= r.y
- r 사각형의 좌측 상단 모서리의 y 좌표가 this 사각형의 좌측 상단 모서리의 y 좌표보다 아래쪽에 있거나 동일한지 확인한다.
- r의 위쪽이 this의 위쪽보다 안쪽(아래쪽)이어야 한다.
- this.x + this.width >= r.x + r.width
- r 사각형의 우측 하단 모서리의 x 좌표가 this 사각형의 우측 하단 모서리의 x 좌표보다 왼쪽에 있거나 동일한지 확인한다.
- 즉, r의 오른쪽이 this의 오른쪽보다 안쪽(왼쪽)이어야 한다.
- this.y + this.height >= r.y + r.height
- r 사각형의 우측 하단 모서리의 y 좌표가 this 사각형의 우측 하단 모서리의 y 좌표보다 위쪽에 있거나 동일한지 확인한다.
- 즉, r의 아래쪽이 this의 아래쪽보다 안쪽(위쪽)이어야 한다.
이제 둘 중의 하나만 출력이 되고 있다. if-else 구문을 사용할 때는 그 안에 다른 것이 들어있지 않아야 한다. 근데 prinfln을 사용한 것이 문제였다. 다 풀었는데 여기서 막혔다. 그래도 정말 잘했다.
문제 5번
Cirelce 클래스와 CircleManager 클래스를 완성하라.
이제 이 문제도 풀 수 있게 되었다. 정답을 조금 참고하면서 풀었다. 객체 배열을 적용하는 부분은 조금 어려웠기 때문이다.여기서 주의할 점은 값을 입력받을 때 원래 사용한 변수를 써야 한다는 것이다. 난 다른 변수인줄 알고 그걸 썼다가 오류가 났다. 그리고 자료형에 맞게 객체를 생성하는 것도 아주 중요하다. 객체 배열에는 뒤에 변수가 붙지 않아서 조금 헤깔렸다.
그리고 객체 배열을 출력할 때도 c[i].show()로 일반 메소드 출력과 크게 다르지 않았다.
문제 6번
5번 문제를 수정하여 면적이 가장 큰 원을 구하라.
이렇게 면적이 가장 큰 원까지 계산했다. 이걸 알기 위해서는 원의 넓이를 구하는 공식을 알아야 하고, 조건을 만들어서 가장 큰 원을 찾아야 한다. 늘 하던대로 첫번째 배열 요소를 가장 큰 원으로 설정하고 그 원보다 크면 largestCircle 값을 바꾸어준다.
조금만 생각하면 풀 수 있는 문제인데 처음 풀어보는 거라 예제를 참고하면서 풀어보았다.
학습을 마치고
이렇게 해서 오늘 새벽에 실습문제 7번까지 풀어보았다. 보통 한 문제를 푸는데 30분 정도 걸린 것 같다. 그래도 이렇게 풀어볼 수 있어 정말 기뻤다.
7번 문제는 인사교 가기 전에 한번 풀어보고 8번부터 남은 5문제는 아침 수업 시간에 풀어보려고 한다. 그리고 가변배열에서 수업을 듣지 못한 부분을 공부해볼 것이다.
'프로그래밍 언어 > 자바' 카테고리의 다른 글
객체와 클래스 22 - 단원 마무리 연습문제 실습편 : 10~12번 (0) | 2024.08.20 |
---|---|
객체와 클래스 21 - 단원 마무리 연습문제 실습편 풀기 : 7~9번 (0) | 2024.08.20 |
클래스와 객체 19 - 단원 연습문제 이론편 문제 풀기 : 9~16번 (0) | 2024.08.19 |
클래스와 객체 18 - 단원 연습문제 이론편 문제 풀기 : 6~8번 (0) | 2024.08.19 |
클래스와 객체 17 - 단원 연습문제 이론편 문제 풀기 : 1~5번 (0) | 2024.08.19 |