ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์—์„œ ์ œ๊ณตํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜๋ฌธ์ œ๋ฅผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ํ’€์–ด๋ดค์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ ์„ค๋ช…

๊ธธ์ด๊ฐ€ n์ธ ๋ฐฐ์—ด์— 1๋ถ€ํ„ฐ n๊นŒ์ง€ ์ˆซ์ž๊ฐ€ ์ค‘๋ณต ์—†์ด ํ•œ ๋ฒˆ์”ฉ ๋“ค์–ด ์žˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
1๋ถ€ํ„ฐ n๊นŒ์ง€ ์ˆซ์ž๊ฐ€ ์ค‘๋ณต ์—†์ด ํ•œ ๋ฒˆ์”ฉ ๋“ค์–ด ์žˆ๋Š” ๊ฒฝ์šฐ true๋ฅผ, ์•„๋‹Œ ๊ฒฝ์šฐ false๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ํ•จ์ˆ˜ solution์„ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

์ œํ•œ์‚ฌํ•ญ
  • ๋ฐฐ์—ด์˜ ๊ธธ์ด๋Š” 10๋งŒ ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • ๋ฐฐ์—ด์˜ ์›์†Œ๋Š” 0 ์ด์ƒ 10๋งŒ ์ดํ•˜์ธ ์ •์ˆ˜์ž…๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ
arrresult
[4, 1, 3, 2]true
[4, 1, 3]false
์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ #1
์ž…๋ ฅ์ด [4, 1, 3, 2]๊ฐ€ ์ฃผ์–ด์ง„ ๊ฒฝ์šฐ, ๋ฐฐ์—ด์˜ ๊ธธ์ด๊ฐ€ 4์ด๋ฏ€๋กœ ๋ฐฐ์—ด์—๋Š” 1๋ถ€ํ„ฐ 4๊นŒ์ง€ ์ˆซ์ž๊ฐ€ ๋ชจ๋‘ ๋“ค์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. [4, 1, 3, 2]์—๋Š” 1๋ถ€ํ„ฐ 4๊นŒ์ง€์˜ ์ˆซ์ž๊ฐ€ ๋ชจ๋‘ ๋“ค์–ด ์žˆ์œผ๋ฏ€๋กœ true๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #2
[4, 1, 3]์ด ์ฃผ์–ด์ง„ ๊ฒฝ์šฐ, ๋ฐฐ์—ด์˜ ๊ธธ์ด๊ฐ€ 3์ด๋ฏ€๋กœ ๋ฐฐ์—ด์—๋Š” 1๋ถ€ํ„ฐ 3๊นŒ์ง€ ์ˆซ์ž๊ฐ€ ๋ชจ๋‘ ๋“ค์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. [4, 1, 3]์—๋Š” 2๊ฐ€ ์—†๊ณ  4๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ false๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

100์ ์ด ๋‚˜์˜ฌ๋•Œ๊นŒ์ง€ ์ฃผ๊ตฌ ์žฅ์ฐฝ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ์˜ ๊ฒ€์ฆ์ด 100ํ”„๋กœ์ผ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ์—ฌ๊ธฐ์„œ๋„ ๊ฒ€์ฆ์ด ์•ˆ๋œ๊ฑธ ์˜ฌ๋ฆด ์ˆ˜๋Š” ์—†์œผ๋‹ˆ๊น์š” ใ…‹ใ…‹


