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

ls888806님의 프로필 이미지
ls888806

작성한 질문수

자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)

7. 봉우리

봉우리문제 if문에서 && 연산자

작성

·

360

·

수정됨

0

선생님께서 풀어주신 풀이에서

if(nx>=0 && nx<n && ny>=0 && ny<n && arr[nx][ny]>=arr[i][j]){

flag = 0;

break;

}

if(flag) answer++;

 

이 부분에서 질문이 있습니다. if 문에서 nx, ny가 각각 0이상이고 n미만이면서 arr[i][j]보다 arr[nx][ny]가 크다면 flag를 0으로 만드는 것이고 이에 해당하지 않는거라면 다 answer++를 하는 것으로 이해했는데요.

&&연산자를 써서 위 조건 중 하나라도 해당하지 않는다면 answer++ 로 이어지는 걸로 알고 있습니다. 그렇다면 arr[1][0] =3을 기준으로 봤을때 왼쪽이 arr[1][-1]가 나오기 때문에 ny<0으로 해당 if문 조건을 충족시키지 못해 answer++로 이어지는 것 아닌가요?

arr[1][-1]이라면 undefined가 나올텐데 이럴 땐 어떻게 되는 지 궁금합니다. 알아서 무시해버리나요?

답변 1

0

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

nx>=0 && nx<n && ny>=0 && ny<n 이 4개 조건 중 하나라도 거짓이면 arr[nx][ny]>=arr[i][j] 비교 자체를 하지 않습니다. arr[1][-1]은 ny>=0 조건이 거짓이 되기 때문에 arr[nx][ny]>=arr[i][j] 비교자체를 하지 않고 그냥 지나갑니다.

arr[1][0]이 answer++로 이어지려면 arr[1][0]과 상하좌우 인접한 4개를 다 비교해서 if문이 4개 모두 거짓이 나와 flag가 초기값인 true값 그대로 있어야 합니다.

ls888806님의 프로필 이미지
ls888806
질문자

그럼 arr[1][0]의 왼쪽은 아예 무시해버리는 건가요? 다른 오른쪽 상 하 모두 flag =0을 만들어서 결국에는 answer에 반영은 안될텐데...

ls888806님의 프로필 이미지
ls888806

작성한 질문수

질문하기