본문 바로가기

알고리즘, 문제 풀이기록

루빅스큐브 2단계 구현기록

깃허브 코드

 

본 문제를 구현한 과정은 다음과 같다.

구현 시도 -> Jane 코드 따라치면서 배워야 할 것을 배움 -> 다시 구현 시도 -> 자바의 정석 객체지향프로그래밍Ⅰ 유튜브 강의 완주 -> 다시 구현 시도 -> Jane 코드 중간중간에 참고함 -> 구현.

(이때 구현이라 함은 문제의 최소 요구사항을 다 만족했다고 스스로 판단했다는 것을 의미한다.)

이번 과정의 핵심은 '객체지향프로그래밍'에 있다고 생각한다. 이번 구현을 통해 객체지향프로그래밍을 연습했다. 메서드끼리, 클래스끼리 상호작용하는게 재밌기도 했다. 구현과정에서 겪은 몇몇 난관의 해결법을 순서 상관없이 소개하겠다.

1. 객체가 생성된 메서드가 아닌 다른 메서드에서 그 객체를 활용해야 할 때, 그 다른 메서드의 매개변수에 그 객체가 생성된 클래스와 같은 참조타입의 변수를 선언하고 객체가 생성된 메서드에서 그 다른 메서드를 호출하여 객체를 매개변수에 넣어주면 된다.

2. 평면큐브를 이동시키는 메서드를 Prompt class에서 CubeFlat class로 옮기니 구현이 한결 수월해졌다.

3. 평면큐브의 세 행을 구성하는 Deque을 출력할 때 poll 메서드를 사용하면 다음에 Deque을 활용할 수 없다. 따라서 향상된 For문을 통해 출력하자.

4. Deque 초기화 코드를 CubeFlat() 생성자에 넣었다. 그렇게 함으로써 cubeFlat 객체를 생성함과 동시에 생성자에 의해 Deque이 초기화되었다. 이것은 Jane의 코드에서 영감을 얻은 것이다.

 

표현이 미숙할 수 있다. 이것은 아직 OOP의 개념에 숙달돼있지 않기 때문이다.

Jane에게 감사를 표한다. 그가 깃허브에 공유한 자료 덕에 구현할 수 있었다.

'알고리즘, 문제 풀이기록' 카테고리의 다른 글

거스름돈  (0) 2022.01.14
문자열 뒤집기 풀이  (0) 2022.01.12
루빅스 큐브 1단계 구현 기록  (0) 2021.11.30
자바의 정석 연습문제 6-1,2 풀이  (0) 2021.11.17
BOJ 8958(OX퀴즈) 풀이 기록  (0) 2021.11.06