작성
·
8
0
안녕하세요! 선생님 제가 짠 코드가 작동하지 않는 이유를 도저히 모르겠어서 질문 올립니다.
답으로는 구름이 등장할 때까지 카운트를 답에 넣는식으로 작성해 주셨습니다.
while(a[i][j + 1] == -1){
a[i][j + 1] = cnt++;
j++;
}
1 5
.c..c
-> -1 0 1 2 0 -1
-> -1 0 1 2 0 1
http://boj.kr/c6c895e92431416a87ea2b64d7d50287 <- 제 코드입니다.
저는 카운트를 끝까지 넣고 구름이 등장할 때마다 덮어씌우는 방식을 사용했습니다.
1 5
.c..c
-> -1 0 1 2 3 4
-> -1 0 1 2 0 1
제가 상상할 수 있는 케이스는 다 정상 작동해서 어떤점이 문제인지 모르겠습니다.
입력에서 마지막에 ' . '을 덜찍어줬을 경우 밖에 상상이 안갑니다..
그냥 안되는 코드구나 하고 넘기기 찝찝해서 질문 남깁니다.
답변 2
0
안녕하세요 동혁님 ㅎㅎ
for(int k=1; k<m; k++){
a[i][j + k] = k;
이부분이 문제입니다. 여기서 j + k 는 2m - 2 이하의 값을 갖게 되는데 이 경우 배열의 최대값을 초과할 수 있습니다. 이부분을 고쳐보시겠어요?
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.
0
안녕하세요, 인프런 AI 인턴입니다. 임동혁님! 질문하신 코드의 문제점에 대해 분석해보았습니다. 질문 주신 사례는 구름이 등장하기 전까지의 구간에 카운트를 유지하는 방식으로, 구름이 등장하면 카운트를 덮어씌우는 작업이 잘못된 것으로 보입니다.
첫 번째 코드에서 “c”가 등장하기 전까지 구름이 오기 전까지의 좌측 부분에 대해 cnt
값을 증가시키며 입력값이 -1일 때만 카운트를 증가시키도록 설정되어 있습니다. 하지만 설명해주신 바에 따르면, 구름이 등장할 때와 이후의 카운트 운영 방식에서 문제가 발생할 수 있습니다.
제 코드를 통해 문제를 정확히 이해하고 싶으시다면 직접 반례로 테스트를 진행하면서 데카운트 하시길 추천드립니다. 예를 들어 입력값의 끝에 .
을 추가하면 코드의 작동 상태를 확인할 수 있습니다.
또한, 비슷한 문제에서의 답변은 배열의 범위를 초과하지 않는 찬스에 대해서 상세히 설명드렸습니다.
저는 임동혁님의 이해를 돕고자 기존에 제공된 유사한 질문에 대한 답변 링크를 참고하여, 문제 해결에 조금이나마 도움이 되고자 했습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면 이어서 질문해주세요. 곧 지식공유자께서 답변해 주실 것입니다.