본문 바로가기

분류 전체보기

(255)
파이썬) 스위치 켜고 끄기 - 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와 ..
리액트) 디스코드 클론 - 3 저번 포스팅에선 클라이언트와 서버의 셋팅을 진행했었다. 이번에는 웹 소켓의 기본 사용법을 알아보자. 그 전에 우선 클라이언트의 전체적인 부분을 변경할 것이다. //App.js import React from "react"; import Home from "./Home"; import { Routes, BrowserRouter, Route } from "react-router-dom"; import Room from "./Room"; const App = () => { return ( ); }; export default App; //Home.js import React from "react"; import { useNavigate } from "react-router-dom"; import { v4 as..
리액트) 디스코드 클론 - 2 이전 글에서는 서버의 기본 세팅을 마련했다. 이제 소켓 연결에 대한 코드를 작성해보자. io.on("connection", (socket) => { console.log("connection!!!!"); }); 끝이다. 엥? 이라는 의문이 들 수도 있겠지만 단순한 클라이언트-서버간의 웹소켓 연결이라면 정말 이게 끝이다. 나는 클라이언트에서 피어를 생성하고 다른 이용자와 연결을 진행할 예정이기에 서버는 단순 중계기 같은 역할만 진행한다. 클라이언트 - 핸드폰, 서버 - 중계기 와 비슷하다가 생각하면 된다. 이제 클라이언트 쪽을 작성해보자. npm i socket.io-client peerjs react-router-dom uuid import React, { useEffect } from "react"; ..
리액트) 디스코드 클론 - 1 이 프로젝트를 시작하는 이유 프로젝트 진행 중 정말 오랜만에 웹소켓을 다루게 되었다. 프로젝트를 진행하며 웹소켓에 대해 자세히 공부하게 되었고 그를 이용해 다양한 기능을 구현하고 싶었다. 웹소켓이 뭔데? WebSocket은 클라이언트와 서버를 연결하고 실시간으로 통신 가능하도록 하는 첨단 기술이다. 이것의 장점은 HTTP에서 발생하는 것처럼 별도의 요청을 보내지 않고도 데이터를 수신할 수 있다는 점이다. WebSocket의 동작 클라이언트와 서버 간의 연결은 당사자 중 하나에 의해 종료되거나 시간 초과에 의해 닫힐 때까지 열린 상태로 유지된다. 클라이언트와 서버 간의 연결을 설정하기 위해서는 핸드셰이크를 수행한다. 연결이 설정된 이후로는 열린 상태로 유지되며 클라이언트 또는 서버 측에서 연결이 종료될 때..
파이썬) 등수 구하기 https://www.acmicpc.net/problem/1205 1205번: 등수 구하기 첫째 줄에 N, 태수의 새로운 점수, 그리고 P가 주어진다. P는 10보다 크거나 같고, 50보다 작거나 같은 정수, N은 0보다 크거나 같고, P보다 작거나 같은 정수이다. 그리고 모든 점수는 2,000,000,000보 www.acmicpc.net n, point, p = map(int, input().split()) if n point: person -= 1 rank += 1 if person
파이썬) 쿠키의 신체 측정 - BOJ https://www.acmicpc.net/problem/20125 n = int(input()) head = [] heart = [] left_arm = 0 right_arm = 0 mid = 0 left_leg = 0 right_leg = 0 for i in range(n): string = input() for j in range(len(string)): if string[j] == '*': if head == []: # 헤드를 발견하지 못햇다면 # 맨처음 *은 무조건 헤드임 head = [i, j] else: if heart == []: # 하트가 비엇다면 왼쪽팔이나 하트라는 뜻 if head[1] == j: # 헤드 바로 아래, 즉 하트라면 하트 위치 저장 heart = [i, j] else: ..
파이썬) 임스와 함께하는 미니게임 https://www.acmicpc.net/problem/25757 dic = {} user_input = input() n, m = user_input.split() n = int(n) for _ in range(n): s = input() if s not in dic: dic[s] = 1 cnt = 0 if m == 'Y': cnt = 1 elif m == 'F': cnt = 2 else: cnt = 3 arr = list(dic.keys()) print(len(arr) // cnt) 해당 문제는 셋 또는 딕셔너리를 사용하면 되는데, 나는 좀 더 익숙한 딕셔너리를 사용했다.