강의

멘토링

커뮤니티

Inflearn Community Q&A

gdgd's profile image
gdgd

asked

10-Week C++ Coding Test | Algorithm Coding Test

7-O

7-O 질문입니다!

Written on

·

419

0

안녕하세요, 큰돌님

17837을 풀던중 문제 예제 입력 5에서 답이 나오지 않습니다.

반례를 다 찾았다고 생각했는데, 대체 왜 안되는지 궁금합니다...

 

https://www.acmicpc.net/source/72120636

c++코딩-테스트

Answer 4

0

gdgd님의 프로필 이미지
gdgd
Questioner

죄송합니다..
저렇게 디버깅 할 생각을 못 했네요

로직 고치고 맞췄습니다!
항상 답글 달아 주시는 것 감사합니다!

 

https://www.acmicpc.net/source/72431720

 

0

kundol님의 프로필 이미지
kundol
Instructor

혹시 디버깅코드 넣어서 벡터내의 있는 말들이 잘 움직이나 테스팅해보셨나요?

ex5의 경우.

이거 정상적인 코드는

START
0 1 0 1 0 0 
1 0 0 0 0 1 
0 0 0 0 0 0 
0 0 2 0 2 0 
0 0 0 0 0 0 
1 0 0 0 0 1 
START
1 0 0 0 0 0 
1 0 0 1 0 0 
0 0 0 2 0 1 
0 0 0 0 0 0 
0 2 0 0 0 0 
1 0 0 0 0 1 
START
0 1 0 0 0 0 
1 0 1 0 0 1 
0 0 1 1 0 0 
0 1 0 0 0 0 
0 0 1 0 0 0 
1 0 0 0 0 1 
START
1 0 0 0 0 1 
1 0 0 0 0 0 
0 2 1 0 0 0 
0 0 0 1 0 0 
0 1 0 0 0 0 
1 0 0 0 0 1 
START
0 1 0 0 0 0 
1 0 0 0 0 1 
0 0 0 1 0 0 
1 1 1 0 0 0 
0 0 1 0 0 0 
1 0 0 0 0 1 
START
1 0 0 0 0 0 
1 0 0 1 0 0 
0 0 0 0 0 1 
0 1 0 0 0 0 
0 3 0 0 0 0 
1 0 0 0 0 1 
7

다음과 같이 움직입니다.

 

근데 동훈님 코드는 다음과 같이 움직입니다.

START
0 1 0 1 0 0 
1 0 0 0 0 1 
0 0 0 0 0 0 
0 0 2 0 2 0 
0 0 0 0 0 0 
1 0 0 0 0 1 
START
1 0 0 0 0 0 
1 0 0 1 0 0 
0 0 0 0 0 1 
0 0 2 0 0 0 
0 0 0 0 0 0 
1 0 2 0 0 1 
START
0 1 0 0 0 0 
1 0 0 0 0 1 
0 0 0 1 0 0 
1 1 2 0 0 0 
0 0 0 0 0 0 
1 0 0 0 0 1 
START
1 0 0 0 0 1 
1 0 1 0 0 0 
0 0 1 0 0 0 
0 2 0 1 0 0 
0 0 0 0 0 0 
1 0 0 0 0 1 
START
0 1 0 0 0 0 
1 0 0 0 0 1 
0 0 2 1 0 0 
0 0 2 0 0 0 
0 0 0 0 0 0 
1 0 0 0 0 1 
START
1 0 0 0 0 0 
1 0 0 1 0 0 
0 0 0 0 0 1 
0 0 1 1 2 0 
0 0 0 0 0 0 
1 0 0 0 0 1 
START
0 1 0 1 0 0 
1 0 0 0 0 1 
0 0 0 0 0 0 
0 0 0 3 0 0 
0 0 1 0 0 0 
1 0 0 0 0 1 
START
1 0 0 0 0 1 
1 0 0 1 0 0 
0 0 0 0 0 0 
0 3 0 0 0 0 
0 0 0 0 0 0 
1 0 1 0 0 1 
START
0 1 0 0 0 0 
1 0 0 0 0 1 
0 0 0 1 0 0 
0 3 0 0 0 0 
0 0 1 0 0 0 
1 0 0 0 0 1 
START
1 0 0 0 0 0 
1 0 0 0 0 0 
0 0 0 0 0 1 
0 0 2 3 0 0 
0 0 0 0 0 0 
1 0 0 0 0 1 
11

여기서 하나만 뽑으면.

그냥 첫번째부터 잘못되었는데요.

 

이부분 다음과 같이 진행되어야 하는데요.

START
0 1 0 1 0 0 
1 0 0 0 0 1 
0 0 0 0 0 0 
0 0 2 0 2 0 
0 0 0 0 0 0 
1 0 0 0 0 1 
START
1 0 0 0 0 0 
1 0 0 1 0 0 
0 0 0 2 0 1 
0 0 0 0 0 0 
0 2 0 0 0 0 
1 0 0 0 0 1 

 

이렇게 진행되고 있습니다.

START
0 1 0 1 0 0 
1 0 0 0 0 1 
0 0 0 0 0 0 
0 0 2 0 2 0 
0 0 0 0 0 0 
1 0 0 0 0 1 
START
1 0 0 0 0 0 
1 0 0 1 0 0 
0 0 0 0 0 1 
0 0 2 0 0 0 
0 0 0 0 0 0 
1 0 2 0 0 1 

확인부탁드립니다.

 

디버깅코드

        if (move()){
            cout << cnt;
            break;
        } 
        cout << "START\n";
        for (int i = 1; i <= N; i++){
            for (int j = 1; j <= N; j++){
                cout << M[i][j].size() << " ";
            }
            cout << "\n";
        }

 

 

감사합니다.

0

gdgd님의 프로필 이미지
gdgd
Questioner

바깥으로 나갈때, 파란색으로 경우 처리를 하라고 했으니, 조건문을 바깥으로 나간다면 이라고 처리 해주었습니다. 뒤는 else if 문을 사용해 밖으로 벗어나는 경우를 없앴습니다.

 

image

image

https://www.acmicpc.net/source/72245823

0

kundol님의 프로필 이미지
kundol
Instructor

안녕하세요 동훈님 ㅎㅎ

코드 좀 봤는데요.

 

    for (int i = 1; i <= N; i++){
        for (int j = 1; j <= N; j++){
            cin >> A[i][j];
        }
    }

입력을 1 부터 받아놨고 그걸기반으로 했다면...

        if (my > N || my <= 0 || mx > N || mx <= 0){

이거 1 ~ N 이렇게 되어야 하는게 아닐까요?

 

감사합니다.

gdgd님의 프로필 이미지
gdgd
Questioner

바깥으로 나갈때, 파란색으로 경우 처리를 하라고 했으니, 조건문을 바깥으로 나간다면 이라고 처리 해주었습니다. 뒤는 else if 문을 사용해 밖으로 벗어나는 경우를 없앴습니다.

 

image

image

https://www.acmicpc.net/source/72245823

gdgd's profile image
gdgd

asked

Ask a question