파이썬 출력 질문입니다
조회수 1019회
두 정수 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
자를 출력해 버렸잖아요!!!
이제 여기서 그만하고 결과를 돌려주면 쨘 원하는 답이 나옵니다.이 절차를 프로그램으로 바꿔 볼 수 있을까요? 뭔가 조건이 참일 때 동작을 처리하는 부분도 있고, 뭔가를 카운팅하는 부분도 있고, 조건이 찰 때까지 특정 동작을 무한 반복하는 부분도 있고 뭔가 배우신 게 생각이 날 겁니다. 한번 시도해 보세요.
댓글 입력