[Programmers] Level 2. 메뉴 리뉴얼
·
코딩테스트/Python
🔗 Problem Link 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ❔Thinking 사람들이 가장 많이 주문한(2명 이상) 단품메뉴(단품 2개 이상)를 조합해 새로운 코스메뉴를 반환한다. 코스를 구성하는 단품 메뉴의 수가 가장 많은 메뉴만을 코스로 구성한다. ("AB" 4개, "AC" 2개일 경우 "AB"만 해당) 💻Solution 1. key를 통한 정렬 풀이 from itertools import combinations from collections import Counter def solution(orders, course): answer =..
[Programmers] Level 3. 보석 쇼핑
·
코딩테스트/Python
🔗 Problem Link 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ❔Thinking 구간 내의 모든 보석을 담을 때, 모든 종류의 보석이 하나 이상 담기는 가장 짧은 구간을 반환한다. 💻Solution def solution(gems): n = len(set(gems)) answer = [0, len(gems)-1] gem = {gems[0]: 1} s, e = 0, 0 while s < len(gems) and e < len(gems): if len(gem) == n: if e-s < answer[1] - answer[0]: answer = [s..
[Programmers] Level 3. 불량 사용자
·
코딩테스트/Python
🔗 Problem Link 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ❔Thinking 일부 문자가 가려진 banned_id와 일치하는 user_id 목록을 만들고, 목록의 개수를 반환한다. 목록의 순서는 관계없으며, 목록의 아이디가 일치한다면 하나의 목록으로 간주한다. 💻Solution 1. id별 일치 여부를 확인하는 풀이 from itertools import permutations def IdCheck(uid, bid): if len(uid) != len(bid): return False correct_cnt = 0 for i in range(..
[Baekjoon] 11659. 구간 합 구하기 4
·
카테고리 없음
🔗 Problem Link 11659번: 구간 합 구하기 4 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j www.acmicpc.net ❔Thinking 주어진 N개의 숫자들 중, i번째에서 j번째 까지의 합을 구해 반환한다. 💻Solution import sys N, M = map(int, sys.stdin.readline().split()) numbers = list(map(int, sys.stdin.readline().split())) numbers_sum = [0] tmp_sum = 0 for i in numbers: tmp_sum += i..
[Baekjoon] 1463 - 1로 만들기
·
코딩테스트/Python
🔗 Problem Link 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net ❔Thinking "2로 나누기 / 3으로 나누기 / 1빼기" 이 3가지 방법으로 주어진 숫자를 1로 만든다. 해당 숫자를 1로 만드는 다양한 방법 가운데, 가장 적은 횟수로 1을 만들고 그 횟수를 반환한다. 💻Solution n = int(input()) how_to_make_n = [0, 0, 1, 1] for i in range(4,n+1): if i % 3 == 0 and i % 2 == 0: how_to_make_n += [min(1+how_to_make_n[i-1], how_to_make_n[i//3] + 1, how_to_make_n[i..
[Baekjoon] 17219. 비밀번호 찾기
·
코딩테스트/Python
🔗 Problem Link 17219번: 비밀번호 찾기 첫째 줄에 저장된 사이트 주소의 수 N(1 ≤ N ≤ 100,000)과 비밀번호를 찾으려는 사이트 주소의 수 M(1 ≤ M ≤ 100,000)이 주어진다. 두번째 줄부터 N개의 줄에 걸쳐 각 줄에 사이트 주소와 비밀번 www.acmicpc.net ❔Thinking "사이트주소 비밀번호"가 적힌 메모를 참고하여, 사이트 주소에 맞는 비밀번호를 출력한다. 입력이 많기 때문에, input이 아닌 다른 입력 방법을 활용한다. 💻Solution import sys N, M = map(int, sys.stdin.readline().split()) password_dict = {} a = sys.stdin.read().splitlines() sites = a[-..