전체 글103 Leetcode Count and Say Java class Solution { public String countAndSay(int n) { if (n == 1) return "1"; StringBuilder sb = new StringBuilder(); String s = countAndSay(n - 1); char value = s.charAt(0); int cnt = 0; for (int i = 0; i < s.length(); i++) { char target = s.charAt(i); if (target == value) { cnt++; continue; } sb.append(cnt).append(value); value = target; cnt = 1; } sb.append(cnt).append(value); return sb.toStrin.. 2021. 1. 20. WebRTC Data Channel WebRTC Data Channel이 뭔데? 처음 회사에서 프로젝트를 진행할때 만해도 WebRTC를 동영상 스트리밍 용도로 사용하고 채팅은 4 Layer단의 TCP 소켓을 이용하거나 Web Socket을 사용하여 구현할 예정이었다. 그러나 이번 프로젝트의 주 맥락이 WebRTC이고 자체로 영상이 아닌 Data를 전송할 수 있는 DataChannel을 지원한다. WebRTC는 당연히 UDP위에서 동작하기 때문에 UDP로 동작한다. WebRTC 프로토콜의 스택은 다음 그림과 같다. 따라서, WebRTC를 통해서 Peer to Peer 로 동작하는 데이터 전송 방식이라고 생각하면 된다. Data Channel과 다른 전송 채널과의 차이 일반적으로 생각하고 있는 Web Socket 방식은 TCP위에서 작동되며 .. 2021. 1. 18. Leetcode MinStack JAVA 이 문제는 단순하게 생각하면 스택을 구현해서 Min 값을 구할 때 매번 O(N)의 복잡도로 값을 구하는 생각을 할 수 있다. 하지만, 그렇게 하는 방법보다 더 간단한 방법이 있다. Stack을 만들어서 더 작은 값이 나올때마다 이전의 min값을 미리 stack에 쌓아놓고 pop을 할 떄 그 다음에 있는 숫자를 min으로 업데이트 한다. 만약 pop할때 min값이 아니었다면 단순히 pop만을 한다. 이를 통해서 Min 값을 구할 떄의 시간복잡도는 O(1)로 줄어들게 된다. class MinStack { int min; Deque deque; /** initialize your data structure here. */ public MinStack() { deque = new ArrayDeque(); min.. 2021. 1. 5. Leetcode Climbing Stairs JAVA class Solution { public int climbStairs(int n) { int[] dp = new int[n+2]; dp[1]=1; dp[2]=2; for(int i=3;i 2021. 1. 4. 이전 1 ··· 8 9 10 11 12 13 14 ··· 26 다음