분류 전체보기 81

파이썬 코딩테스트 스터디 8주차 #2 - 그래프 탐색 : 깊이 우선 탐색

깊이 우선 탐색시작 노드부터 탐색을 시작해, 간선을 따라 최대 깊이 노드까지 이동하며 차례대로 방문.최대 깊이 노드까지 방문 후이전 방문한 노드를 거슬러 올라가 연결된 노드에서 방문하지 않은 노드부터 다시 최대 깊이까지 차례대로 방문! 스택 활용 방법시작 노드 정한다.스택에 시작노드 푸시스택이 비었는 지 확인 → 비었다면, 모든 노드 방문했음 → 탐색 종료스택에서 노드 팝한다. (팝한 노드는 최근에 푸시한 노드)팝한 노드의 방문 여부 확인 →  방문 처리방문한 노드와 인접한 노드 확인  →  비 방문 노드 푸시 깊이 우선 탐색의 핵심  : 가장 깊은 노드까지 방문 후, 더 이상 방문할 노드 없으면, 최근 방문한 노드로 돌아온 다음,해당 노드에서 방문할 노드가 있는지 확인. 스택을 활용한 깊이 우선 탐색선..

파이썬 코딩테스트 스터디 8주차 #1 - 그래프 개념

그래프의 개념그래프 용어 정리  동그라미 : 노드화살표 : 간선간선 위 숫자 : 가중 그래프의 특징과 종류방향성, 가중치, 순환 특성에 따라 종류 구분 흐름을 표현하는 방향성간선은 방향이 있는 것도(방향 그래프), 없는 것도 있다.(무방향 그래프) 흐름의 정도를 표현하는 가중치 시작과 끝의 연결 여부 순환 그래프, 비순환 그래프  그래프 구현서울에서 부산으로 유동 인구 8,000명 발생.그래프의 노드, 간선, 방향, 가중치로 연결해보기데이터 담고 있는 노드 : 서울, 부산노드 잇는 간선 : 서울과 부산 연결 유무간선의 방향 : 서울 → 부산 간선의 가중치 : 8,000명 그래프의 구현 방식 1. 인접 행렬2. 인접 리스트 인접 행렬 그래프 표현: 배열을 활용하는 경우가 많음. 배열의 인덱스: 노드배열의 ..

파이썬 코딩테스트 스터디 7주차 #5 - 전화번호 목록

전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다.  구조대 : 119박준영 : 97 674 223 지영석 : 11 9552 4421 전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 return 하도록 solution 함수를 작성해주세요. 제한 사항 phone_book의 길이는 1 이상 1,000,000 이하입니다.각 전화번호의 길이는 1 이상 20 이하입니다. 같은 전화번호가 중복해서 들어있지 않습니다. 입출력 예 phone_book..

파이썬 코딩테스트 스터디 7주차 #4 - 영어 끝말 잇기

1부터 n까지 번호가 붙어있는 n명의 사람이 영어 끝말잇기를 하고 있습니다. 영어 끝말잇기는 다음과 같은 규칙으로 진행됩니다. 1번부터 번호 순서대로 한 사람씩 차례대로 단어를 말합니다.마지막 사람이 단어를 말한 다음에는 다시 1번부터 시작합니다.앞사람이 말한 단어의 마지막 문자로 시작하는 단어를 말해야 합니다.이전에 등장했던 단어는 사용할 수 없습니다.한 글자인 단어는 인정되지 않습니다. 다음은 3명이 끝말잇기를 하는 상황을 나타냅니다. tank → kick → know → wheel → land → dream → mother → robot → tank 위 끝말잇기는 다음과 같이 진행됩니다.1번 사람이 자신의 첫 번째 차례에 tank를 말합니다.2번 사람이 자신의 첫 번째 차례에 kick을 말합니다.3..

파이썬 코딩테스트 스터디 7주차 #3 - 포켓몬 - 합격자가 되는 모의 테스트

