🌿Algorithm/Python 116

✏️ [스택/큐] 기능개발

1. 문제 programmers.co.kr/learn/courses/30/lessons/42586 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr 2. 접근 방법 스택을 이용하면 된다. 1. 기능 개발하는데 걸리는 시간 구해서 리스트에 담기 2-0. 기능 개발하는데 걸리는 시간 리스트 순회하며 현재 값이 전 값과 같거나 작다면 cnt += 1 2-1. 현재 값이 전 값보다 크다면 현재 cnt를 answer에 append하고 cnt 를 1로 초기화 이렇게 생각했다. 3. 코드 python def solu..

Algorithm/Python 2021.05.03

✏️ [백준 2309] 일곱 난쟁이

1. 문제 www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net 2. 접근 방법 조합으로 2개만 뽑아가지고 총 키에서 그 2개의 합을 뺀 값이 100이 나오면 바로 프린트하고 exit()해서 빨리 끝냈습니당. 3. 코드 python def comb(cnt, start): global pair if cnt == 2: if sum(heights) - sum(pair) == 100: for i in heights: if i != pair[0] and i != pair[1]: p..

Algorithm/Python 2021.05.03

✏️ [백준 6588] 골드바흐의 추측

1. 문제 www.acmicpc.net/problem/6588 6588번: 골드바흐의 추측 각 테스트 케이스에 대해서, n = a + b 형태로 출력한다. 이때, a와 b는 홀수 소수이다. 숫자와 연산자는 공백 하나로 구분되어져 있다. 만약, n을 만들 수 있는 방법이 여러 가지라면, b-a가 가장 큰 www.acmicpc.net 2. 접근 방법 예전에 했던 에라토스테네스의 체를 사용해서 풀었따. 시간 초과가 날 거 같아서 그냥 갯수만큼 리스트로 미리 소수를 구해놓고 a-b가 가장 큰 쌍을 구해야하니까, 결국 a가 가장 크고 b가 가장 큰 값이면 되니까 가장 작은 수부터 확인해서 a+b가 N이 될 때 둘 다 소수인지 확인하고 맞으면 바로 프린트하고 끄읕 3. 코드 python wrong_msg = "Go..

Algorithm/Python 2021.05.03

✏️ [스택/큐] 다리를 지나는 트럭

1. 문제 programmers.co.kr/learn/courses/30/lessons/42583 코딩테스트 연습 - 다리를 지나는 트럭 트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이 programmers.co.kr 2. 접근 방법 스택으로 접근했습니당 3. 코드 python def solution(bridge_length, weight, truck_weights): answer = 0 bridge = [0]*bridge_length while bridge: answer += 1 bridge.pop(0) if truck_weights: now = truck_we..

Algorithm/Python 2021.05.02

✏️ [해시] 베스트앨범

1. 문제 programmers.co.kr/learn/courses/30/lessons/42579 코딩테스트 연습 - 베스트앨범 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 programmers.co.kr 2. 접근 방법 해시 3. 코드 python def solution(genres, plays): answer = [] genres_idx = {} genres_cnt = {} for i in range(len(genres)): if genres[i] in genres_cnt.keys(): genres_cnt[genres[i]] += plays[i] genres_i..

Algorithm/Python 2021.05.01

✏️ [해시] 위장

1. 문제 programmers.co.kr/learn/courses/30/lessons/42578 코딩테스트 연습 - 위장 programmers.co.kr 2. 접근 방법 해시 3. 코드 python def solution(clothes): answer = 1 hash = {} for val, key in clothes: if key in hash.keys(): hash[key].append(val) else: hash[key] = [val] for key in hash.keys(): answer *= (len(hash[key])+1) answer -= 1 return answer 4. 마치며 해시를 계속 푸니 약간 손에 익는 듯 합니다요 참고로 저는 key를 기준으로 for문을 돌렸는ㄷㅔ 다른 사람들 ..

Algorithm/Python 2021.05.01

✏️ [해시] 전화번호 목록

1. 문제 programmers.co.kr/learn/courses/30/lessons/42577 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조 programmers.co.kr 2. 접근 방법 해시로 접근하지 않으면 시간초과가 납니다요 3. 코드 python def solution(phone_book): answer = True hash = {} for phone in phone_book: hash[phone] = 1 for phone in phone_book: temp = "" for num in phone: temp += num i..

Algorithm/Python 2021.04.30

✏️ [해시] 완주하지 못한 선수

1. 문제 programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr 2. 접근 방법 해시로 접근을 해보았습니다. 1. participant의 이름들을 key값으로 갖는 hash를 만들어서 해당 key의 value는 해당 이름을 가진 사람들의 숫자입니다. (동명이인의 경우 +a, 아닌 경우 1) 2. completion을 반복하여 동명이인의 경우-1, 아닌 경우 해당 key를 완전히 빼버립니다. 3. 남은 key를..

Algorithm/Python 2021.04.30

✏️ [백준 11399] ATM

1. 문제 www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 2. 접근 방법 합을 최소로 만들기 위해서는 결국 가장 적은 수가 더 많이 더해져야하니까 정렬한 후에 더해주면 된다. 3. 코드 python N = int(input()) money = list(map(int, input().split())) money.sort() answer = 0 for i in range(N): answer += (money[i]*(N-i)) print(answer) 4. 마치며 .

Algorithm/Python 2021.04.28