solution.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
function solution(arr) {
    var answer = true
    var length = arr.length
    var obj = {}                //์ค‘๋ณต๋˜์ง€์•Š๋Š” ์ˆซ์ž๋ฅผ ๋‹ด์„ json ๊ฐ์ฒด
    var list = []                //์ค‘๋ณต์ด ํ—ˆ์šฉ๋˜๋Š” ๋ฐฐ์—ด
    for(var i=0;i<length;i++){    //json๊ฐ์ฒด์™€ list๋ฐฐ์—ด์— arr๋กœ ์ฃผ์–ด์ง„ ๋ชจ๋“  ๊ฐ’์„ ๋„ฃ์Šต๋‹ˆ๋‹ค.
        obj[arr[i]] = 0            //์—ฌ๊ธฐ์„œ json์€ key๊ฐ’์œผ๋กœ ๋“ค์–ด๊ฐ€๊ฒ ์ฃ 
        list[i] = arr[i]
    }
    var outofIndex = function(element){        //๋ฐ˜๋ณต์„ ์ค‘๋„์— stop
        return element<1 || element>length    //๋ฒ”์œ„์— ๋งž์ง€์•Š์€ ์ˆซ์ž๊ฐ€ ํ•˜๋‚˜๋ผ๋„ ์žˆ์œผ๋ฉด true ๋ฆฌํ„ด.์—†์œผ๋ฉด false
    }
    answer = Object.keys(obj).length == list.length ? true : false  //์‚ผํ•ญ์—ฐ์‚ฐ์ž ๊ฐ์ฒด์˜ ํ‚ค ๋ฐฐ์—ด๊ธธ์ด, list๋ฐฐ์—ด ๊ธธ์ด ๋น„๊ต
    if(answer == true){                     //์ฒซ๋ฒˆ์งธ์— ํ•„ํ„ฐ๋ง์ด ์•ˆ๋์„ ๋•Œ์—๋งŒ ์ง„์ž…
        answer = !(arr.some(outofIndex))    //outofIndex์˜ return ์กฐ๊ฑด์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    }
    return answer     //์ตœ์ข… ๊ฒฐ๊ณผ
}
var arr = []
var temp
var rnum
for(var i=0;i<100000; i++){    //10๋งŒ๊ฐœ์˜ ๋ฐฐ์—ด์„ ์ƒ์„ฑ
    arr[i] = i+1
}
for(var i=0;i<10;i++){        //์„ž๋Š” ๊ณผ์ •์ด๊ธดํ•œ๋ฐ ๊ทธ๋ƒฅ 10๋ฒˆ๋งŒ ์„ž์—ˆ์Šต๋‹ˆ๋‹ค.
    randNum = Math.floor(Math.random()*99999)
    temp = arr[i]
    arr[i] = arr[randNum]
    arr[randNum] = temp
}
console.log( solution(arr) )
cs


์ƒํ™ฉ ๊ฐ€์ •์„ ์ข€ ๊ทน๋‹จ์ ์œผ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒŒ ์ •ํ™•์„ฑ์ด ๋ณด์žฅ ๋˜์–ด๋„ ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง€๋ฉด ์ ์ˆ˜๋ฅผ ์•ˆ์ค˜์„œ ์ค‘๋ณต์ด ํ•˜๋‚˜๋„ ์—†๋Š” ๋ฐฐ์—ด์„ ์„ ์–ธ ํ›„์— ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋™์ž‘์‹œ์ผœ๋ดค์Šต๋‹ˆ๋‹ค.  


์—ฌ๊ธฐ์„œ ์ ์šฉํ–ˆ๋˜ ์กฐ๊ฑด์€ ๋‘ ๊ฐ€์ง€ ์ž…๋‹ˆ๋‹ค.


1. ์ค‘๋ณต๋˜๋Š” ๊ฐ’์ด ์žˆ๋Š”๊ฐ€?

2. ๋ฐฐ์—ด ๊ธธ์ด๊ฐ€ n์ผ ๋•Œ ๋ฐฐ์—ด์˜ ์›์†Œ ๊ฐ’์ด 1 ~ n ๊นŒ์ง€ ์กด์žฌํ•˜๋Š”๊ฐ€? 


์ž…๋‹ˆ๋‹ค. ํ•œ ๊ฐ€์ง€ ์กฐ๊ฑด ์—์„œ๋ผ๋„ ์–ด๊ธ‹๋‚˜๋ฉด ๋ฐ”๋กœ ๋Š์–ด์ค˜์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฐ˜๋ณต๋ฌธ์— ๊ด€ํ•œ ์ฝ”๋“œ๋Š” ์ตœ๋Œ€ํ•œ ์„ฑ๋Šฅ์ด ์ข‹์€ ์ชฝ์œผ๋กœ ์ž‘์„ฑํ–ˆ๋Š”๋ฐ

forEach๋ฌธ์„ ์ฃผ๋กœ ์“ฐ๋‹ค๊ฐ€ ์„ฑ๋Šฅ์ฐจ์ด๊ฐ€ ์ข€ ์žˆ๋‹ค๊ณ ํ•ด์„œ ๊ธฐ๋ณธ for๋ฌธ์œผ๋กœ ๋ฐ”๊ฟ”์คฌ์Šต๋‹ˆ๋‹ค.


์ฒ˜์Œ์—” obj ๊ฐ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ๊ฑฐ๋ž‘ list ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด์„œ ๋น„๊ตํ•œ๋‹ค๋Š”๊ฒŒ ๋„ˆ๋ฌด ๋‚ญ๋น„์ธ๊ฐ€ ์‹ถ์—ˆ๋Š”๋ฐ ๊ทธ ๊ณผ์ •์€ ์ž‘์—…์‹œ๊ฐ„์— ํฌ๊ฒŒ ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ •ํ™•ํ•˜๊ฒŒ ์ฒดํฌ๋Š” ์•ˆํ•ด๋ดค์ง€๋งŒ ๊ทธ ๋ถ€๋ถ„์„ ๋ฐ”๊พธ๊ณ ๋‚˜์„œ ์ •์ƒ์ œ์ถœ์ด ๋˜๋”๊ตฐ์š”


๋‘ ๋ฒˆ์งธ ์กฐ๊ฑด์˜ ๋ฐ˜๋ณต๋ฌธ๋„ some ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค. return ๋ฌธ์— ์ž‘์„ฑํ•œ ์กฐ๊ฑด์— ๋ถ€ํ•ฉํ•˜๊ฒŒ ๋˜๋ฉด true๋ฅผ ๋ฆฌํ„ดํ•ด์ฃผ๊ณ  ๋ฐ˜๋ณต๋ฌธ์„ ๋„์ค‘์— ์ข…๋ฃŒ์‹œ์ผœ์ค๋‹ˆ๋‹ค. ์“ธ ๋ฐ์—†์ด ๋” ๋Œ ํ•„์š”๊ฐ€ ์—†์ฃ 


์ •ํ™•์„ฑ์ด๋ž‘ ํšจ์œจ์„ฑ์ด ๋ฌด์กฐ๊ฑด ์ €๋ ‡๊ฒŒ ๋‚˜์˜ค๋Š” ์ง€๋Š” ์ €๋„ ์ž˜ ๋ชจ๋ฅด๊ฒ ๋Š”๋ฐ ํ˜น์‹œ ํ‘ธ์‹  ๋ถ„ ์žˆ์œผ์‹œ๋ฉด ๊ณต์œ  ๋ถ€ํƒ๋“œ๋ฆด๊ฒŒ์š”~

๋Œ“๊ธ€
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
ยซ   2025/01   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
๊ธ€ ๋ณด๊ด€ํ•จ