Skip to content

[그리디] 김민욱 사다리 미션 1~5 단계 제출합니다#95

Open
hapdaypy wants to merge 28 commits intonext-step:hapdaypyfrom
hapdaypy:hapdaypy
Open

[그리디] 김민욱 사다리 미션 1~5 단계 제출합니다#95
hapdaypy wants to merge 28 commits intonext-step:hapdaypyfrom
hapdaypy:hapdaypy

Conversation

@hapdaypy
Copy link
Copy Markdown

@hapdaypy hapdaypy commented Apr 28, 2026

😄 소개

안녕하세요, 이진님! 그리디 백엔드 4기 김민욱입니다.
바쁘신 와중에 시간 내서 리뷰해주셔서 감사합니다!

이번엔 정말 뜨겁게 리팩토링을 해보도록 하겠습니다 !!


🚗 해당 코드의 단계적인 흐름 설명

참여자 이름 입력
실행 결과 입력
데이터 매칭 검증
사다리 높이 입력
결과 확인 대상 입력


💭 고민한 내용

1. 자료 구조의 선택: 2차원 배열 vs 일급 컬렉션

고민 과정 : 처음에는 사다리를 2x2 배열로 진행해야 하는지 고민이 많았습니다.

해결 방법 : 하지만 결국 객체를 포장하는 일급 컬렉션으로 진행해야 한다는 것을 깨달았습니다! 일급 컬렉션 내부의 객체 배열에 true, false 값을 집어넣고, 출력을 할 때 문제 형식에 맞게 문자열로 변환하여 출력하는 방식으로 해결했습니다.

2. 좌표 매핑 및 이동 검증 원리 (Line.move)

구현은 했지만 어떻게 대상에 사다리를 이동시켜서 값을 구할 수 있을까? 라는 고민을 했습니다 !
해결 방법은 다음과 같습니다 !

해결 방법 :

예를 들어 사람이 4명일 경우 세로 기둥의 Position 인덱스는 0, 1, 2, 3 으로 구성됩니다. 가로 한 줄에 도달했을 때, 현재 기둥의 인덱스를 기준으로 좌우 간격의 불리언 값을 검증하여 이동할 위치를 찾습니다!

왼쪽 다리 검증 (canMoveLeft) : 반환 값이 true 라면, 현재 위치 - 1 이 됩니다!

오른쪽 다리 검증 (canMoveRight) : 반환 값이 true 라면, 현재 위치 + 1 이 됩니다!

그대로 하강 : 양쪽 간격이 모두 false 라면 연결된 다리가 없으므로, 위치 값을 변경하지 않고 그대로 반환합니다.

4. Position 의 원시값 포장

로또 미션과 다르게 이번엔 숫자들을 하나씩 포장하여 원시값을 포장했습니다. 때문에 +1 이나 -1 같은 단순 산술 연산 로직을 외부에 노출하지 않고, moveLeft(), moveRight() 라는 명확한 도메인 행위로 객체 내부에 응집시킬 수 있었습니다.

5. 사다리 게임 분석과 방어 로직

사다리 게임에서의 규칙상 |-----|-----| 처럼 나란히 사다리가 생기는 것을 방지해야 하고, 바로 밑에 사다리가 생기는 것도 방지해야 했습니다.

고민했던 사항 : 처음에는 현재 층을 기준으로 아래층도 방어해야 하는지 의문이 들었습니다.

하지만 위에 층만 방어 로직을 구현한다면 나머지는 자동으로 아래층에도 중복으로 생기는 일이 없다는 것 을 깨달았습니다! 이를 바탕으로 determineNext 메서드에서 이전 상태 값들을 확인하여, 가로와 세로 모두 사다리가 겹치는 현상을 깔끔하게 방어할 수 있었습니다.


❓ 질문 사항

코드를 리팩토링함에 따라 궁금한 사항이 많이 생길 것 같습니다.
이번엔 사다리 미션 구현에 많은 시간을 투자하지 못한 만큼 리팩토링에 더 신경 써보도록 하겠습니다!!

1. 참가자 이름과 실행 결과 입력 로직 추가.
2. 사다리 생성 시 폭(Width)을 입력받은 사람의 수(players.size())로 동적 할당하도록 변경.
3. 특정 사람의 이름 혹은 "all" 입력에 따라 결과를 반복 출력하는 로직 추가
쉼표(,)를 기준으로 문자열을 분리하여 사람 이름과 결과를 입력받는 메서드 추가. 결과를 확인할 사람의 이름을 입력받는  메서드 추가.
@hapdaypy hapdaypy changed the title Hapdaypy [그리디] 김민욱 사다리 미션 1,2,3,4,5 단계 제출합니다 Apr 28, 2026
@hapdaypy hapdaypy changed the title [그리디] 김민욱 사다리 미션 1,2,3,4,5 단계 제출합니다 [그리디] 김민욱 사다리 미션 1~5 단계 제출합니다 Apr 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants