0509-ThreeJs

ThreeJS & WebGL

D-8
Three.JS 씬, 카메라, 렌더러
verties
튜토리얼 따라서 조금 해봤다.

Daily Algorithm

프로그래머스 level3 다음 큰 숫자

… 망했다 1시간 반째 … 1시간 만 하려 했는데 //
중간에 리뷰 받은 내용들 보고 검토 15분

알고리즘 20분만 더 하고 안되면.. 마무리 해야겠다 어려운 문제는 아니였던 것 같은데… 아쉽구나

2진수 바꾸는 것은 -> 다음 설계를 똑바로 정리 하고 코드 짤 것 !!!

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
// 어떤 수 N(1≤N≤1,000,000) 이 주어졌을 때, N의 다음 큰 숫자는 다음과 같습니다.

// N의 다음 큰 숫자는 N을 2진수로 바꾸었을 때의 1의 개수와 같은 개수로 이루어진 수입니다.
// 1번째 조건을 만족하는 숫자들 중 N보다 큰 수 중에서 가장 작은 숫자를 찾아야 합니다.
// 예를 들어, 78을 2진수로 바꾸면 1001110 이며, 78의 다음 큰 숫자는 83으로 2진수는 1010011 입니다.
// N이 주어질 때, N의 다음 큰 숫자를 찾는 nextBigNumber 함수를 완성하세요.

// .. 1의 갯수만 같은 거구나 ....

// 우선 2진수로 바꿔야 한다. ->

function nextBigNumber(n){
const binaryNumbers = []
let count = 0;
while(n/2!==0){
if(n%2===1) count+=1
binaryNumbers.unshift(n%2);
n=parseInt(n/2);
}
// let stringBinary = binaryNumbers.join("")
const oneIdxList = [];
const zeroIdxList = [];
let swithced = false;
for(let i =0,{length}=binaryNumbers; i<length; i++){
if(binaryNumbers[i]===0) zeroIdxList.push(i)
else oneIdxList.push(i)
}
for(let i =zeroIdxList.length-1; i>=0; i--){
// 1의 마지막 idx값이랑 비교 보통은 0의 마지막이 크면 1의 마지막이랑 바뀌는데
if(oneIdxList[oneIdxList.length-1]>zeroIdxList[i]){
swithced = true;
binaryNumbers[zeroIdxList[i]]=1
binaryNumbers[oneIdxList[oneIdxList.length-1]]=0;
break;
}
}
// 안 바꾼 경우는 ALL -> 1이거나 111,->1110 111000 -> 1000111 이런 경우
if(!swithced){
if(zeroIdxList.length===0) binaryNumbers.push(0)
else {
binaryNumbers.map(v=>v===1 ? 0 : 1).unshift(1)
}
}
return Number(binaryNumbers.join(""))
// 0의 index를 기록 1의 마지막 index랑 비교해서 1의 index가 크면 무시
// 0의 index가 더 크면 1이랑 바꿔 준다.
// 그런것이 없다 ex( 1111000)-> 10000111 0이랑 1이랑 바꿔주고 -> 앞에 1을 붙여준다
// 전부 1인 경우 -> 111->0
}

//아래 코드는 테스트를 위한 코드입니다.
console.log(nextBigNumber(10));
console.log(nextBigNumber(78));

알고리즘 거의 2시간 함 … = 하루 한 시간만 ++ 심지어 문제도 못 풀었다. …

웹 자판기 Refactoring -> Go GO !!!

객체 관계만… 잘 설정해놓았으면 … 굳이 moneKinds , money들을 따로 만들 필요도 없었네

1
2
3
4
5
6
7
8
9
10
11
12

결국 money -> 없애고 ... Wallet과 vendingMachine하나만
// 지갑도
const myMoney = {
100: 5,
500: 5,
1000: 5,
5000: 2,
10000: 2,
}

view 에서 bindEvent도 처리 가능하도록 수정

오늘의 링크 줍줍

ETC 밥을 너무 많이 먹으니까… 자버렸다.

threeJS문서
udacity3D강의
arJs
핵데이_후기