[Programmers] Level 3. 숫자 게임
·
코딩테스트/Python
🔗 Problem Link 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ❔Thinking A, B가 팀 대결을 펼치며, B팀은 A팀이 내는 숫자보다 큰 숫자를 골라 이겨야 한다. 이때, 가장 최대한 많은 경기를 이길 수 있는 횟수를 반환한다. 💻Solution 1. bisect_right를 이용한 풀이 from bisect import bisect_right def solution(A, B): win = 0 B.sort() for a in A: next_player = bisect_right(B, a) if next_player < len(B): win..
[Programmers] Level 3. 단속 카메라
·
코딩테스트/Python
🔗 Problem Link 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ❔Thinking 차량의 진입,진출 기록이 각각 담긴 routes를 활용해, 모든 차량을 단속할 수 있는 최소 카메라 개수를 반환한다. 진입과 진출 시에 만나는 단속카메라도 단속이 가능하다. 💻Solution 1. 뒤에서부터 차례로 확인해나가는 풀이 def solution(routes): answer = 0 routes = sorted(routes, key=lambda x: x[0]) while routes: camera_site = routes.pop()[0] # 카메라 설치 wh..
[Programmers] Level 3. 최고의 집합 (Python)
·
코딩테스트/Python
🔗 Problem Link 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ❔Thinking 자연수 n개로 이루어진 중복집합 중에, 원소의 합이 S되고 그 곱이 최대인 집합('최고의 집합')을 반환한다. '최고의 집합'이 존재하지 않을 경우, [-1]을 반환한다. 💻Solution import math def solution(n, s): if n > s: return [-1] answer = [] while n >= 1: num = math.ceil(s/n) answer.append(num) n -= 1 s -= num return sorted(answer..
[Programmers] Level 2. 전화번호 목록 (Python)
·
코딩테스트/Python
🔗 Problem Link 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ❔Thinking 한 번호가, 다른 번호의 시작과 동일한 경우가 있다면 False, 하나도 없다면 True를 반환한다. 💻Solution 1. 모든 접두사를 확인하는 풀이 def solution(phone_book): phone_dict = {number : number for number in phone_book} for phone_num in phone_book: for i in range(1,len(phone_num)): if phone_num[:i] in phone_dict ..
[Programmers] Level 2. 삼각 달팽이 (Python)
·
코딩테스트/Python
🔗 Problem Link 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ❔Thinking 주어진 삼각형을 반시계 방향으로 채워나가는 방법은 다음과 같은 과정의 반복이다. 층을 내려가면서, 숫자를 하나씩 늘려 채워나간다. 같은 층의 오른쪽으로 끝까지 가면서, 숫자를 하나씩 늘려 채워나간다. 층을 올라가면서, 숫자를 하나씩 늘려 채워나간다. 위와 같은 방법으로 채워진 삼각형을 각 층의 왼쪽부터 차례대로 리스트에 담아 반환한다. 💻Solution def solution(n): answer = [] triangle = [[0 for _ in range(i)] ..
[Programmers] Level 2. 쿼드압축 후 개수 세기
·
코딩테스트/Python
🔗 Problem Link 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ❔Thinking 0과 1로 이루어진 정수 배열 arr을 작게 나누어, 나뉜 영역이 모두 0이거나 1이면 해당 수 하나로 압축한다. 나뉜 영역이 압축 불가하다면, 다시 작게 나누어 확인하는 과정을 반복한다. 압축 시행 후, 0과 1의 개수를 각각 세어 반환한다. 문제를 다음과 같이 생각할 수 있다. 크기가 $2^{n}$인 0 또는 1로만 이루어진 도장을 만들고, 이 도장과 모양이 같을 경우 판에 도장을 찍는다. 0의 도장과 1의 도장이 각각 찍힌 횟수 반환한다. 💻Solution d..