당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다. 홍 박사님 연구실의 폰켓몬은 종류에 따라 번호를 붙여 구분합니다. 따라서 같은 종류의 폰켓몬은 같은 번호를 가지고 있습니다. 예를 들어 연구실에 총 4마리의 폰켓몬이 있고, 각 폰켓몬의 종류 번호가 [3번, 1번, 2번, 3번]이라면 이는 3번 폰켓몬 두 마리, 1번 폰켓몬 한 마리, 2번 폰켓몬 한 마리가 있음을 나타냅니다. 이때, 4마리의 폰켓몬 중 2마리를 고르는 방법은 다음과 같이 6가지가 있습니다. 첫 번째(3번), 두 번째(1번) 폰켓몬을 선택 첫 번째(3번), 세 번째(2번) 폰켓몬을 선택 첫 번째(3번..

파이썬 코딩테스트 스터디 7주차 #2 - 몸풀기 문제 : 간단한 유니온 - 파인드 알고리즘 구현하기

Operations에 있는 연산 모두 수행 후 집합 개수 반환하는Solution 함수 구현하기 상호배타적 집합 표현시 다음 두 연산 필요1. uinon(x,y) : x와 y가 속한 두 집합 합치기2. find(x): x가 속한 집합의 대표 원소 찾기 operations라는 배열은 수행할 연산 의미['u',1,2]는 노드 1과 노드 2에 대해 union 연산 수행['f',3] 노드 3의 루트 노드 찾기, find연산 수행  제약 조건0  ≤  k  ≤  1,000 : 노드의 개수1  ≤   len(operations)  ≤  1000,000operations[i][0]은 문자열 'u' 또는 'f' 중 하나'u'는 union연산, uinon 연산 뒤로는 두 개의 정수 x,y가 나옴'f 는 find 연산, f..

파이썬 코딩테스트 스터디 7주차 #1 - 집합

1. 집합과 상호배타적 집합의 개념집합의 개념 집합은 순서와 중복이 없는 원소들을 갖는 자료 구조.ex)A그룹 = {1,6,6,6,4,3} 이면 집합은 {1,6,4,3} or {6,1,3,4} or {3,6,1,4} ...등등중복 제거, 순서 상관 X 집합의 종류상호배타적 집합 : 교집합이 없는 집합 관계 2. 집합의 연산배열을 활용한 트리로 집합 표현하기집합은 배열을 활용한 트리로 구현.  대표원소란?집합의 원소 중 집합을 대표하는 역할. 트리로 표현할 때는 루트 노드 배열로 집합을 표현하는 것이란?하나의 배열로 상호 배타적 관계를 가지는 집합을 모두 표현한다즉 2개의 집합(교집합이 없는)을 1개 배열로 다 나타내는 방법. 배열의 인덱스는 자신을, 값은 부모 노드를 의미   이때 배열의 크기는 반드시 ..

파이썬 코딩테스트 스터디 6주차 #5 - 다단계 칫솔 판매

프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  문제 핵심  본인 판매금액의 10%는 위로 올린다.    위 그림과 아래 표를 예시로 보면young은 1,200원을 벌었다.그러면 young의 부모는 edward이므로, young이 번 1,200원의 10%인120원을 edward에 상납한다 그리고 또 edward는 그 120원의 10%인 12원을 mary에 상납그리고 또 mary는 그 12원의 10%인 1.2원(1원단위만) 1원을 center에 상납   Youngedwardmarycenter이익금1,200원120원12원1원실제 이익1,080원108원11원-  ..

파이썬 코딩테스트 스터디 6주차 #4 - 예상대진표

https://school.programmers.co.kr/learn/courses/30/lessons/12985# 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr NABanswer8473   import mathdef solution(n,a,b): answer = 0 while a!=b: a = math.ceil(a/2) b = math.ceil(b/2) answer +=1 return answer    ♬ 자료 출처 - 책코딩 테스트 합격자 되기 - 파이썬 편   이 포스팅의 모든 내용은 해당 책의 내용..