오늘해야할일
socket.io 공부
socket.emit = 데이터 줄때
socket.on = 데이터 받을때
socket.join = 룸을 만든다
Server
io.on("connection",function(socket)=> { //소켓연결
socket.on("roomjoin", (userid) => { //"roomjoin" 이벤트 //socket.on : 데이터 받기
socket.join(userid) //받아온 ***이라는 이름으로 새로운 룸에 접속했다는 뜻
})
})
1 ≤ left ≤ right ≤ 1,000
입출력 예 #1
다음 표는 13부터 17까지의 수들의 약수를 모두 나타낸 것입니다.
따라서, 13 + 14 + 15 - 16 + 17 = 43을 return 해야 합니다.
입출력 예 #2
다음 표는 24부터 27까지의 수들의 약수를 모두 나타낸 것입니다.
따라서, 24 - 25 + 26 + 27 = 52를 return 해야 합니다.
내가 작성한 코드
function solution(left, right) {
let answer = 0;
for (let i =left; i <=right; i++) {
if (i % 2 ===0) {
answer = answer + Math.floor(i / 2)
} else {
answer = answer + Math.floor(i / 2)
}
}
return answer;
}
이렇게 하면 결과가 안나온다....
결국에는 구글링했다...ㅠㅠ
정답 코드
function solution(left, right) {
let answer = 0;
for (let i =left; i <= right; i++) {
if (Number.isInteger(Math.sqrt(i)) {
answer -= i
} else {
answer += i
}
}
return answer
}
정답코드의 풀이내용은 이렇다.
먼저 1 ≤ left ≤ right ≤ 1,000
즉 left와 right 사이의 값들을 조건에 따라 더라고 빼는것이기때문에 13부터 17까지
출력이되어야하므로 반복문인 for문을 사용하였고 for문안에 if문을 넣었는데
if문은 true, false를 구분하기 위함이었다.
false는 약수가 짝수이고 , true는 약수가 홀수이다.
그래서 약수는 더하고 홀수는 빼면 우리가 원하는 결과값이 나온다.
원하는 결과값을 얻기위해서 Number.isInteger() 와 Math.sqrt()를 사용했다.
[**몰랐던 부분]**
Number.isInteger()메소드는 인수의 값이 정수인지 아닌지를 반환해줍니다.
전달된 값이 정수이면 true 아니면 NaN, infinity와 같은 값은 모두 false를 반환한다.
사용방법 예제
<script>
Number.isInteger(0) //true
Number.isInteger(-100) //true
Number.isInteger(0.1) //false
Number.isInteger("문자열") //false
Number.isInteger(Infinity) //false
Number.isInteger(true) //false
</script>
즉, 정수인 값에는 true를,
그 외에 값에는 false가 출력됩니다.
[**몰랐던 부분]**
함수 인자로 값을 넘겨주면 루트 값을 반환한다.
만약 매개변수가 음수이면 NaN을 반환한다.
사용방법 예제
Math.sqrt(4); // 2
Math.sqrt(16); // 4
Math.sqrt(100); // 10
Math.sqrt(2); // 1.414213562373095
Math.sqrt(-1); // NaN
socket.io 회고...
오늘 채팅방 퇴장하기를 적용하고 이것저것해보려고했다...근대...안되네...?!
진짜 짜증이 나는구먼
socket.emit = 데이터를 줄때 사용한다
socket.on = 데이터를 받을때 사용한다.
socket.room = 룸을 만들때 사용한다.