배열을 하나하나 탐색하다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
// 순차 탐색
// 16은 배열의 4번째 위치에 있습니다.
// 16은 배열에 존재하지 않습니다.
let arr = [20, 51, 4, 16, 99, 102, 8]
let find = 8;
let lenArr = arr.length // 7
if (arr.includes(find)) {
for (i = 0; i <= lenArr - 1; i++) {
if (arr[i] == find) {
console.log(`${find}은(는) 배열의 ${i + 1}번째 위치에 있습니다`)
break;
}
}
}
else {
console.log(`${find}은(는) 배열에 존재하지 않습니다.`)
}
// -------선생님 코드--------------------------------------------------------------------------
let cnt = 0;
for (i = 0; i <= lenArr - 1; i++) {
if (find != arr[i]) {
cnt++;
}
else {
break;
}
}
if (cnt >= 7) {
console.log(`${find}은(는) 배열에 존재하지 않습니다.`)
} else {
console.log(`${find}은(는) 배열의 ${cnt + 1}번째 위치에 있습니다.`)
}
</script>
</body>
</html>
</html>
내 풀이
주어진 숫자가 배열 안에 존재하면 그 수는 몇 번째에 위치합니다라고 출력하고 존재하지 않으면 그 수는 배열에 존재하지 않습니다라고 출력한다. 배열함수의 includes를 사용해서 배열에 존재하는지 안 하는지부터 확인하면 배열에 존재하지 않습니다를 바로 처리할 수 있다. 큰 틀로 if 조건문안에 includes를 사용해서 true면 존재하니까 반복문으로 들어간다.
반복문은 배열의 인덱스로 접근하는데, 인덱스가 0 ~ 인덱스 길이 - 1까지 있으므로 초기값 0, 증감식 i++ 조건부는 인덱스 길이 - 1까지 해주면 된다. 인덱스로 배열의 요소 접근하는 방법을 사용하여 주어진 값과 배열[i]이 같으면 배열에 그 수가 존재하고, 몇 번째인지 구하려면 i는 인덱스니까 몇 번째는 i + 1과 같으니까 그렇게 해주면 된다.
선생님 풀이
찾는 수와 배열의 인덱스 0번 부터 차근 차근 비교하는 방법이다. 찾는 수와 배열의 수가 같지 않으면 cnt(카운트)를 1씩 증가시킨다. 같으면 else로 반복문을 빠져나와 외부 if else문으로 들어가서 cnt가 7(배열의 길이) 보다 큰 경우는 배열에 찾는 수가 없다는 의미니까 없다고 출력한다. cnt의 값이 배열의 길이보다 작으면 몇 번째 위치에 있는지 출력한다.
'Front-End > 2. JavaScript 자료구조' 카테고리의 다른 글
[JS] Ex04_Queue구조.html (0) | 2023.06.20 |
---|---|
[JS] Ex03_Stack구조.html (0) | 2023.06.20 |
[JS] Ex02_이진탐색.html (0) | 2023.06.15 |