프로그래밍 이야기/파이썬 코딩 테스트 스터디 40

파이썬 코딩테스트 스터디 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    ♬ 자료 출처 - 책코딩 테스트 합격자 되기 - 파이썬 편   이 포스팅의 모든 내용은 해당 책의 내용..

파이썬 코딩테스트 스터디 6주차 #3 - 이진 탐색 트리 구현

첫 번째 인수 lst를 이용하여 이진 탐색 트리를 생성하고, 두 번째 인수 search_list에 있는 각 노드를 이진 캄색 트리에서 찾을 수 있는지 확인하여True 또는 False를 담은 리스트 result를 반환하는 함수 solution()작성 하세요. 제약 조건lst의 노드는 정수로 이루어져 있으며, 1,000,000개를 초과하지 않는다.이진 탐색 트리의 삽입과 탐색 기능 구현search_list의 길이는 10 이하입출력 예lstsearch_lstanswer[5,3,8,3,2,1,7,10][1,2,5,6] [1,3,5,7,9][2,4,6,8,10]   문제 분석하고 풀기 이진 탐색 트리 재점검검색하려는 값과 현재 노드 비교, 같으면 검색 완료검색하려는 값이 현재 노드의 값보다 작으면, 왼쪽 서브 트..

파이썬 코딩테스트 스터디 6주차 #2 - 몸풀기 문제 - 트리 순회

트리 순회 이진 트리를 표현한 리스트 nodes를 인자로 받는다.예를 들어 nodes가 [1,2,3,4,5,6,7]이면 다음과 같은 트리를 표현한 것. 해당 이진 트리에 대해 전위 순회, 중위 순회, 후위 순회결과를 반환하는 solution 함수 구현하기  제약 조건입력 노드값의 개수는 1개 이상 1,000개 이하노드값은 정수형. 중복되지 않는다.입출력 예시nodesreturn[1,2,3,4,5,6,7]["1 2 4 5 3 6 7", "4 2 5 1 6 3 7", "4 5 2 6 7 3 1"]  결국은 list 자료형으로 구성했고,다만 idx를 차례대로 순회하는 것이 아닌각 전위, 중위, 후위 방식대로 순회  근데 왠지 차례대로 찾는 것보다 연산?if 조건 계산을 더 많이 하는 것 같은 생각이...def..

파이썬 코딩테스트 스터디 5주차 #6 - 오픈 채팅

프로그래머스 - 오픈 채팅 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr recordresult[ "Enter uid1234 Muzi",  "Enter uid4567 Prodo", "Leave uid1234", "Enter uid1234 Prodo", "Change uid4567 Ryan" ][  "Prodo님이 들어왔습니다.",  "Ryan님이 들어왔습니다.",  "Prodo님이 나갔습니다.",  "Prodo님이 들어왔습니다."] Enter랑 Change만 3단어로 묶여있고Leave는 2단어 되어있기 때문에if len(li) ==3이라고 썼다. Dictio..

파이썬 코딩테스트 스터디 5주차 #5 - 할인 행사

XYZ 마트는 일정한 금액을 지불하면 10일 동안 회원 자격을 부여합니다. XYZ 마트에서는 회원을 대상으로 매일 한 가지 제품을 할인하는 행사를 합니다. 할인하는 제품은 하루에 하나씩만 구매할 수 있습니다. 알뜰한 정현이는 자신이 원하는 제품과 수량이 할인하는 날짜와 10일 연속으로 일치할 경우에 맞춰서 회원가입을 하려 합니다. 예를 들어, 정현이가 원하는 제품이 바나나 3개, 사과 2개, 쌀 2개, 돼지고기 2개, 냄비 1개이며, XYZ 마트에서 14일간 회원을 대상으로 할인하는 제품이 날짜 순서대로 치킨, 사과, 사과, 바나나, 쌀, 사과, 돼지고기, 바나나, 돼지고기, 쌀, 냄비, 바나나, 사과, 바나나인 경우에 대해 알아봅시다. 첫째 날부터 열흘 간에는 냄비가 할인하지 않기 때문에 첫째 날에는 ..

파이썬 코딩테스트 스터디 5주차 #4 - 완주하지 못한 선수

수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다.completion의 길이는 participant의 길이보다 1 작습니다.참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다.참가자 중에는 동명이인이 있을 수 있습니다.participantcompletionreturn["leo", "kiki", "eden"]["eden", "kik..