목록Algorithm(python) (12)
:)

https://www.acmicpc.net/problem/5904 5904번: Moo 게임 Moo는 술자리에서 즐겁게 할 수 있는 게임이다. 이 게임은 Moo수열을 각 사람이 하나씩 순서대로 외치면 되는 게임이다. Moo 수열은 길이가 무한대이며, 다음과 같이 생겼다. m o o m o o o m o o m o o o www.acmicpc.net 재귀 - 왼쪽, 가운데, 오른쪽 으로 나누어 재귀를 실행함. import sys def solution(n): def moo(s,idx, n): prev = (s-(idx+3))//2 if n (prev + idx + 3): return moo(prev, idx-1, n-prev-(idx+3)) else: return "o" if n - prev-1 else "..
https://www.acmicpc.net/problem/2630 2630번: 색종이 만들기 첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들의 색이 윗줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진다. www.acmicpc.net 재귀 - 재귀를 사용하여 범위를 좁혀가며 whites, blues 계산 import sys def solution(n, paper): def f(i,j,n): if n == 1: return (1,0) if paper[i][j] == 0 else (0,1) splits = [f(i,j, n//2), f(i+n//2, j, n//2), f(i,j+n//2,n//2), f(..
https://www.acmicpc.net/problem/1561 1561번: 놀이 공원 첫째 줄에 N(1 ≤ N ≤ 2,000,000,000)과 M(1 ≤ M ≤ 10,000)이 빈칸을 사이에 두고 주어진다. 둘째 줄에는 각 놀이기구의 운행 시간을 나타내는 M개의 자연수가 순서대로 주어진다. 운행 시간은 1 이상 30 www.acmicpc.net 이분탐색 import sys def solution(n,m,time): def get_prev_time_list(time,mid): prev_time = mid - 1 total = m for t in time: total += prev_time // t return total left = min(time) right = max(time) * n ans = r..
https://www.acmicpc.net/problem/2461 2461번: 대표 선수 입력의 첫 번째 줄에는 학급의 수를 나타내는 N과 각 학급의 학생의 수를 나타내는 M이 하나의 빈칸을 사이에 두고 주어진다. 단, 1 ≤ N, M ≤ 1,000이다. 두 번째 줄부터 N개의 줄에는 각 줄마다 한 www.acmicpc.net 1) 투포인터를 사용해 정렬한 리스트의 첫번째 요소들끼리 비교 2) 비교한 요소들의 최소, 최대를 구하고 diff 계산. 3) 최소값을 가진 리스트 인덱스 +1, 새 리스트를 구성해 최소 최대를 구해줌 4) 최소값을 가진 리스트 인덱스가 리스트 끝이면 종료 ----> 시간초과. So. 힙 사용 import sys import heapq def solution(arr, n,m): h..
https://school.programmers.co.kr/learn/courses/30/lessons/92341 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 구현 1) 차 번호별 시간 구하기(defaultdict) 2) 요금 측정 함수 3) sorted() 차 번호 정렬 from collections import defaultdict def solution(fees, records): dic = defaultdict(list) default_time, default_fee, unit_time, unit_fee = fees def get_price(lo..
https://www.acmicpc.net/problem/20922 20922번: 겹치는 건 싫어 홍대병에 걸린 도현이는 겹치는 것을 매우 싫어한다. 특히 수열에서 같은 원소가 여러 개 들어 있는 수열을 싫어한다. 도현이를 위해 같은 원소가 $K$개 이하로 들어 있는 최장 연속 부분 수열 www.acmicpc.net 투포인터 1) lo, hi =0, 0, cnt = {} 2) 종료조건 : hi 포인터가 끝까지 가면 종료 3) 해당 정수 dict에 count가 k개 미만 or Not 분기 설정 import sys from collections import defaultdict def solution(n,k,arr): lo,hi = 0,0 ans = 0 cnt = defaultdict(int) while h..
https://school.programmers.co.kr/learn/courses/30/lessons/92334 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 구현 1. report에 대한 신고 유저, 신고 아이디 딕셔너리 만들기 2. Counter 함수로 신고 횟수 구하기 3. 신고 기준 횟수가 넘어가는 신고 아이디 리스트 만들기 4. 신고 아이디 리스트 포함 & 딕셔너리 value에 있는 개수 구해서 answer 리스트 만들기 from collections import Counter,defaultdict def solution(id_list, rep..
https://school.programmers.co.kr/learn/courses/30/lessons/64065?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1) string으로 들어오는 input 값 리스트로 값 넣어주기 2) 리스트에서 첫번째 원소는 n개, 두번째 원소는 n-1개, N번째 원소는 1개 데이터 존재 3) collections 모듈 Counter 사용해 가장 많이 나온 데이터 찾기(most_common()) from collections import Counter def solution(s): for c ..
https://www.acmicpc.net/problem/14620 14620번: 꽃길 2017년 4월 5일 식목일을 맞이한 진아는 나무를 심는 대신 하이테크관 앞 화단에 꽃을 심어 등교할 때 마다 꽃길을 걷고 싶었다. 진아가 가진 꽃의 씨앗은 꽃을 심고나면 정확히 1년후에 꽃이 피므 www.acmicpc.net 완전탐색 1) 0 < i < 6, 0 < j < 6, (i,j) 비용 구하기 2) combination 조합을 구함 3) combination 후보가 꽃길이 성립되는지 확인((i,j) 기준으로 차이가 abs 3이상) import sys from itertools import combinations def solution(N,arr): ans = float('inf') def get_cost(i,..
https://www.acmicpc.net/problem/12933 12933번: 오리 첫째 줄에 영선이가 녹음한 소리가 주어진다. 소리의 길이는 5보다 크거나 같고, 2500보다 작거나 같은 자연수이고, 'q','u','a','c','k'로만 이루어져 있다. www.acmicpc.net 구현 1. 'quack' dict 선언. 문자열 탐색, 이전 소리가 있는지 check 2. 'q' 일때 count +1, 'k' 일때 concurrent -1 import sys q_list = sys.stdin.readline() def solution(q_list): quack = {x:0 for x in q_list} prev_quack = {x:y for x,y in zip('uack','quac')} concu..