[Programmers / Python 풀이] 폰켓몬 def solution(nums): answer = 0 a = set(nums) if len(a) >= len(nums) // 2: answer = len(nums) // 2 else: answer = len(a) return answer set을 사용해 중복을 제거시킨 후 만약 중복 제거한 길이가 가져갈 수 있는 폰켓몬 길이보다 크거나 같다면, 가져갈 수 있는 폰켓몬 만큼 가져가고 그렇지 않다면 중복을 제거시킨 크기 만큼 가져가면 된다. Programmers 2023.01.03
[Programmers / Python 풀이] 완주하지 못한 선수 def solution(participant, completion): answer = '' dic = {} for i in participant: if i in dic: dic[i] += 1 else: dic[i] = 1 for j in completion: if j in dic: dic[j] -= 1 for i, j in dic.items(): if j == 1: answer = i return answer 효율성 따지지 않고 마구잡이로 푼 방식.. dictionary의 카운트 방식을 통해 마지막 남은 1명을 잡아내는 방식이다. 다른 사람들의 방식을 몇가지 알아보자면 1. 정렬을 통한 방식 def solution(participant, completion): participant.sort() compl.. Programmers 2023.01.03
[Programmers / Python 풀이] 주식가격 def solution(prices): answer = [] for i in range(len(prices)): cnt = 0 for j in range(i+1, len(prices)): if prices[i] prices[j]: cnt += 1 break answer.append(cnt) return answer 문제의 이해가 가장 어려웠던 문제. 처음엔 접근을 현재 가격 이후에 가격들 중 크거나 같은 가격을 찾는 방법을 사용했는데 테스트케이스만 맞고 전부 틀려버렸다. 문제 이해를 위해 질문하기 메뉴로 가서 문제를 훑어보니 핵심은 가격이 떨어지지 않은 기간 이었다. 즉 3 초-> 4초 를 갈 때 가는 그 1초를 버텼으니 1초인 것이다. (이후에 올라간 가격은 생각하지 않는다. 이미 떨어진 부분에서 끝이.. Programmers 2023.01.03
[Programmers / Python 풀이] 다리를 지나는 트럭 def solution(bridge_length, weight, truck_weights): answer = 0 bridge = [0] * bridge_length while bridge: answer += 1 bridge.pop(0) if truck_weights: if sum(bridge) + truck_weights[0] Programmers 2023.01.03
[Programmers / Python 풀이] 기능개발 def solution(progresses, speeds): answer = [] while progresses: while progresses[0] = 100: cnt += 1 else: break for k in range(cnt): progresses.pop(0) speeds.pop(0) answer.append(cnt) return answer 첫 기능이 개발이 되어야만 다음 기능이 배포가 가능하므로 기준은 항상 첫 기능이 된다. 첫 기능이 100%가 될 때 까지 for문을 통해 각 기.. Programmers 2023.01.02
[Programmers / Python 풀이] 올바른 괄호 def solution(s): answer = True stack = [] for i in s: if stack: if i == '(': stack.append(i) else: stack.pop() else: stack.append(i) if stack: answer = False return answer 스택이 비어있다면 일단 괄호를 넣고 시작. 비어있지 않다면 조건문을 통해 비교. ( '(' 가 있다면 push ')'가 있다면 pop ) Programmers 2023.01.02
[Programmers / Python 풀이] 같은 숫자는 싫어 def solution(arr): answer = [] p = -1 for i in arr: if p != i: p = i answer.append(i) else: continue return answer 순회 할 때 마다 마지막 값을 저장 후 마지막 값과 현재 값이 같다면 continue 해준다. 그것이 아니라면 append Programmers 2023.01.02
[Programmers / Python 풀이] 푸드 파이트 대회 def solution(food): answer = '' ans = '' for i in range(1, len(food)): for j in range(food[i]//2): ans += str(i) answer = ans + '0' + ans[::-1] return answer 전체 음식을 순회하고, 이후 음식의 개수를 2로 나눈 몫 만큼만 더해서 한쪽 짝을 완성 시킨다. 이후 0 을 포함시키고 순서를 뒤집은 다른 짝을 합쳐준다. Programmers 2023.01.02
[Web] HTTP와 WebSocket의 차이 SSAFY에서 진행한 프로젝트를 되짚어보면서 1:1 채팅에서 사용 한 WebSocket에 대해 알아볼 겸 HTTP와의 차이에 대해 공부해보려 한다. HTTP란? HTTP (HyperText Transfer Protocol) 텍스트 기반의 통신 규약으로 인터넷에서 데이터를 주고받을 수 있는 프로토콜이다. 이렇게 규약을 정해두었기 때문에 모든 프로그램이 이 규약에 맞춰 개발해서 서로 정보를 교환할 수 있게 되었다. WebSocket이란? Transport protocol의 일종으로 쉽게 이야기하면 웹버전의 TCP 또는 Socket이라고 이해하면 된다.(TCP와는 엄연히 다르다. WebSocket은 HTTP 레이어에서 작동 ) WebSocket은 서버와 클라이언트 간에 Socket Connection을 유지해.. Web 2022.12.29
[React] RTK(Redux Tool Kit)에 대해 알아보자 ReduxToolKit 이란? 기존 Redux의 불편한 점을 개선하고 편하게 사용 할 수 있게 해주는 라이브러리. 흔히 RTK라고도 부른다. Redux 기본 용어 Store : 스토어는 컴포넌트의 상태를 관리하는 저장소. 프로젝트는 하나의 스토어만 가질 수 있다. Action : 스토어의 상태를 변경하기 위해서는, 액션을 생성해야 한다. 액션은 객체이며, 반드시 type을 가져야 한다. 액션 객체는 액션 생성 함수에 의해서 만들어진다. Reducer : Reducer는 현재 상태와 액션 객체를 받아 새로운 상태를 리턴하는 함수. Dispatch : Dispatch는 스토어의 내장 함수 중 하나이며, 액션 객체를 넘겨줘 상태를 업데이트 시켜주는 역할을 한다. Subscribe : 스토어의 내장 함수 중 하.. Javascript & React 2022.12.28