Algorism _first _

김린네·2022년 2월 11일

02-11
오늘은 2 문제를 풀었따.

1번은 어찌저찌 풀었는데
2번은... ...... 어쩌다 보니 됬다 ㅎ

🚓1🚓

#1 algorism quiz 1-

const vaild = function (arr1, arr2) {
if (arr1.length != arr2.length)
return false;

var new_arr1 = {};
var new_arr2 = {};
for (word_1 of arr1.split('')) {
    new_arr1[word_1] = new_arr1[word_1] ? new_arr1[word_1] + 1 : 1;
}
for (word_2 of arr2.split('')) {
    new_arr2[word_2] = new_arr2[word_2] ? new_arr2[word_2] + 1 : 1;
}

for (var word3 in new_arr1) {

    if (new_arr1[word3] === new_arr2[word3]) {
        delete new_arr1[word3]
    }
      객체로 만든다음 객체의 key 의 수가 같으면 delete 하는 방식
    // console.log(new_arr1[word3], new_arr2[word3], word3);
}

if (Object.keys(new_arr1).length == 0) {
    console.log('둘은 같다')
}
객체의 길이가 0 이면 true 라고 판단
else if (Object.keys(new_arr1).length > 0) {
    console.log('둘은 안같다')
}

}
vaild('aaz', 'zza');

vaild('anagram', 'nagaram');

quiz - aaz- 와 zza 는 같은 z ,a 사용하는 단어이다. 이단어에 들어있는 숫자의 합이 같은가?

🚓2🚓

const count_different = function (arr1) {
var point1 = 0;
var point2 = 1;

포인터 두개를 줬는데 여기서부터 miss 인듯 답지 보니까 point1 은 고정 point2 는 어쩌피 이동해야되니까 for 문을 돌리면서 자동으로 가야지 너 마음대로 이동시키면 과정이 어려워진다.

if (arr1.length == 0) {
    console.log(0)
    return
}
var i = 0;
while (i < arr1.length) {


    if (arr1[point1] == arr1[point2]) {
       둘이 같아지는 경우 point2 의 이동 . 
        ++point2;

        //  console.log(`point2 ${point2}`)


    }
    else if (arr1[point1] != arr1[point2]) {

둘의 숫자가 같을때 겹칠수도 있다는 생각이 들어서 썼다.

        ++point1;
        // console.log(point1);
        arr1[point1] = arr1[point2];

원래는 안되는데 undefined 되서 돌아감...ㅎ..;;

        if (arr1[point1] == arr1[point2]) {
           
            ++point2;
           
        point1이 이동했더나 point2 와 같은 위치로 가게 되었다. 이럴때는 point2 를 이동시켜야된다고 생각함...
        }


    }
    i++;

}
console.log(point1)
console.log(arr1)

}
count_different([1, 1, 1, 1, 1, 2]);
count_different([1, 2, 3, 4, 4, 4, 7, 7, 12, 12, 13]);
count_different([]);
count_different([-2, -1, -1, 0, 1]);

다른 숫자의 갯수는 몇개인가? 빅0 개념중 for 문의 반복을 사용하지 말고 계산하시오.
포인터의 개념을 사용해서 몇개인지 계산하라 .

원래는 안되는데
되는게
신기..
다음부터 다른 방법을 사용하겠다.
끄읏

3

/*

#1 algorism quiz 1-
const vaild = function (arr1, arr2) {
if (arr1.length != arr2.length)
return false;

var new_arr1 = {};
var new_arr2 = {};
for (word_1 of arr1.split('')) {
    new_arr1[word_1] = new_arr1[word_1] ? new_arr1[word_1] + 1 : 1;
}
for (word_2 of arr2.split('')) {
    new_arr2[word_2] = new_arr2[word_2] ? new_arr2[word_2] + 1 : 1;
}

for (var word3 in new_arr1) {

    if (new_arr1[word3] === new_arr2[word3]) {
        delete new_arr1[word3]
    }



    // console.log(new_arr1[word3], new_arr2[word3], word3);
}

if (Object.keys(new_arr1).length == 0) {
    console.log('둘은 같다')
}
else if (Object.keys(new_arr1).length > 0) {
    console.log('둘은 안같다')
}

}
vaild('aaz', 'zza');

vaild('anagram', 'nagaram');

*/

const count_different = function (arr1) {
var point1 = 0;
var point2 = 1;

if (arr1.length == 0) {
    console.log(0)
    return
}
var i = 0;
while (i < arr1.length) {


    if (arr1[point1] == arr1[point2]) {


        ++point2;

        //  console.log(`point2 ${point2}`)


    }
    else if (arr1[point1] != arr1[point2]) {

        ++point1;
        // console.log(point1);
        //arr1[point1] = arr1[point2];

        if (arr1[point1] == arr1[point2]) {
            // arr1[point1] = arr1[point2];
            ++point2;
            //console.log(`point1 ${point1}`)
            //console.log(`point2 ${point2}`)


        }
        else if (arr1[point1] != arr1[point2]) {
            // arr1[point1] = arr1[point2];
            ++point2;
            arr1[point1] = arr1[point2];
            //console.log(`point1 ${point1}`)
            //console.log(`point2 ${point2}`)


        }


    }
    i++;

}
console.log(point1 + 1)
console.log(arr1)

}
//count_different([1, 1, 1, 1, 1, 2]);
count_different([1, 2, 3, 4, 4, 4, 7, 7, 12, 12, 13]);
//count_different([]);
count_different([-2, -1, -1, 0, 1]);

profile
디자인 > https://dribbble.com/jongpil_77 코딩 > https://www.codewars.com/users/bikijjang

0개의 댓글