๐Ÿ’กAlgorithm/๋ฌธ์ œํ’€๊ธฐ

JS์•Œ๊ณ ๋ฆฌ์ฆ˜ | ๋“ฑ์ˆ˜๊ตฌํ•˜๊ธฐ (์ด์ค‘for๋ฌธ, Array.from)

์ง€์Œ์Œ 2021. 4. 27. 23:07

๋ฌธ์ œ

N(1<=N<=100)๋ช…์˜ ํ•™์ƒ์˜ ๊ตญ์–ด์ ์ˆ˜๊ฐ€ ์ž…๋ ฅ๋˜๋ฉด ๊ฐ ํ•™์ƒ์˜ ๋“ฑ์ˆ˜๋ฅผ ์ž…๋ ฅ๋œ ์ˆœ์„œ๋Œ€๋กœ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์„ธ์š”. ๊ฐ™์€ ์ ์ˆ˜๊ฐ€ ์ž…๋ ฅ๋  ๊ฒฝ์šฐ ๋†’์€ ๋“ฑ์ˆ˜๋กœ ๋™์ผ ์ฒ˜๋ฆฌํ•œ๋‹ค. ์ฆ‰ ๊ฐ€์žฅ ๋†’์€ ์ ์ˆ˜๊ฐ€ 92์ ์ธ๋ฐ 92์ ์ด 3๋ช… ์กด์žฌํ•˜๋ฉด 1๋“ฑ์ด 3๋ช…์ด๊ณ  ๊ทธ ๋‹ค์Œ ํ•™์ƒ์€ 4๋“ฑ์ด ๋œ๋‹ค.

 

์ž…๋ ฅ์˜ˆ์ œ | 87 89 92 100 76

์ถœ๋ ฅ์˜ˆ์ œ | 4 3 2 1 5

 

 

ํ’€์ด

์ด์ค‘ for๋ฌธ์„ ์‚ฌ์šฉํ•œ๋‹ค. ๊ฐ’์„ ๋‘๊ฐœ์”ฉ ๋น„๊ตํ•˜๋ฉด์„œ ์กฐ๊ฑด์— ์ถฉ์กฑํ•˜๋ฉด answer๋ฅผ ++ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค. 

 

์ด์ค‘for๋ฌธ ๊ฐœ๋…

for(let i = 0; i < 5; i++){
	for(let j = 0; j < arr.length; j++){
	}
}

i = 0 ์ผ ๋•Œ, j๊ฐ€ 0๋ถ€ํ„ฐ arr.length ๊นŒ์ง€ ๋ˆ๋‹ค. 

i = 1 ์ผ ๋•Œ, j๊ฐ€ 0๋ถ€ํ„ฐ arr.length ๊นŒ์ง€ ๋ˆ๋‹ค.

i = 2 ์ผ ๋•Œ, j๊ฐ€ 0๋ถ€ํ„ฐ arr.length ๊นŒ์ง€ ๋ˆ๋‹ค.

i = 3 ์ผ ๋•Œ, j๊ฐ€ 0๋ถ€ํ„ฐ arr.length ๊นŒ์ง€ ๋ˆ๋‹ค.

i = 4 ์ผ ๋•Œ, j๊ฐ€ 0๋ถ€ํ„ฐ arr.length ๊นŒ์ง€ ๋ˆ๋‹ค.

 

 

์ฒ˜์Œ์— ํ‘ผ ๋ฐฉ๋ฒ•1

function solution(arr){
	let answer = [];
    
    let count = 1;
    for(let i = 0; i < arr.length; i++){
    	for(let j = 0; j < arr.length; j++){
        	if(arr[j] > arr[i]) {
            	count++; 
            } else count = 0;
            answer.push(count);
            }
            return answer;
     	}
}
        
let arr = [87, 89, 92, 100, 76];
console.log(solution(arr));

์ฒ˜์Œ์— ํ‘ผ ๋ฐฉ๋ฒ•2

const solution = (arr) => {
  let answer = [];

  for (let i = 0; i < arr.length; i++) {
    let count = 0;
    for (let j = 0; j < arr.length; j++) {
      if (arr[i] < arr[j]) count++;
    }
    answer.push(count + 1);
  }
  return answer;
}

const arr = [87, 89, 92, 92, 76];
console.log(solution(arr));

ํ˜„์žฌ๊ฐ’arr[i]์ด arr[j]๋ณด๋‹ค ์ž‘์œผ๋ฉด ์นด์šดํŒ…,

๋‚ด ๊ฐ’์—์„œ +1ํ•œ ๊ฐ’์„ answer๋ฐฐ์—ด์— ๋ˆ„์ ํ•œ๋‹ค. 

 

๋‹ค๋ฅธ ํ’€์ด

1๋กœ ์ดˆ๊ธฐํ™”๋œ 1์ฐจ์› ๋ฐฐ์—ด์„ answer์— ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด๋†“๋Š”๋‹ค.

let n = arr.length;
let answer = Array.from({length:n}, ()=>1);
// Array.from์œผ๋กœ ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ 1๋กœ ๋ฐ”๊ฟ”์ฃผ์—ˆ๋‹ค. 
// [1, 1, 1, 1, 1]
function solution(arr){
	let n = arr.length;
	let answer = Array.from({length:n}, ()=>1);
		for(let i = 0; i < n; i++){
			for(let j = 0; j < n; j++){
				if(arr[j] > arr[i]) answer[i]++;
                // answer์˜ i๋ฒˆ์งธ ๊ฐ’์„ ++ ํ•ด์ค€๋‹ค.
                // answer๋Š” ๋ฐฐ์—ด์ด๋‹ˆ๊นŒ answer๋ฐฐ์—ด์˜ i๋ฒˆ์งธ์— ๋„ฃ์–ด์„œ ++ ํ•ด์ค˜์•ผํ•œ๋‹ค.
            }
         }
         return answer;
        
}
        
let arr = [87, 89, 92, 100, 76];
console.log(solution(arr));

 

์‚ฌ์šฉํ•œ ๊ฐœ๋…

Array.from

๋ฐฐ์—ด๊ฐ’์„ ๋ณ€๊ฒฝํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด ์ƒ์„ฑ

์œ ์‚ฌ๋ฐฐ์—ด๊ฐ์ฒดarrayLike๋‚˜ ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด๋ฅผ ์–•๊ฒŒ ๋ณต์‚ฌํ•ด์„œ ์ƒˆ๋กœ์šด Array ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ ๋‹ค. 

๋ฐฐ์—ด๊ฐ’ ๊ฐ๊ฐ์— ์›ํ•˜๋Š” ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•ด์„œ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด ์ƒ์„ฑํ•˜๊ธฐ

console.log(Array.from('foo'));
// expected output: Array ["f", "o", "o"]

console.log(Array.from([1, 2, 3], x => x + x));
// expected output: Array [2, 4, 6]
// ์ฝœ๋ฐฑํ•จ์ˆ˜๋กœ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ ์‚ฌ์šฉ