DIAMOND문제 채점에서 의심가는 부분을 발견했습니다 wjy721 안녕하세요 DIAMOND문제 풀면서 여러가지 소스를 제출해보면서 특정 입력에 대해 오답이 뜨는 소스코드도 "정답" 판정을 받아서 질문 드립니다. 아래의 입력 3 ..#.. .#.#. ..#.. 에 대한 정답은 1입니다. 그런데, 위의 입력에 대해서 3을 출력하는 소스215729를 제출해서 정답 판정을 받았습니다. 반면에 위의 입력에 대해 1을 출력하는 소스는 오답 판정을 받았네요. 제가 문제를 해결한 방식은, 2차원 벡터 vector < vector < int > > cache를 선언하고 cache[y][x] == "(x,y)에 있는 #을 다이아몬드의 가장 아래쪽으로 기준 삼았을때, 만들 수 있는 가장 큰 다이아몬드의 크기"로 정의하고 아래의 점화식을 세웠습니다. … ⓒ … ⓐ#ⓑ … … ? … 위 그림에서 ?위치를 (x, y)라고 했을 때, cache[y][x] = min( cache[y-1][x-1], cache[y-1][x+1], cache[y-2][x] ) + 2; ⓐ ⓑ ⓒ 여기서, ?위치의 바로 윗칸에는 반드시 #이 있어야하므로, 해당 칸에 있는 문자가 '.'일 경우, 반복문을 건너뛰는 아래의 소스를 추가하였습니다. if (table[y - 1][x] == '.') continue; ?윗 칸이 무엇인지 확인하는 위의 코드를 삽입한 소스215728는 오답을 받았고, 위의 코드를 주석처리한 코드215729는 정답을 받았습니다. 제가 생각하기에 채점 데이터에 문제가 있는것 같아서 질문 남겨드립니다. 감사합니다. 10년 전
3개의 댓글이 있습니다. astein 채점 데이터가 모든 케이스를 커버하는 것은 아니기 때문에 잘못된 코드로도 정답 판정을 받을 수 있긴 합니다... :) 10년 전 link astein 아래의 데이터에서 문제가 있는 것 같습니다. 8 .#. ### .#. ... ... .#. ### .#. 10년 전 link wjy721 제가 생각했던 코드 한 줄에 문제가 있는게 아니라 전혀 다른곳에 문제가 있었네요... 답변 감사합니다! 10년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
wjy721
안녕하세요
DIAMOND문제 풀면서 여러가지 소스를 제출해보면서
특정 입력에 대해 오답이 뜨는 소스코드도 "정답" 판정을 받아서 질문 드립니다.
아래의 입력
3
..#..
.#.#.
..#..
에 대한 정답은 1입니다.
그런데, 위의 입력에 대해서 3을 출력하는 소스215729를 제출해서 정답 판정을 받았습니다.
반면에 위의 입력에 대해 1을 출력하는 소스는 오답 판정을 받았네요.
제가 문제를 해결한 방식은,
2차원 벡터 vector < vector < int > > cache를 선언하고
cache[y][x] == "(x,y)에 있는 #을 다이아몬드의 가장 아래쪽으로 기준 삼았을때, 만들 수 있는 가장 큰 다이아몬드의 크기"로 정의하고 아래의 점화식을 세웠습니다.
…
ⓒ
… ⓐ#ⓑ …
… ? …
위 그림에서 ?위치를 (x, y)라고 했을 때,
cache[y][x] = min( cache[y-1][x-1], cache[y-1][x+1], cache[y-2][x] ) + 2;
ⓐ ⓑ ⓒ
여기서, ?위치의 바로 윗칸에는 반드시 #이 있어야하므로,
해당 칸에 있는 문자가 '.'일 경우, 반복문을 건너뛰는 아래의 소스를 추가하였습니다.
if (table[y - 1][x] == '.') continue;
?윗 칸이 무엇인지 확인하는 위의 코드를 삽입한 소스215728는 오답을 받았고,
위의 코드를 주석처리한 코드215729는 정답을 받았습니다.
제가 생각하기에 채점 데이터에 문제가 있는것 같아서 질문 남겨드립니다.
감사합니다.
10년 전