02-11
오늘은 2 문제를 풀었따.
1번은 어찌저찌 풀었는데
2번은... ...... 어쩌다 보니 됬다 ㅎ
#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 사용하는 단어이다. 이단어에 들어있는 숫자의 합이 같은가?
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 문의 반복을 사용하지 말고 계산하시오.
포인터의 개념을 사용해서 몇개인지 계산하라 .
원래는 안되는데
되는게
신기..
다음부터 다른 방법을 사용하겠다.
끄읏
/*
#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]);