일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 타입스크립트심화
- 쇼핑몰홈페이지제작
- 스프링프레임워크
- 데이터베이스
- 자바 실습
- 자바
- 자바스크립트심화
- 중학1-1
- 컴퓨터비전
- 순환신경망
- 상속
- 연습문제
- 디버깅
- 머신러닝
- 중학수학
- 파이썬
- JSP
- JSP/Servlet
- 자바스크립트
- 딥러닝
- 혼공머신
- 데이터분석
- JDBC
- 정보처리기사필기
- html/css
- SQL
- 개발일기
- rnn
- 정보처리기사실기
- ChatGPT
- Today
- Total
클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지
상속 26 - 연습문제 실습편 문제 풀기 4 : 문제 9~10번 본문
다음 문제도 이어서 풀어보겠다. 여기서부터는 묶음 문제는 없고 각각의 문제들이 있다.
연습문제 실습편 문제 풀기 네 번째
문제 9번
문제는 Stack 인터페이스를 구현하여 문자열을 저장하는 StringStack 클래스를 작성하고, StackApp 클래스의 main() 메서드를 통해 동작을 확인하는 것입니다.
요구사항 분석
- Stack 인터페이스
- length(): 현재 스택에 저장된 개수를 반환
- capacity(): 스택의 전체 저장 가능 개수를 반환
- pop(): 스택의 최상단 값을 제거하고 반환
- push(String val): 스택의 최상단에 값을 저장. 저장 실패 시 false 반환
- 동작 시나리오
- 사용자로부터 입력을 받아 스택에 문자열 저장
- "그만" 입력 시 프로그램 종료
- 스택에 저장된 문자열을 모두 출력
문제 코드
문제 풀기
StringStack
StackApp
코드 주요 내용 요약
- Stack 인터페이스
- length() : 현재 스택에 저장된 문자열 개수를 반환
- capacity() : 스택의 총 저장 가능 크기를 반환
- pop() : 스택의 최상단 문자열을 제거하고 반환
- push(String val) : 스택의 최상단에 문자열을 추가하고 성공 여부를 반환
- StringStack 클래스
- 멤버 변수
- String[] stack : 문자열 저장용 배열
- int top : 스택의 현재 위치(요소 개수)
- 주요 메서드
- length() : 현재 저장된 문자열 개수를 반환
- capacity() : 스택의 최대 크기(배열 길이)를 반환
- pop() : 스택의 최상단 문자열을 제거하고 반환. 스택이 비어 있으면 null 반환
- push(String val) : 스택에 문자열을 추가. 가득 찬 경우 false 반환
- 멤버 변수
- StackApp 클래스
- 동작 과정
- 사용자로부터 스택의 크기를 입력받아 StringStack 생성.
- 반복적으로 문자열 입력
- push() : 입력된 문자열을 스택에 추가
- "그만" 입력 시 반복 종료
- 종료 후 스택에 저장된 모든 문자열을 pop()을 이용해 출력
- 동작 과정
드디어 출력이 되었다. 크기는 0부터 시작하니 문자열을 4개까지 넣을 수 있다. 그리고 그만을 입력하면 더 이상 문자열을 받지 않고 그만을 누르지 않으면 계속 입력하게 된다. 맨 마지막에 넣은 문자열은 크기에 포함되지 않아 출력되지 않고 stack은 뒤에서부터 꺼내므로 나중 것부터 출력이 된다.
스택의 공간이 꽉 찼는데도 계속 넣으면 입력할 수 없다는 문구가 뜬다. 그리고 이때 저장한 문자열은 스택에 출력되지 않음을 볼 수 있다.
문제 10번
주어진 PairMap 추상 클래스를 상속받아 Dictionary 클래스를 만드는 문제이다. 그리고 DictionaryApp 클래스의 main() 메서드에서 구현된 Dictionary를 활용해 key-value 데이터를 삽입, 검색, 삭제하는 작업을 수행하도록 구현한다.
문제 코드
PairMap
Main 클래스
문제 풀기
Dictionary 클래스
코드 설명
- PairMap 추상 클래스
- keyArray와 valueArray를 통해 key-value 데이터를 저장할 공간을 제공
- 기본 생성자를 통해 배열의 크기를 초기화하며, get(), put(), delete(), length() 메서드를 추상 메서드로 선언
- Dictionary 클래스
- PairMap을 상속받아 추상 메서드를 구현
- get(String key): 배열에서 key를 검색해 해당하는 value를 반환
- put(String key, String value): key가 존재하면 value를 수정, 그렇지 않으면 새 데이터를 저장
- delete(String key): key에 해당하는 데이터를 삭제하고, 삭제된 value를 반환
- length(): 현재 저장된 데이터의 수를 반환
- main() 메서드
- Dictionary 객체를 생성하고, 데이터를 삽입(put()), 검색(get()), 삭제(delete()) 작업을 수행
- 데이터의 존재 여부와 삭제 후의 상태를 출력하여 구현된 동작 확인
출력이 잘 되었다. 이 코드의 PairMap 추상 클래스는 key-value 데이터 구조를 구현하기 위한 기반 역할을 하며, 이를 상속한 Dictionary는 데이터를 추가, 수정, 삭제할 수 있는 기능을 제공한다. main() 메서드를 통해 이러한 기능을 테스트하고 올바른 결과를 확인하는 것이다.
학습을 마치고
뒷 부분의 문제는 코드도 길고 어려우니 두 문제씩 풀기로 했다. 문자열을 입력받거나 저장하는 문자열을 가져오는 문제를 풀어보았다. 지금은 이해하기 힘든 코드도 있었으나 우선은 적당히 공부하고 넘어가기로 했다.
처음부터 너무 완벽하게 알려고 하면 공부가 지치고 힘들게 된다. 지금은 이렇게 기본을 익히는 것만으로 충분하다.
이어서 남은 문제도 풀어보겠다.
'프로그래밍 언어 > 자바' 카테고리의 다른 글
상속 28 - 연습문제 실습편 문제 풀기 6 : 문제 13~14번 (0) | 2024.12.03 |
---|---|
상속 27 - 연습문제 실습편 문제 풀기 5 : 문제 11~12번 (0) | 2024.12.03 |
상속 25 - 연습문제 실습편 문제 풀기 3 : 문제 5~8번 (0) | 2024.12.03 |
상속 24 - 연습문제 실습편 문제 풀기 2 : 문제 3~4번 (0) | 2024.12.03 |
상속 23 - 연습문제 실습편 문제 풀기 1 : 문제 1~2번 (0) | 2024.12.02 |