문제 :
다음과 같은 n*m 배열 구조를 출력해보자.입력이 3 4인 경우 다음과 같이 출력한다.
8 9 10 1
7 12 11 2
6 5 4 3
입력이 4 5인 경우는 다음과 같이 출력한다.
11 12 13 14 1
10 19 20 15 2
9 18 17 16 3
8 7 6 5 4
입력이 n m인 경우의 2차원 배열을 출력해보자.
내 답 : #include
int main()
{
int n, m, x, y, k=1;
int arr[104][104]={};
scanf("%d %d", &n, &m);
for(x=0; x<=n+1; x++)
{
arr[x][0]=1;
arr[x][m+1]=1;
}
for(y=0; y<=m+1; y++)
{
arr[0][y]=1;
arr[n+1][y]=1;
}
x=1;
y=m;
arr[x][y]=1;
while(k<=n*m)
{
while(arr[x+1][y]==0)
{
x++;
k++;
arr[x][y]=k;
}
while(arr[x][y-1]==0)
{
y--;
k++;
arr[x][y]=k;
}
while(arr[x-1][y]==0)
{
x--;
k++;
arr[x][y]=k;
}
while(arr[x][y+1]==0)
{
y++;
k++;
arr[x][y]=k;
}
}
for(x=1; x<=n; x++)
{
for(y=1; y<=m; y++) printf("%d ", arr[x][y]);
printf(" ");
}
return 0;
}
이라고 하니
시간초과라고 합니다.
어디가 잘못되었는지 가르쳐주실수 있나요?
달팽이배열인가 - dc App
질문이라고 해놓고 문제랑 니 답 떨렁 적어두시면 뭘...대답해야하는것인지? - dc App
ㅇㅇ
c언어배운지 1주일됨
런타임에러가 나오네영
그럼 에러 내용 읽어보고 같이 올리든가 디버그를 해보세요ㅎㅎ - dc App
혼자 주석도 없고 변수명도 대충지어놓은거 다른사람보고 보라그러면 그렇게 귀찮은게 없음 - dc App
이런종류의 문제는 혼자 해결할 줄 알아야됨. 이번거 답변해줘도 다음에 또 에러나서 스스로 못잡아내면 거기서 거기임 - dc App
에러 내용 구글링을 해서라도 알아내는게 실력향상에 도움될거임 - dc App
그런가요? 잘 몰라서 죄송합니다...
더 공부 해볼게요
디버그 방법은 알아? - dc App
비주얼 스튜디오 기준으로 라인 왼쪽 빈칸 클릭하면 빨간 원(중단점)이 생겨서 F5 눌러서 실행하면 거기서 코드 진행이 멈춰. 이후 F10이나 F11누르면 한줄씩 진행하는데, F10은 서브루틴(함수)진입 안하고 한줄, F11은 진입하면서 한줄씩 진행하는 단축키야 - dc App
디버그 모드 시작은 F5, 10, 11로 할 수 있고, 한줄씩 보다보면 아래쪽에 변수에 무슨값들이 들어있는지 확인할 수 있어 - dc App
런타임에러면 분명 한줄씩 진행하다가 갑자기 특정 줄에서 에러가 나올거야. 거기서 어떤 문제가 생겼는지 읽어보자. - dc App
내가 소스코드를 제대로 본건 아니지만 배열관련 문제면 메모리 침범 가능성이 커보여. 1주일차 공부중인거 감안하면 초기화되지 않은 변수를 사용했을수도 있을거같고.. - dc App
아니요
혹시 dev c++은 어떻게 하는지 알수있나요?
안써봐서ㅎㅎ; - dc App
시키신대로 했더니 프로그램이 꺼지네요
예... 구글링해서 해볼게요 감사합니다 다음에는 제대로 형식갖춰서 질문올릴거니까 준비하세요 ㅎㅎ
패기있는 말투네 - dc App
dev c++ 디버그 방법 구글링해보면 되겠네 ㅇㅇ - dc App
코드 대충 보는데 m+1이 왜나오지? m-1아님? - dc App
출력하는 범위 바로 바깥을 다 1로 채우고 1을 만나면(0이 아닌수를 만나면) 방향 꺽어서 가고..
그런식으로 만들었어요
아 테두리를 1로 채워버렸다고... - dc App