shinyy0312   2년 전

문제에서 주어진 지도의 크기의 값을 입력 받을 때

{
    scanf("%d %d",&N,&M);
    for(int i = 0 ; i <N ; i++){
        for(int j = 0 ; j < M ; j++){
            scanf("%1d",&map[i][j]);
        }
    }

위와 같이 사용하면 정답인데

    cin>>N>>M;
    for(int i = 0 ; i <N ; i++){
        for(int j = 0 ; j < M ; j++){
            cin>>map[i][j];
        }
    }

이렇게 쓰면 오답이 되더라구요.

scanf와 cin의 차이점을 모르겠네요.

cin으로 정답으로 하게 하려면 어떻게 바꿔야 하나요?


djm03178   2년 전

cin을 쓰면 10101100 같은 것을 통째로 하나의 수로 인식하기 때문에 틀립니다. scanf는 %1d로 했기 때문에 맞는 것이고, 아무 처리 없이 %d로 쓰면 똑같이 틀리게 됩니다.

shinyy0312   2년 전

답변으로 인해 원인은 알게 되었습니다.

그러면 cin으로 %1d와 같은 방법이 되게 만들 수 없나요?

djm03178   2년 전

C++을 공부하면서도 cin cout을 잘 사용을 안 해서 모르겠습니다. 다른 분들이 답변해 주시길 기대합니다 :)

shinyy0312   2년 전

구글로 검색해보니 cin.read가 있으나 권장하지는 않는군요.. 감사합니다.

댓글을 작성하려면 로그인해야 합니다.