2022-05-09(월) TIL

황인호·2022년 6월 7일
0

TIL 모음

목록 보기
46/119

오늘해야할일

  • socket.io 적용 [완료]
  • socket.io 퇴장 기능 [못해봄...]
  • naver 소셜로그인 [못해봄...]
  • 알고리즘 풀이 1문제 [완료]
  • 일요일 회고록 작성하기 [못함...]

socket.io 공부

socket.emit = 데이터 줄때

socket.on = 데이터 받을때

socket.join = 룸을 만든다

Server
io.on("connection",function(socket)=> { //소켓연결
	socket.on("roomjoin", (userid) => { //"roomjoin" 이벤트 //socket.on : 데이터 받기
		socket.join(userid) //받아온 ***이라는 이름으로 새로운 룸에 접속했다는 뜻
	})
})
  • 알고리즘 문제풀이(**약수의 개수와 덧셈**) 문제 설명 두 정수 left와 right 가 매개변수로 주어집니다.
    left부터 right까지의 모든 수들 중에서 약수의 개수가 짝수인 수는 더하고
    약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.

    제한사항

    • 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 = 룸을 만들때 사용한다.

profile
성장중인 백엔드 개발자!!

0개의 댓글