인프런 커뮤니티 질문&답변

데자르님의 프로필 이미지
데자르

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

4-B 동전뒤집기

작성

·

176

0

안녕하세요

 

먼저 제가 처음 작성한 코드입니다.

http://boj.kr/fa4a2cffd39f4e388d7b79b7d140679

강사님의 코드와 99% 유사한데, 17코드, FOR문에서 i<=(1<<n)로 작성하였을 때, 틀렸다고 나왔습니다.

여기서, i<=(1<<n) --> i<(1<<n)로 변경하였을 때는 맞다고 나왔습니다.

 

그런데, 저는 (1<<n)열까지 포합시켰을 때 틀린 이유를 모르겠습니다.

(1<<n) 열은 아무 값도 없어서 굳이 탐색할 필요 없지만, 전역변수로 선언하면 어차피 0으로 초기화 되므로,

cnt는 항상 0이 되야 된다고 생각했는데

1<<n열의 값을 출력해보니까 -5,-6 같은 값이 들어가 있는 이유를 모르겠습니다.

 

답변 1

0

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 데자르님 ㅎㅎ

i<=(1<<n)

>> 이 부분은 해당 되는 경우의 수가 없는 부분이기 때문에 그렇습니다.

예를 들어 n이 3일 때

000

001

010

011

100

101

111

이렇게 8가지의 경우의수가 있죠?

근데

1000

이런 경우의 수는 없지 않을까요?

 

없는 경우의 수를 넣어서 틀렸다고 뜨는 것 같습니다.

 

감사합니다.

데자르님의 프로필 이미지
데자르

작성한 질문수

질문하기