Transparent White Star

[파이썬] 뱀 행렬 문제 정리

 

더보기

뱀 행렬 문제:

사용자로부터 숫자 1보다 크고 10보다 작은 값 n을 입력으로 받아서 다음과 같이 뱀의 몸통처럼 증가하는 이차원 배열을 출력하여라

 

1 2 3

6 5 4

7 8 9

 

 

이런 문제를 오늘 만났습니다.

 

어떻게 풀까 고민하다가 배열 공부를 덜 마친 상태라 못 풀었음

근데 꼭 풀어보고 싶어서 글으로 정리하기로 함!!

 

일단 for 반복문으로 푸신 분들이 있고 정답으로 인정해주셔서 만약 나라면 어떻게 풀었을지 강의 끝나고 따로 풀어봄

 

n = int(input("n? "))

for row in range(1,n+1):
  if (row%2!=0):
    for j in range((row*n-(n-1)), row*n+1):
      print(j, end=" ")
    print("")
  else:
    for j in range(row*n, ((row-1)*n), -1):
      print(j, end=" ")
    print("")

 

눈으로 봤을 때 가장 먼저 보이는 점은

홀수번째 줄은 오른쪽으로 갈수록 수가 커진다.

반대로 짝수번째 줄은 오른쪽으로 갈수록 수가 작아진다.

 

그래서 홀수 / 짝수 줄으로 나눠서 생각해줌.

 

다음으로는 순서가 어찌되었든 연달아 있는 수임.

따라서 반복문을 각각 작성해줬는데

문제는 반복문 횟수를 어떻게 지정해줄지가 고민이었음

 

확실한 건 분명 n과 row 등을 계산해서 순서대로 출력할 텐데....

 

간단하게 적으려고 하니 생각이 안 나서 진짜 푸는 것에만 집중함..

 

보이는대로 반복횟수를 적어주니 결과적으로 이런 못난 코드가 짜임 ㅜ

 

 

사실 너무 정답 맞히기에만 급급한 게 아닌가? 생각이 드는 코드라서 마음이 아픔...

일단 거슬리는 점은

 

1. 애초에 2차원 배열 문제임

2. 코드가 깔끔하지 못한 것 같음

 = 더 좋은 방식이 있을 게 보여서 아쉬움

 

인데, 일단 오늘은 할 게 너무 많음...

배열 공부하면서 추가적으로 기록을 이어나가려고 함....

 

 

'파이썬' 카테고리의 다른 글

[Python] 반복문 도박사 프로그램 기록  (0) 2024.05.28

댓글