파이썬 출력 질문입니다

조회수 1014회

두 정수 N과 M을 입력받고, 1부터 N까지의 수를 M * M 행렬 형태로 출력하는 프로그램을 작성하라.

[입력 예시 1]

2
3

[출력 예시 1]

121
212
121

[입력 예시 2]

3
5

[출력 예시 2]

12312
31231
23123 
12312
31231

[입력 예시 3]

4
4

[출력 예시 3]

1234
1234
1234
1234

(출력예시에서 띄워쓰기 공간이 있는 곳은 줄바꿈입니다)
이중 for문을 사용하여도 숫자를 초기화할뿐 순서대로 출력되진 않네요 어떻게 해야할지 고수분들께 질문드려봅니다 ㅠㅠ

1 답변

  • 1. 저라면 for보다는 while로 돌겠습니다. M * M개의 글자를 쓸 때까지 뭔가 귀찮은 짓거리를 계속해야 하기 때문이죠.

    2. 그 귀찮은 짓거리란 무엇이냐? 한번 손으로 써봅시다. 입력 예시가 다음과 같다고 하면:

    3 # 편의상 N이라고 부르겠음
    5 # M이라고 부르겠음
    

    일단 1, 2, 3, 1, 2, 3, 1, ... 의 패턴대로 쭉 써봅시다. 1부터 시작해서 N이 될 때까지 +1 을 한 숫자를 쓰고, 그 다음에는 다시 1에서 시작하는 로직이군요. 대충 이렇게 되겠네요.

    12312
    

    그 다음에 3을 쓰면? 안되죠!! 지금 이 라인에 벌써 M개 숫자를 써버렸잖아요?
    한줄 넘어가야 합니다.

    12312
    3
    

    이제 또 생각없이 막 써봅시다.

    12312
    31231
    

    이제 그 다음에 2를 쓰면? 안되죠!!! 지금 이 라인에 벌써 M개 숫자를 써버렸으니까요!!
    또 한 줄 넘어가야 합니다.

    이 귀찮은 짓거리를 질릴 때까지 해봅니다.

    12312
    31231
    23123
    12312
    31231
    

    이제 그 다음 줄에 2를 쓰면? 안되죠!!!! 벌써 총 M*M자를 출력해 버렸잖아요!!!
    이제 여기서 그만하고 결과를 돌려주면 쨘 원하는 답이 나옵니다.

    이 절차를 프로그램으로 바꿔 볼 수 있을까요? 뭔가 조건이 참일 때 동작을 처리하는 부분도 있고, 뭔가를 카운팅하는 부분도 있고, 조건이 찰 때까지 특정 동작을 무한 반복하는 부분도 있고 뭔가 배우신 게 생각이 날 겁니다. 한번 시도해 보세요.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)