전체 글91 [파이썬] 오픈채팅방 - 2019 KAKAO BLIND RECRUITMENT [CODING TEST #15] https://school.programmers.co.kr/learn/courses/30/lessons/42888 채팅 로그를 저장하는 리스트 chat와 가장 최신화된 uid - 닉네임을 저장하는 딕셔너리 nickname을 이용했다. chat[0]에는 들어오거나 나가는 로그를 저장하고, chat[1]은 uid를 저장한다. 그리고 Enter, Change일 때 딕셔너리에서 uid에 해당하는 닉네임을 최신화하면 된다. from collections import defaultdict def solution(record): # 어떤 uid가 들어왔는지 / 나갔는지를 기록하고, 최종 uid의 닉네임이 뭔지만 잘 알면 된다. answer = [] chat = [] nickname = defaultdict() for.. 2022. 7. 24. [파이썬] 괄호 변환 - 2020 KAKAO BLIND RECRUITMENT [CODING TEST #14] 프로그래머스 첫 Lv.2 문제이다. 스무스하게 푸는 데 성공.. https://school.programmers.co.kr/learn/courses/30/lessons/60058 규칙이 좌우로 길어서 텍스트로 대체.. 1. 입력이 빈 문자열인 경우, 빈 문자열을 반환합니다. 2. 문자열 w를 두 "균형잡힌 괄호 문자열" u, v로 분리합니다. 단, u는 "균형잡힌 괄호 문자열"로 더 이상 분리할 수 없어야 하며, v는 빈 문자열이 될 수 있습니다. 3. 문자열 u가 "올바른 괄호 문자열" 이라면 문자열 v에 대해 1단계부터 다시 수행합니다. 3-1. 수행한 결과 문자열을 u에 이어 붙인 후 반환합니다. 4. 문자열 u가 "올바른 괄호 문자열"이 아니라면 아래 과정을 수행합니다. 4-1. 빈 문자열에 첫 .. 2022. 7. 23. 구글 머신러닝 부트캠프 2022 기프트 자랑 #2 저녁 준비를 하고 있었는데 택배왔다고 문자를 받았다. 구글 부트캠프에서는 여러 가지 우수활동을 하거나, 각 미션을 조기수료한 뒤 인증을 하면 기념품을 또 준다. 그래서 코세라의 Deep Learning Specialization을 부지런히 들었던 나는 3번째로 조기수료를 했다. 기념품은 백팩과 킨토 텀블러. 백팩은 너비가 좁고 높이가 길어서 노트북이나 여러 수납 물품들 담고 다니기에 딱이었다. 블랙화이트라 이쁘기도 하고.. (아부지께서 탐내심) 텀블러는 킨토 베이직에 구글 부캠 마크가 써 있어서 아주 이쁘고 깔쌈했다. 구글 감사합니다. 다음 게시글은 TF Certificate를 빨리 취득하고 올리도록 노력해보자... 2022. 7. 23. CNN [Deep Learning Specialization #9] Coursera의 Deep Learning Specialization - Week 4의 강의를 수강하면서 필기한 내용을 바탕으로 정리한 글입니다. 4주차는 Deep Learning의 핵심인 합성곱 신경망(CNN)과 CNN을 활용한 다양한 모델들에 대해 배웁니다. CV(컴퓨터비전) 분야에서는 주로 입력으로 이미지가 들어오게 되는데, 이미지의 크기는 1024 * 1024의 경우 약 100만에다가 R,G,B 3개의 채널이 있으므로 약 300만의 크기를 가지게 됩니다. 해상도가 커지면 그 크기는 지수적으로 커지게 되죠. 이미지처럼 입력의 크기가 매우 큰 경우, 일반적인 신경망을 이용하기에는 연산이 매우 느려 사용이 힘듭니다. 이에 맞추어 Convolution Neural Network, 합성곱 신경망이 등장합니.. 2022. 7. 23. 백트래킹(Backtracking) [Algorithm #2] DFS(깊이 우선 탐색)의 경우 모든 경우의 수를 하나씩 다 따지기 때문에 매우 비효율적이다. 그래서 탐색 도중 조건에 맞지 않으면 이전 단계로 되돌아가는 백트래킹을 많이 이용한다. 중간중간 조건에 맞지 않는 케이스는 "가지치기"하여 탐색 시간을 줄인다. 이전 단계로 돌아가는 설계를 잘 해야 한다. 어떤 조건에 되돌아가게 할 건지, 어떤 시점으로 되돌아가게 할 건지를 잘 생각해야 한다. 코드 구현은 DFS처럼 재귀(Recursion)를 이용하되, 코드 도입부에 조건을 추가하여 조건에 맞지 않을 경우 return하여 이전 노드로 다시 되돌아가도록 구현하는 것이 일반적이다. def backtracking(...): if ...: # 되돌아가는 조건 return for i in range(...): list... 2022. 7. 22. DFS, BFS [Algorithm #1] 완전 탐색 방법이란, 모든 경우의 수를 따지는 것을 말한다. 단순한 편이고, 코테 현장에서 쉽게 떠올릴 수 있는 방법이다. 복잡도와 표본 수를 고려해야 하지만 대충 1억 회 이하는 충분히 사용이 가능하다고 한다. 완전 탐색 방법에는 크게 두 가지가 있다. 1. DFS (Depth First Search) : 깊이 우선 탐색 시작 지점에서 가장 깊이 있는 노드를 우선 탐색하는 방식. Stack을 이용하여 해결한다. pop했을 때 방문하지 않은 인접 노드가 있으면 그 노드를 push한다. 다시 pop할 때 방금 push했던 노드가 무조건 먼저 pop되므로 가장 깊은 노드를 향해 탐색하게 된다. 재귀(Recursion)와 for문을 이용하여 작은 정점부터 깊이 우선 탐색을 수행하게 된다. # 재귀를 이용한 D.. 2022. 7. 22. [파이썬] 폰켓몬 [CODING TEST #13] https://school.programmers.co.kr/learn/courses/30/lessons/1845 설명이 긴데, 크기 N의 배열에서 N/2만큼 선택했을 때 최대로 많은 종류를 선택할 수 있는 게 몇 종류인지를 return하면 된다. 그래서 배열을 set로 만들었을 때가 배열 내 모든 폰켓몬의 종류가 되므로, set(nums)의 길이와 N/2 중 작은 값을 선택하면 된다. def solution(nums): list = [] # list인 nums를 set로 만드는 과정인데, 그냥 set(nums)를 써도 됨 for num in nums: if num not in list : list.append(num) return min(len(nums)/2,len(list)) 2022. 7. 21. [파이썬] 음양 더하기 - 월간 코드 챌린지 시즌2 [CODING TEST #12] https://school.programmers.co.kr/learn/courses/30/lessons/76501 무지성으로 아래 코드처럼 짜기는 했다. def solution(absolutes, signs): answer = 0 for i in range(len(absolutes)): if signs[i] == True : t = 1 else : t = -1 absolutes[i] *= t answer += absolutes[i] return answer 더 줄일 수 있을 것 같아서 좀 더 고민해보니 zip을 이용해 한 줄로 짤 수 있었다. def solution(absolutes, signs): answer = sum(absolute if sign else -absolute for absolute, .. 2022. 7. 21. [파이썬] 부족한 금액 계산하기 - 위클리 챌린지 [CODING TEST #11] https://school.programmers.co.kr/learn/courses/30/lessons/82612 어렵지 않음.. def solution(price, money, count): answer = -1 total = 0 for n in range(count): new_price = price * (n+1) total += new_price if total > money : answer = total - money else : answer = 0 return answer max 함수와 산술평균을 이용하여 한줄만에 짤 수도 있다. 1부터 count까지의 합은 count * (count + 1) / 2 로 표현할 수 있다. 풀이에서는 몫을 얻는 //를 썼는데 count가 자연수라서 count 혹은.. 2022. 7. 21. 이전 1 ··· 5 6 7 8 9 10 11 다음 728x90