본문 바로가기

코딩 테스트 연습28

[알고리즘] 프로그래머스 - 카드 뭉치 [알고리즘] 프로그래머스 - 카드 뭉치 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(cards1, cards2, goal): for word in goal: if cards1 and word == cards1[0]: del cards1[0] elif cards2 and word == cards2[0]: del cards2[0] else: return "No" return "Yes" 2023. 6. 18.
[알고리즘] 프로그래머스 - 피로도 https://school.programmers.co.kr/learn/courses/30/lessons/87946 피로도 1. 구해야 하는 것 최대 탐험 가능한 던전의 수 2. 1을 구하기 위해 필요한 것 던전 탐험의 우선순위를 구한다? 모든 탐색 경우의 수를 구한다. - itertools의 permutations permutations를 사용해서 모든 경우의 수에 대해서 계산해주는 방법 피로도와 비교해서 입장 가능한 던전이라면, 소모피로도를 빼주는 방식으로 각각의 경우에 대해서 몇개의 던전을 갈 수 있는지 계산해서, 가장 많은 던전을 돈 경우의 던전 수를 return해준다 from itertools import permutations as p def solution(k, dungeons): answer.. 2023. 6. 5.
[알고리즘] 프로그래머스 - 로또의 최고 순위와 최저 순위 로또의 최고 순위와 최저 순위 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 구해야 하는 것 최저 등수와 최고 등수 2. 1을 구하기 위해 필요한 것 확정으로 맞은 번호들을 빼고 나면, 남은 갯수 + 1이 최저 등수 맞은 번호를 빼는 법 remove? del? pop? 리스트 컴프리헨션으로 다른 번호만 넣어준다. 거기서 0의 개수를 더 빼주면 최고 등수 3. 그 외 고려해야 할 사항 7등은 없으므로 min(6, 나온 값)으로 최대 6등까지 나오게 한다. remove를 사용한 코드, 당첨 번호에서 lottos와 공통으로 들어간 번호들을 지워준 뒤, l.. 2023. 6. 2.
20230530 TIL - 알고리즘 대충 만든 자판 [알고리즘] 프로그래머스 - 대충 만든 자판 대충 만든 자판 1. 구해야 하는 것 각 문자열을 작성하기 위해 키를 최소 몇번씩 눌러야 하는지 작성할 수 없다면 -1 2. 1을 구하기 위해 필요한 것 각각의 알파벳 별로 최소 누르는 횟수를 담은 딕 codemte.tistory.com 2023. 6. 1.
[알고리즘] 프로그래머스 - 행렬의 곱셈 행렬의 곱셈 1. 구해야 하는 것 행렬의 곱 2. 1을 구하기 위해 필요한 것 분명히 numpy에 있는 기능일 것. 행렬을 다룰땐 zip을 쓰면 좋다. 일단 그냥 해보기 일단 그냥 해본 방법 def solution(arr1,arr2): answer = [] for i in range(len(arr1)): row = [] # 임시로 저장해서 answer에 더해줄 리스트 for j in range(len(arr2[0])): a = 0 # 임시로 곱들의 합을 더해줄 변수 for k in range(len(arr2)): a += arr1[i][k] * arr2[k][j] row.append(a) # row에 더해준 뒤, answer.append(row) # 해당 리스트를 answer에 더해주기 return an.. 2023. 6. 1.
[알고리즘] 프로그래머스 - 대충 만든 자판 대충 만든 자판 1. 구해야 하는 것 각 문자열을 작성하기 위해 키를 최소 몇번씩 눌러야 하는지 작성할 수 없다면 -1 2. 1을 구하기 위해 필요한 것 각각의 알파벳 별로 최소 누르는 횟수를 담은 딕셔너리를 만든다. index번호끼리 비교해서 더 작은것을 밸류로 가져가기 > min keymap의 원소별로 돌아가면서 target의 인덱스를 찾을 방법 enumerate로 인덱스랑 같이 값을 빼옴 변수가 너무 많아 헷갈려서 한글로 코딩해봤다. enumerate 사용해서 딕셔너리에 알파벳별로 최소 눌러야하는 횟수를 저장해줬고, 해당 딕셔너리에서 글자마다 찾아서 횟수를 더해주는 방식 최소누르는횟수 = {} # 각각의 알파벳을 얻기 위해 가장 빠른 입력 횟수 for k in keymap: for i, k in e.. 2023. 6. 1.
[알고리즘] 프로그래머스 - 과일 장수 과일 장수 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 구해야 하는 것 각각의 상자 가격들의 합이 최대일때의 이익 2. 1을 구하기 위해 필요한 것 최대가 되려면? 최저가의 사과들끼리, 품질 좋은 사과끼리 분리해야함 sort로 정렬 후 m개 씩 끊어서 담기 개수가 모자라면 세지 않음 내림차순으로 정렬 후 0부터 사과개수 -1까지 m개의 step으로 for문 돌리기 i:i+m개씩 슬라이싱했을 때, len(a)가 m개, 즉 한 상자를 모두 채운다면, result에 해당 상자 가격을 더해준다 def solution(k, m, score): result .. 2023. 5. 19.
[알고리즘] 프로그래머스 - 푸드 파이트 대회 푸드 파이트 대회 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 구해야 하는 것 양끝이 칼로리가 낮은 순으로 배치된 문자열을 반환(물 이외에 홀수개면 버림) 2. 1을 구하기 위해 필요한 것 2로나눈 몫만큼 인덱스번호를 반복해서 문자열에 집어넣기 reversed? [::-1]? > 리스트로 만들어야? 3. 그 외 고려해야 할 사항 문자열의 중앙은 0으로 고정 문자열은 1333445560655443331 이런식으로 좌우대칭 문자열은 0을 기준으로 대칭이므로 왼쪽만 구해서 뒤집어준다. answer = [] # 0번째 원소는 무조건 2로 나눈 몫이 0 f.. 2023. 5. 19.
[알고리즘] 프로그래머스 - 소수 찾기 소수 찾기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 구해야 하는 것 # 1부터 n사이의 소수 2. 1을 구하기 위해 필요한 것 # 소수를 구하는 방법 # 에라토스테네스의 체 # 직접 나눠서 세기(제곱근까지) # 관련 모듈이 있을까? > 못찾음 3. 그 외 고려해야 할 사항 # n은 1000000이하의 자연수(시간복잡도 고려) 단순히 전체 수를 돌면서 약수면 카운트를 올려서 약수가 없는 수만 골라내는 방법(시간 초과) def solution(n): count = 0 answer = 0 for i in range(3, n+1): for j in r.. 2023. 5. 18.