본문 바로가기

분류 전체보기

(254)
파이썬) 계단 오르기 - BOJ https://www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 이 문제는 알고리즘 dp문제였다. 처음 이 문제를 접했을 때, 당연히 dfs로 풀 수있는 문제라 생각했고 실제로 그렇게 코드를 작성해나갔다. n = int(input()) arr = [] for _ in range(n): arr.append(int(input())) result = -1 def dfs(idx,sums,his): store = arr[idx] if idx == n -1: global result..
파이썬) 문자열 교환 - BOJ https://www.acmicpc.net/problem/1522 s = input() # 문자열 입력 a = s.count('a') # 입력된 str에서의 a의 개수 answer = float('inf') s = s + s[0:a-1] for i in range(len(s) - (a-1)): answer = min(answer, s[i:i+a].count('b')) print(answer) 문제는 연속된 b를 만들기 위해 몇 번의 교환을 해야할까?를 묻는 문제다. 바꿔말하면 문자열 s중 0번 부터 a의 개수만큼까지는 a로 가득 채워져있어야한다는 뜻이다. 이를 잘 기억해서 다음과 같이 풀어보자. 문자열이 abababababababa 라고 생각해보자. a의 개수는 8이다. 즉 aaaaaaaabbbbbbb가..
파이썬) 개미 - BOJ https://www.acmicpc.net/problem/3048 3048번: 개미 T초가 지난 후에 개미의 순서를 출력한다. 첫 번째 개미 그룹은 왼쪽에서 오른쪽으로 움직이고, 두 번째 그룹은 반대 방향으로 움직인다. www.acmicpc.net 이 문제는 좀 어려웠다. 우선 처음 작성한 코드를 보자 n1, n2 = map(int, input().split()) a = input() a = a[::-1] # a = '' b = input() t = int(input()) dic = {} dic2 = {} k = 0 m = min(len(b), len(a)) for i in range(len(a)): dic[a[i]] = k k += 1 for i in range(len(b)): dic2[b[i]] = ..
파이썬) 미로 만들기 -BOJ https://www.acmicpc.net/problem/1347 n = int(input()) s = input() arr = [[0, 0]] # 동 남 서 북 0,1,2,3 x, y, d = 0, 0, 1 for i in s: if i == 'R': d = (d + 1) % 4 elif i == 'L': d = (d - 1) % 4 else: if d == 0: # 동 x = x y += 1 elif d == 1: x += 1 y = y elif d == 2: x = x y -= 1 else: x -= 1 y = y arr.append([x, y]) min_x = 0 min_y = 0 max_x = 0 max_y = 0 for i in arr: x, y = i[0], i[1] min_x = min(x..
파이썬) 로봇 청소기 - BOJ https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 첫째 줄에 방의 크기 $N$과 $M$이 입력된다. $(3 \le N, M \le 50)$ 둘째 줄에 처음에 로봇 청소기가 있는 칸의 좌표 $(r, c)$와 처음에 로봇 청소기가 바라보는 방향 $d$가 입력된다. $d$가 $0$인 경우 북쪽 www.acmicpc.net import sys input = sys.stdin.readline graph = [] dr = [-1, 0, 1, 0] dc = [0, 1, 0, -1] n, m = map(int, input().split()) r, c, d = map(int, input().split()) for _ in range(n): graph.append(list(ma..
파이썬) 시험 감독 -BOJ https://www.acmicpc.net/status?user_id=dlwnsgml203&problem_id=13458&from_mine=1 채점 현황 www.acmicpc.net n = int(input()) arr = list(map(int, input().split())) a, b = map(int, input().split()) cnt = 0 for i in range(n): if arr[i]
자바스크립트)디스코드 클론 - 리액트 최근 회사 일 때문에 디스코드 클론 프로젝트를 모두 다 끝내지 못했다. 그리고 그저께부터 다시 작업에 돌입했는데 문제가 발생했다. 어떤 유저가 스트림 데이터 중 비디오를 껐다고 가정해보자. 그럼 다른유저와 그 유저를 이어주는 피어의 스트림을 다시 갈아끼워야 한다. 그러나 peer.js를 사용하면 하나의 피어(겉으로 보기엔)만 생성해 모든 유저의 피어를 관리한다. 때문에 마이크 볼륨이나 오디오 볼륨 등의 세세한 작업을 하는데 시간이 너무 많이 소요되는 것이 느껴졌다. 그래서 나는 peer.js를 사용하지 않고 RTCPeerConnection이라는 WebAPI를 사용하는 아주 기본적인 peer생성부터 다시 시작하기로 마음 먹었다. 자바스크립트에서 제공하는 WebAPI를 사용하는데에는 조금 어려움이 있었다. ..
파이썬) 일곱 난쟁이 - BOJ https://www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net from itertools import combinations arr = [] for _ in range(9): arr.append(int(input())) for talls in combinations(arr, 7): # 일곱 난쟁이의 키는 중복되지 않으니 조합으로 만들어준다 if sum(talls) == 100: answer = sorted(talls, key=lambda x: x) for i in a..