본문 바로가기

개발

(28)
코테 알고리즘 - DFS(깊이 우선 탐색) [1] Depth - Frist Search, DFS는 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘이다. 우선 이쪽계열에서 얘기하는 그래프는 요런 그래프가 아니다 이렇게 노드(정점)과 간선으로 표현되는 그림을 그래프라고 말한다. 그래서 그래프를 탐색한다는 얘기는 하나의 노드를 시작으로 해서 다른 노드들을 방문하는 것을 말한다. 보통은 밑의 그림처럼 간선에 가중치가 적용되어서 뭐 비용이 최소로 되는 경로를 찾는 다던가.. 그런 문제들이 많을 줄 알았는데 아직까지는 쉬운 문제들만 풀어서 그런지 찾아보질 못했다 우선 DFS에는 스택의 개념이 들어간다. 스택과 관련해서는 여기로 그래서 이 DFS의 메커니즘을 차례대로 소개해보자면 1. 탐색 시작노드를 스택에 삽입, 방문처리를 한다. 2. 스택 최상단 노드의 인접..
[프로그래머스 Lv.2] - 문자열 압축 (2020 KAKAO BLIND RECRUITMENT) https://school.programmers.co.kr/learn/courses/30/lessons/60057 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [문제 요약] 문자열 s를 압축하려고 한다. 동일한 개수로 잘랐을 때 연속으로 동일한 토큰이 존재한다면 압축 가능 가장 짧게 압축했을 때의 길이를 return 하게 하라 [단순 무식한 방법] 1. len(s)/2의 길이까지 직접 토큰을 나눠 봄 2. 각각의 케이스에서 앞 뒤 토큰을 비교 2-1. 만약 똑같다면 해당 토큰을 기억해두고 앞에 붙일 숫자를 늘인다 2-2. 만약 다르고 2-2-1. 앞 토..
[프로그래머스 Lv.2] - 두 큐 합 같게 만들기 (2022 KAKAO TECH INTERNSHIP) https://school.programmers.co.kr/learn/courses/30/lessons/118667 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [문제 요약] 1. 길이가 같은 두 개의 큐 존재 2. 두 큐의 원소 합이 같을 때 까지 큐 한개의 원소를 추출해서 다른 큐에 집어넣기 3. 이때 필요한 작업의 최소횟수는? [풀이 과정] 1. 원소의 합을 같게 만들 수 없는 경우 -> 두 큐의 원소의 합이 2의 배수가 아닐 때 -> (모든 원소의 합 / 2) 보다 큰 원소가 존재할 때 2. 두 큐의 각각 원소의 합이 같아지는 과정 -> 각 큐의..
[프로그래머스 Lv.2] - 튜플 (2019 카카오 개발자 인턴십) https://school.programmers.co.kr/learn/courses/30/lessons/64065 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 요약 : 튜플을 표현하는 집합이 담긴 문자열이 입력되면, 해당하는 튜플을 출력하라. [카누식 코드] import re def solution(s): answer = [] s=s.split("},") lis=list(map(lambda x:list(map(int,re.sub('{|}','',x).split(','))), s)) lis.sort(key = lambda x:len(x)) answe..
[프로그래머스 Lv.2] - 오픈채팅방 (2018 KAKAO BLIND RECRUITMENT) https://school.programmers.co.kr/learn/courses/30/lessons/42888 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [카누식 코드] def solution(record): rec_list, rec_dict, answer = [], {}, [] for i in record: rec_list.append(i.split()) for i in rec_list: if i[0]!='Leave': rec_dict[i[1]]=i[2] for i in rec_list: if i[0] == 'Enter': answer.appen..
[프로그래머스 Lv.2] - 파일명 정렬 (2018 KAKAO BLIND RECRUITMENT) https://school.programmers.co.kr/learn/courses/30/lessons/17686 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [카누식 코드] import pandas as pd import re def solution(files): head, num, tail = [],[],[] for i in range(len(files)): temp = files[i] head.append(re.split("[0-9]",temp)[0].upper()) num.append([i for i in re.split("[^0-9]",temp..
[프로그래머스 Lv.2] - 뉴스 클러스터링 (2018 KAKAO BLIND RECRUITMENT) 문제 설명 뉴스 클러스터링 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브는 사용자들이 편리하게 다양한 뉴스를 찾아볼 수 있도록 문제점을 개선하는 업무를 맡게 되었다. 개발의 방향을 잡기 위해 튜브는 우선 최근 화제가 되고 있는 "카카오 신입 개발자 공채" 관련 기사를 검색해보았다. 카카오 첫 공채..'블라인드' 방식 채용 카카오, 합병 후 첫 공채.. 블라인드 전형으로 개발자 채용 카카오, 블라인드 전형으로 신입 개발자 공채 카카오 공채, 신입 개발자 코딩 능력만 본다 카카오, 신입 공채.. "코딩 실력만 본다" 카카오 "코딩 능력만으로 2018 신입 개발자 뽑는다" 기사의 제..
[프로그래머스 Lv.2] - 압축 (2018 KAKAO BLIND RECRUITMENT) 문제 설명 압축 신입사원 어피치는 카카오톡으로 전송되는 메시지를 압축하여 전송 효율을 높이는 업무를 맡게 되었다. 메시지를 압축하더라도 전달되는 정보가 바뀌어서는 안 되므로, 압축 전의 정보를 완벽하게 복원 가능한 무손실 압축 알고리즘을 구현하기로 했다. 어피치는 여러 압축 알고리즘 중에서 성능이 좋고 구현이 간단한 LZW(Lempel–Ziv–Welch) 압축을 구현하기로 했다. LZW 압축은 1983년 발표된 알고리즘으로, 이미지 파일 포맷인 GIF 등 다양한 응용에서 사용되었다. LZW 압축은 다음 과정을 거친다. 길이가 1인 모든 단어를 포함하도록 사전을 초기화한다. 사전에서 현재 입력과 일치하는 가장 긴 문자열 w를 찾는다. w에 해당하는 사전의 색인 번호를 출력하고, 입력에서 w를 제거한다. 입..