ํ๋ก๊ทธ๋๋จธ์ค ์๊ณ ๋ฆฌ์ฆ ํ์ด
์ฌ์ฉ ์ธ์ด : ์๋ฐ์คํฌ๋ฆฝํธ JavaScript JS
1. ํน๋ณํ ์ด์ฐจ์ ๋ฐฐ์ด 2
1) ๋ฌธ์ ์ค๋ช
n × n ํฌ๊ธฐ์ ์ด์ฐจ์ ๋ฐฐ์ด arr์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, arr์ด ๋ค์์ ๋ง์กฑํ๋ฉด 1์ ์๋๋ผ๋ฉด 0์ return ํ๋ solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
0 ≤ i, j < n์ธ ์ ์ i, j์ ๋ํ์ฌ arr[i][j] = arr[j][i]
2) ์ ํ ์ฌํญ
- 1 ≤ arr์ ๊ธธ์ด = arr์ ์์์ ๊ธธ์ด ≤ 100
- 1 ≤ arr์ ์์์ ์์ ≤ 1,000
- ๋ชจ๋ arr์ ์์์ ๊ธธ์ด๋ ๊ฐ์ต๋๋ค.
3) ์ ์ถ๋ ฅ ์
arr | result |
[[5, 192, 33], [192, 72, 95], [33, 95, 999]] | 1 |
[[19, 498, 258, 587], [63, 93, 7, 754], [258, 7, 1000, 723], [587, 754, 723, 81]] | 0 |
2. ์ฌ์ฉํ ๋ฉ์๋: for๋ฌธ์ผ๋ก ๋ฐฐ์ด์ ๋ชจ๋ ์์ ์ํ
for๋ฌธ
for๋ฌธ์ ๊ดํธ๋ก ๊ฐ์ธ๊ณ ์ธ๋ฏธ์ฝ๋ก ์ผ๋ก ๊ตฌ๋ถํ ์ธ ๊ฐ์ ์ ํ์๊ณผ, ๋ฐ๋ณต์ ์ํํ ๋ฌธ(์ฃผ๋ก ๋ธ๋ญ๋ฌธ)์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
let str = '';
for (let i = 0; i < 9; i++) {
str = str + i;
}
console.log(str);
// Expected output: "012345678"
// ๊ตฌ๋ฌธ
for ([initialization]; [condition]; [final-expression])
statement
1) ๋งค๊ฐ๋ณ์
initialization
- ์(ํ ๋น์ ํฌํจ) ๋๋ ๋ณ์ ์ ์ธ์ผ๋ก, ์ฃผ๋ก ์นด์ดํฐ ๋ณ์๋ฅผ ์ด๊ธฐํํ ๋ ์ฌ์ฉ
- var ๋๋ let ํค์๋๋ฅผ ์ฌ์ฉํด ์๋ก์ด ๋ณ์๋ฅผ ์ ์ธํ ์๋ ์์
- var ํค์๋๋ก ์ ์ธํ ๋ณ์๋ ๋ฐ๋ณต๋ฌธ์ ์ ํ๋์ง ์๋๋ค. ์ฆ for ๋ฌธ๊ณผ ๊ฐ์ ๋ฒ์์ ์์นํ๋ค.
- let ํค์๋๋ก ์ ์ธํ ๋ณ์๋ ๋ฐ๋ณต๋ฌธ์ ์ง์ญ ๋ณ์๊ฐ ๋ฉ๋๋ค.
- ์์ ๊ฒฐ๊ณผ๋ ๋ฒ๋ ค์ง๋๋ค.
condition
- ๋งค ๋ฐ๋ณต๋ง๋ค ํ๊ฐํ ์
- ํ๊ฐ ๊ฒฐ๊ณผ๊ฐ ์ฐธ์ด๋ผ๋ฉด statement๋ฅผ ์คํํ๋ค.
- ์ด ์์ ๋ฃ์ง ์์์ ๋ ๊ณ์ฐ ๊ฒฐ๊ณผ๋ ์ธ์ ๋ ์ฐธ์ด ๋๋ค.
- ๊ณ์ฐ ๊ฒฐ๊ณผ๊ฐ ๊ฑฐ์ง์ด๋ผ๋ฉด for ๋ฌธ์ ๋ฐ๋ก ๋ค์ ์์ผ๋ก ๊ฑด๋ ๋ด๋ค.
final-expression
- ๋งค ๋ฐ๋ณต ํ ํ๊ฐํ ์์ผ๋ก, ๋ค์๋ฒ condition ํ๊ฐ ์ด์ ์ ๋ฐ์
- ์ฃผ๋ก ์นด์ดํฐ ๋ณ์๋ฅผ ์ฆ๊ฐํ๊ฑฐ๋ ๋ฐ๊ฟ ๋ ์ฌ์ฉํ๋ค.
statement
- ์กฐ๊ฑด์ ํ๊ฐ ๊ฒฐ๊ณผ๊ฐ ์ฐธ์ผ ๋ ์คํํ๋ ๋ฌธ
- ์ฌ๋ฌ ๋ฌธ์ ๋ฐ๋ณต ์คํํ๋ ค๋ฉด ๋ธ๋ญ๋ฌธ({ ... })์ผ๋ก ๋ฌถ์ด์ผ ํ๋ค.
- ์๋ฌด๊ฒ๋ ์คํํ์ง ์์ผ๋ ค๋ฉด ๊ณต๋ฐฑ๋ฌธ (;) ์ฌ์ฉ
3. ๋ต์
1) ๋์ ํ์ด
(1) if๋ฌธ ์์ ์กฐ๊ฑด์
// ํ๋ฆฐ ๋ต1 - if๋ฌธ ์์ ์กฐ๊ฑด์ arr[i][j] === arr[j][i]
function solution(arr) {
for (let i=0; i<arr.length; i++) {
for (let j=0; j<arr.length; j++) {
if (arr[i][j] === arr[j][i]) {
return 1;
}
}
}
return 0;
}
for๋ฌธ์ ๋ ๋ฒ์จ์, ๊ฐ ๋ฐฐ์ด๊ณผ ๋ฐฐ์ด ์์ ๋ฐฐ์ด์ ์ํํ๋ ๋ก์ง๊น์ง๋ ์ธ์ ๋๋ฐ for๋ฌธ ์์ statement์์ ์๋ชป ์ธ์์ ๋ฌธ์ ํ์ด๊ฐ ์ด๋ ค์ ๋ค.
- ์์ ํ์ด๋ ๋์นญ์ด ๋๋ ๋ชจ๋ ์์์ ๋ํด ๊ฒ์ฌ๋ฅผ ์ํํ๊ณ , ๋ง์ฝ arr[i][j]์ arr[j][i]๊ฐ ํ๋๋ผ๋ ๋์นญ๋๋ฉด ์ฆ์ 1์ ๋ฐํํ๋ค. ์ด ํจ์๋ ์ต์ด๋ก ๋์นญ๋๋ ์์๋ฅผ ์ฐพ์๋ง์ 1์ ๋ฐํํ๋ฏ๋ก, ์ดํ์ ๋์นญ๋์ง ์๋ ์์ ์์ด ์๋๋ผ๋ ํ์ธํ์ง ์๊ณ ์ข ๋ฃํ๋ค. ๋ฐ๋ผ์ ์ด ํจ์๋ ์ ์ฒด ๋ฐฐ์ด์ด ์๋ฒฝํ๊ฒ ๋์นญ์ธ์ง๋ฅผ ์ ํํ๊ฒ ํ๋จํ์ง ๋ชปํ๋ค.
// ์ฌ๋ฐ๋ฅธ ๋ต - if๋ฌธ ์์ ์กฐ๊ฑด์ arr[i][j] !== arr[j][i]
function solution(arr) {
for (let i=0; i<arr.length; i++) {
for (let j=0; j<arr.length; j++) {
if (arr[i][j] !== arr[j][i]) {
return 0;
}
}
}
return 1;
}
- ํ์ง๋ง ์์ ๋ต์ ๋์นญ์ด ๋์ง ์๋ ๋ชจ๋ ์์์ ๋ํด ๊ฒ์ฌ๋ฅผ ์ํํ๊ณ , ๋ง์ฝ ์ด๋ค ์์๊ฐ ๋์นญ๋์ง ์์ผ๋ฉด ์ฆ์ 0์ ๋ฐํํ๋ค. ์ด ํจ์๋ ๋์นญ๋์ง ์๋ ์์๊ฐ ํ๋๋ผ๋ ์์ผ๋ฉด ์ฆ์ 0์ ๋ฐํํ๋ฏ๋ก, ์ ์ฒด ๋ฐฐ์ด์ด ๋์นญ๋๋์ง๋ฅผ ์ ํํ๊ฒ ํ๋จํ ์ ์๋ค. ๋ง์ฝ ๋ชจ๋ arr[i][j]์ arr[j][i]๊ฐ ๋์นญ๋๋ฉด (์ฆ, ๋์นญ๋์ง ์๋ ์์๊ฐ ์์ผ๋ฉด) ๋ฃจํ๋ฅผ ๋๊น์ง ์คํํ ํ์ 1์ ๋ฐํํ๋ค.
(2) ์ผํญ ์ฐ์ฐ์
// ํ๋ฆฐ ๋ต2 - if๋ฌธ ์์ ์ผํญ ์ฐ์ฐ์
function solution(arr) {
for (let i=0; i<arr.length; i++) {
for (let j=0; j<arr.length; j++) {
return arr[i][j] !== arr[j][i] ? 0 : 1
}
}
}
- ๋ํ ์ผํญ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ฉด for๋ฌธ ์์ ๋ฃจํ๊ฐ ์ฒ์ 1๋ฒ(i=0, j=0์ผ ๋)๋ง ์คํ๋๊ณ ๋ฐ๋ก ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๊ฒ ๋๋ฏ๋ก, ์ฌ๊ธฐ์๋ ์ผํญ ์ฐ์ฐ์๋ฅผ ์ฐ๋ ๊ฒ์ด ์ณ์ง ์๋ค.
2) ๋ค๋ฅธ ์ฌ๋์ ํ์ด
function solution(arr) {
return arr.every((r, i) => r.every((_, j) => arr[i][j] === arr[j][i])) ? 1 : 0;
}
Array.prototype.every() ๋ฉ์๋
- every() ๋ฉ์๋๋ ๋ฐฐ์ด ์์ ๋ชจ๋ ์์๊ฐ ์ฃผ์ด์ง ํ๋ณ ํจ์๋ฅผ ํต๊ณผํ๋์ง ํ ์คํธํ์ฌ boolean ๊ฐ์ ๋ฐํํ๋ค.
const isBelowThreshold = (currentValue) => currentValue < 40;
const array1 = [1, 30, 39, 29, 10, 13];
console.log(array1.every(isBelowThreshold));
// Expected output: true
์ฐธ๊ณ ์ฌ์ดํธ
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Statements/for
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/every
'๐ป Programming > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค Lv. 0] 369๊ฒ์ (0) | 2023.08.02 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค Lv. 1] ์ฝ๋ผ์ธ ์ถ์ธก (0) | 2023.08.02 |
[ํ๋ก๊ทธ๋๋จธ์ค Lv. 0] ๊ฐ๊น์ด 1 ์ฐพ๊ธฐ (0) | 2023.07.28 |
[ํ๋ก๊ทธ๋๋จธ์ค Lv. 0] ๋ฐฐ์ด ํ์ ์ํค๊ธฐ (2) | 2023.07.26 |
[ํ๋ก๊ทธ๋๋จธ์ค Lv. 0] ์ธ๋ฑ์ค ๋ฐ๊พธ๊ธฐ (0) | 2023.06.25 |