2차원 배열 fill 초기화 질문드려요~
440
작성자 없음
작성한 질문수 0
안농하세요 선샌님~❣
무식하지만 확실한 이중 for문으로만 2차원 배열 초기화를 하다가 이번에 새로운 방법으로 초기화해보고 싶어서 fill을 사용해보았습니당.
교안 39페이지 2차원 배열 초기화 부분을 참고해서 2-J번 문제를 풀어보려고 했는데
초기화하는 방법을 제가 잘못 이해한 것 같아서 질문 드리고자 합니다.
먼저 제가 처음 교안을 보고 이해한 방법대로 fill 함수를 사용해본 코드는 다음과 같습니다.
// 수정 전 코드
fill(&result[0][0], &result[0][0] + H * W , -1);두번째 인수 값으로 &배열[0][0]에 세로 * 가로를 더해주면 되는구나!로 이해를 했는데 의도했던 결과가 안 나왔습니다..ㅜㅜ
다시 fill 함수 부분을 제 마음대로 수정해서 제출했을 때는 맞았습니다! 라고 나왔지만.. 아니 이게 왜 돼?.. 이렇게 쓰는건가?... 싶은 의혹이 들어서 확인차 찾아오게 되었습니다.
// 수정한 코드
fill(&result[0][0], &result[H][W], -1);교안을 보고 이해한 코드와는 사뭇 달라서 fill 함수의 올바른 초기화 사용 방법을 여쭤보고자 질문드립니다!
2-J번 풀이 전체 코드입니다.
#include <bits/stdc++.h>
using namespace std;
int H, W;
char arr[104][104];
int result[104][104];
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
scanf("%d %d", &H, &W);
fill(&result[0][0], &result[H][W], -1);
// for(int i = 0; i < H; i++){
// for(int j = 0; j < W; j++){
// result[i][j] = -1;
// }
// }
for(int i = 0; i < H; i++){
for(int j = 0; j < W; j++){
scanf(" %c", &arr[i][j]);
if(arr[i][j] == 'c'){
result[i][j] = 0;
}
}
}
for(int i = 0; i < H; i++){
int cnt = 1;
bool isCloud = 0;
for(int j = 0; j < W ; j++){
if(isCloud && arr[i][j] != 'c') result[i][j] = cnt++;
if(arr[i][j] == 'c'){
isCloud = 1;
cnt = 1;
}
}
}
for(int i = 0; i < H; i++){
for(int j = 0; j < W; j++){
printf("%d ", result[i][j]);
}
printf("\n");
}
return 0;
}
답변 1
1
fill은 전체를 초기화 해야 합니다. 자 만약 10 * 10짜리 배열에서 5, 5 가입력으로 들어와요.
여기서 fill을 이용해 5 * 5까지만 초기화를 하면
0으로 초기화한다고 해볼게요
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0
이렇게 초기화가 되어버립니다. 내가 생각한 5 * 5 부분만 초기화를 하는 것과는 다른셈이죠.
그렇기 때문에 104 104로 했다면 104 * 104까지 초기화를 시켜주어야 해요.
감사합니다.
1-E질문입니다!
0
522
2
3-L 틀린 부분 피드백 부탁드립니다.
0
828
2
1-A문제 순열재귀함수 질문입니다.
0
392
1
1-A 일곱난쟁이문제입니다
0
460
1
문제 풀 때 방향성에 대해
0
804
1
맥에서 vs code로 실행 관련 질문입니다
0
525
1
17071번 메모리 초과
0
388
1
1-C질문입니다!
0
426
2
2-B BFS 시간초과질문
0
633
2
1-O 13번 라인
0
444
1
6-J 놀이공원 문제 질문
0
384
1
구현관련 질문
0
485
1
강의 교안
0
321
1
실력을 더 올리고나서 강의를 보는 것이 맞을까요?
0
548
1
안녕하세요! 재귀함수에 관해서 질문드립니다
0
536
1
1-K
0
475
2
3-G번 질문있습니다.
1
477
3
3-C 실행 시간 질문드립니다.
0
495
1
4-A 문제 풀이 질문있습니다.
0
594
2
비트마스킹 연산자 "1의 보수" 영문 표기법
0
438
1
격자탐색 문제에서 BFS 시간복잡도 질문드립니다.
0
342
1
3-O go 함수 질문 드립니다.
1
449
2
4-A 출력 질문
0
305
1
1주차 1-O 질문드립니다
0
261
1





