본문 바로가기

전체 글

(253)
리액트) 디스코드 클론 - 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) 해당 문제는 셋 또는 딕셔너리를 사용하면 되는데, 나는 좀 더 익숙한 딕셔너리를 사용했다.
파이썬) 비밀번호 발음하기 - BOJ https://www.acmicpc.net/problem/4659 4659번: 비밀번호 발음하기 좋은 패스워드를 만드는것은 어려운 일이다. 대부분의 사용자들은 buddy처럼 발음하기 좋고 기억하기 쉬운 패스워드를 원하나, 이런 패스워드들은 보안의 문제가 발생한다. 어떤 사이트들은 xvtp www.acmicpc.net while True: st = input() if st == 'end': break q = [] aeiou = 'aeiou' others = 'bcdfghjkmnlpqrstvwxyz' is_aeiou = False is_accept = False for i in st: if i in aeiou: is_aeiou = True if len(q) == 0: q.append(i) else: f = ..
파이썬) 돌 게임 - BOJ https://www.acmicpc.net/problem/9655 9655번: 돌 게임 상근이가 게임을 이기면 SK를, 창영이가 게임을 이기면 CY을 출력한다. www.acmicpc.net n = int(input()) if n % 2 == 0: print("CY") else: print("SK") 사실 n이 4부터 8까지 혹은 그 이전까지만 생각해봐도 답은 금방 나온다 조금 단순하게 생각해보자 n이 4일때 상근이가 한개 또는 세개를 가져면 나머지는 3개 이하므로 상근이가 무조건 패배한다 반면 n이 5일땐 상근이가 하나만 가져가면 상근이가 이긴다. 즉, 먼저 가져가는 사람이 이긴다 n이 6일땐 상근이가 3개를 가져가면 3개가 남아 패배하고, 1개를 가져가면 이 5 이므로 5부터 먼저 가져 갈 창영이가 우..
파이썬) 단어 공부 -BOJ https://www.acmicpc.net/problem/1157 dic = {} # 'a'부터 'z'까지의 알파벳을 순회하며 딕셔너리에 키를 추가하고 값을 0으로 초기화합니다. for char in 'abcdefghijklmnopqrstuvwxyz': dic[char] = 0 st = input() # 소문자 st = st.lower() for s in st: dic[s] += 1 sorted_dict = dict(sorted(dic.items(), key=lambda item: item[1], reverse=True)) # 딕셔너리 첫번째의 키 값 얻기 first_key, first_value = list(sorted_dict.items())[0] # 두 번째 키와 밸류 얻기 second_key, s..
파이썬) 벌집 - BOJ https://www.acmicpc.net/problem/2292 2292번: 벌집 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌 www.acmicpc.net 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오. 예를 들면, 13까지는 3개, 58까지는 5개를 지난다. 풀이 ..
파이썬) 삼각형과 세 변 - BOJ https://www.acmicpc.net/problem/5073 while True: a, b, c = map(int, input().split()) if a == b == c == 0: break # (sum(a,b,c) - max(a,b,c) - min(a,b,c))은 mid값 if sum([a, b, c]) - max([a, b, c])
파이썬) ZOAC 4 - BOJ https://www.acmicpc.net/problem/23971 23971번: ZOAC 4 i행 j열 자리를 (i, j)라고 할 때, (1,1)에 참가자가 앉은 경우 다른 참가자는 (1,2), (2,1), (2,2) 자리를 제외한 나머지 자리에 앉을 수 있다. (2,2)의 경우는 (1,1)과 행 번호 및 열 번호의 차가 1보다 크 www.acmicpc.net 이 문제는 프로그래머스 "거리두기 확인하기"와 상당히 비슷하다 https://school.programmers.co.kr/learn/courses/30/lessons/81302 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. pr..
파이썬)연구소2 -BOJ from itertools import combinations from collections import deque from copy import deepcopy import sys input = sys.stdin.readline n, m = map(int, input().split()) arr = [] vi = [] for i in range(n): l = list(map(int, input().split())) arr.append(l) for j in range(len(l)): if l[j] == 2: vi.append([i, j]) result = float('inf') dx = [0, 0, -1, 1] dy = [-1, 1, 0, 0] def bfs(vir): q = deque() cnt = 0 ..
파이선) 미로만들기 - BOJ https://www.acmicpc.net/problem/2665 from collections import deque n = int(input()) arr = [] for i in range(n): arr.append(str(input())) visit = [[False for _ in range(n)] for _ in range(n)] q = deque() q.append((0, 0, 0)) visit[0][0] = True dx = [0, 0, -1, 1] dy = [1, -1, 0, 0] while q: x, y, cnt = q.popleft() if x == n-1 and y == n-1: print(cnt) break for i in range(4): nx = dx[i] + x ny = dy[..
파이썬) 뱀과 사다리 게임 - BOJ https://www.acmicpc.net/problem/16928 이 문제는 bfs처럼 보이는 구현 문제였다. 주어진 조건만 잘 살펴보면 된다. 주사위를 굴려 다음 칸으로 이동한다 만약 다음칸이, 즉 nx가 사다리라면 사다리를 타고 이동한다 nx가 뱀이라면 뱀을타고 이동한다 출발지점과 도착지점엔 뱀과 사다리가 없다 from collections import deque n, m = map(int, input().split()) ladder = [] snake = [] for _ in range(n): a, b = map(int, input().split()) ladder.append([100-a, 100-b]) for _ in range(m): a, b = map(int, input().split()) ..
파이썬) 다리 만들기 - BOJ https://www.acmicpc.net/problem/2146 import sys from collections import deque input = sys.stdin.readline dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] # 섬을 구분해주는 bfs def bfs1(i, j): global count q = deque() q.append([i, j]) vis[i][j] = True arr[i][j] = count while q: x, y = q.popleft() for k in range(4): nx = x + dx[k] ny = y + dy[k] if 0 = n: continue # 다른 땅을 만나면 기존 답과 비교하여 짧은 거리 선택 if arr[nx][ny] > 0 ..
파이썬) 암기왕 -BOJ https://www.acmicpc.net/problem/2776 from bisect import bisect_left t = int(input()) def find(): n = int(input()) arr = list(map(int, input().split())) m = int(input()) arr2 = list(map(int, input().split())) arr.sort() for i in range(len(arr2)): target = arr2[i] start = 0 end = n-1 while start arr[mid]: start = mid + 1 else: end = mid - 1 if start > end: print(0) for _ in range(t): find()