본문 바로가기

분류 전체보기

(253)
리액트) 디스코드 클론 - 6 이번에는 스트리밍을 만들어 볼 예정이다 우선 스트리밍 또한 화상통화와 마찬가지로 navigator.mediaDevices 로 가져온다. 다만 useMedia를 가져오는 화상통화와 달리 스트리밍은 유저의 화면을 보여주는 것이므로 getDisplayMedia를 사용하면 된다. 같은 Room.js의 JSX에 해당 코드를 추가하자 SharingStart Stop sharing 그리고 아래 코드도 추가하자 const onSharingStart = async () => { try { await navigator.mediaDevices //유저의 화면들을 가져옴 .getDisplayMedia(displayMediaOptions) .then((stream) => { //비디오 태그에 송출 streamingVideoRe..
파이썬) 영단어 암기는 괴로워 - BOJ https://www.acmicpc.net/problem/20920 import sys input = sys.stdin.readline dic = {} n, m = map(int, input().split()) for i in range(n): s = input().rstrip() if len(s) >= m: if s not in dic: dic[s] = 1 else: dic[s] += 1 arr = sorted(dic.items(), key=lambda x: (-x[1], -len(x[0]), x[0])) for i in arr: print(i[0]) 이 문제는 주어진 조건만 달성하면 무난하게 풀 수 있는 문제이다. 먼저 딕셔너리에 영단어와 그 개수를 넣는다. 넣을 때 영단어의 길이를 확인한다. 그 다..
파이썬) 어두운 굴다리 -BOJ https://www.acmicpc.net/problem/17266 17266번: 어두운 굴다리 인하대학교 후문 뒤쪽에는 어두운 굴다리가 있다. 겁쟁이 상빈이는 길이 조금이라도 어둡다면 가지 않는다. 따라서 굴다리로 가면 최단거리로 집까지 갈수 있지만, 굴다리는 어둡기 때문에 빙 www.acmicpc.net import sys input = sys.stdin.readline n = int(input()) m = int(input()) position = list(map(int, input().split())) answer = 0 if len(position) == 1: answer = max(position - 0, n - position) else: for i in range(len(position))..
파이썬) 진우의 달 여행 (Small) - BOJ https://www.acmicpc.net/problem/17484 import sys input = sys.stdin.readline n, m = map(int, input().split()) arr = [] for i in range(n): arr.append(list(map(int, input().split()))) fuel = 1010101010101010 dy = [0, -1, 1] def dfs(x, y, p_y, fff, sums_fuel): if x == n-1: # 달에 도착했으면 현재까지의 연료 합과 여태 계산한 연료합 중 최소값 리턴 return min(sums_fuel, fff) for i in range(3): # 방향 설정 if dy[i] == p_y: # 이전에 갔었던 위치라면..
파이썬) 크로스 컨트리 - BOJ (다시풀어야함) https://www.acmicpc.net/problem/9017 9017번: 크로스 컨트리 입력 데이터는 표준입력을 사용한다. 입력은 T 개의 테스트 케이스로 주어진다. 입력 파일의 첫 번째 줄에 테스트 케이스의 수를 나타내는 정수 T 가 주어진다. 두 번째 줄부터는 두 줄에 하나의 www.acmicpc.net 해당문제는 구현에 충실하면 충분할 수 있는 문제라고 생각했다. from collections import Counter tc = int(input()) answer = [] def solution(): n = int(input()) arr = list(map(int, input().split())) # 팀별 참가자 수 teams = Counter(arr) dic = {} point = 1 for..
리액트) 디스코드 클론 - 5 이번 포스팅부턴 본격적으로 주 기능들을 만들어보려 한다. 우선 디스코드의 주 기능들은 다음과 같다 채널 내 메세지 소통 채널 내 음성대화 채널 내 화상채팅 채널 내 스트리밍 등등 더 많은 기능이 있지만 우선 저 네개를 목표로 잡으려 한다. 우선 음성채팅부터 만들어보겠다. 오디오 기능을 만들기 위해선 우선 컴퓨터에 연결된 마이크를 가져와야한다. 그 기능을 담당하는 것이 바로 navigator.mediaDevices.getUserMedia()이다. (더 자세한 사항은 MND 홈페이지 참조) Room.js를 수정하자 import React, { useEffect, useRef } from "react"; import { io } from "socket.io-client"; import Peer from "pe..
파이썬) 스위치 켜고 끄기 - BOJ https://www.acmicpc.net/problem/1244 1244번: 스위치 켜고 끄기 첫째 줄에는 스위치 개수가 주어진다. 스위치 개수는 100 이하인 양의 정수이다. 둘째 줄에는 각 스위치의 상태가 주어진다. 켜져 있으면 1, 꺼져있으면 0이라고 표시하고 사이에 빈칸이 하나씩 www.acmicpc.net n = int(input()) arr = list(map(int, input().split())) arr = [-1] + arr m = int(input()) stu = [] def male(num): for i in range(1, n+1): if i % num == 0: if arr[i] == 1: arr[i] = 0 else: arr[i] = 1 def female(num): if ar..
리액트) 디스코드 클론 - 4 이번 포스팅에는 peer-to-peer 에 대해 알아볼 것이다. 소켓만 알면 되지 굳이 peer까지 알아야 돼? 라고 생각할 수 있다. 하지만 peer는 웬만한 웹소켓을 사용하는 기술에서는 필수요소이다. 우선 webRTC부터 살펴보자. MND에서는 webRTC를 다음과 같이 정의하고 있다. WebRTC (Web Real-Time Communication)은 웹 애플리케이션과 사이트가 중간자 없이 브라우저 간에 오디오나 영상 미디어를 포착하고 마음대로 스트림할 뿐만 아니라, 임이의 데이터도 교환할 수 있도록하는 기술입니다. WebRTC를 구성하는 일련의 표준들은 플러그인이나 제 3자 소프트웨어 설치 없이 종단 간 데이터 공유와 화상 회의를 가능하게 합니다. 이를 위하여 WebRTC는 상호 연관된 API와 ..