kigahy / SIMPLER_AlgorithmStudy

My first study group at SSAFY with Python, 2024/07~2024/09 end.
0 stars 2 forks source link

[5week] 원재 -> 가현 코드리뷰 #28

Open dnjswoc opened 3 months ago

dnjswoc commented 3 months ago

5주차 코드리뷰(원재 -> 가현)

IM test

for j in range(i, len(change), i+1) # 가현님 코드

- 원하는 리스트와 다른 상태일 때의 인덱스를 구할 때 원하는 <리스트의 전구가 1일 때, 원하는 리스트의 전구가 0일 때> 두 가지 경우를 나누어서 반복문을 쓰셨더라구요. 조건 밑에 있는 코드는 두 조건 다 같던데 서로 같지 않다는 표현을 쓰면 두 개의 for문을 하나로 줄일 수 있을 것 같습니다!
```python
 while start_arr != light_arr:  # 원재 코드

if data[i] == 1 and change[i] == 0 :  # 가현님 코드
if data[i] == 0 and change[i] == 1 :

for cx, cy in cross_dxy : # + 모양의 4방향 각각 순회 for c in range(1, M) : for dx, dy in dia_dxy : # x 모양의 4방향 순회 for d in range(1, M) : # 가현님 코드

## 9489. 고대 유적
- 이 문제 푸느라 정말 고생하셨습니다. 사실 이 문제 절대 D2 아닙니다... 어려운 거 맞아요...
- 그리고 정답까지 거의 다 오신 것 같습니다. 아쉬워요ㅠㅠ
- dxy가 오른쪽 방향, 아래쪽 방향 모두 있으므로 반복을 돌면 가로로 혹은 세로로만 긴 값을 찾을 수 없을 것 같습니다. 그리고 가로, 세로 방향을 모두 찾을 수 있으므로 반복문이 두 개일 필요가 없을 것 같습니다.
```python
dxy = [[0,1], [1,0]]
for rx, ry in dxy : # 가로로 긴 값 시작

마무리

kigahy commented 3 months ago

IM

원재님, 정성스러운 코드리뷰 진심으로 감사합니다. IM문제에서 인덱스를 벗어나는 건, 바로 밑에서 바로 어떤 행동을 하는 게 아니라 if문을 넣어서 에러가 안 났나 하고 짐작하고 있습니다.

                if change[j] == 0 :
                    change[j] = 1
                elif change[j] == 1 :
                    change[j] = 0

에서 if의 0과 1일 때만 가정한 것입니다. 그리고 for j in range(i, len(change), i+1) 에서 len(change)를 만족해야 i+1를 하므로, 인덱스 범위를 벗어나는 i+1은 실현되지 않은 것으로 짐작합니다. 챗GPT한테 물어보니 range는 유효한 범위 내에서만 형성한다고 합니다! AnswerN은 시험 스켈레톤 코드에 있던 변수로, 전구를 켜고 끈 횟수를 기록하는 변수입니다.

dnjswoc commented 3 months ago

사실 제 마음 같아서는 가현님 힘으로 처음부터 끝까지 스스로 문제를 푸는 양을 늘려 가셨으면 좋겠습니다! GPT도 좋은 참고자료가 될 수 있고, 지금 가현님께서 하시는 일이 많아서 처음부터 문제를 다 푸는 것이 많이 힘드시겠지만, 저는 제 스스로 문제를 끝까지 풀어본 것이 제 실력 향상에 많은 도움이 되었던 것 같습니다. 물론 강사님께서도 너무 오랜 시간 문제를 붙잡는 것은 추천하지 않는다고 하셨고, 공부 방법은 가현님이 선택하시는 것이니까 참고 바라는 마음에 글을 적습니다ㅎㅎ