🌿All posts 199

✏️ [백준 1593] 문자 해독

1. 문제 www.acmicpc.net/problem/1593 1593번: 문자 해독 첫째 줄에 고고학자들이 찾고자 하는 단어 W의 길이 g와 발굴된 벽화에서 추출한 문자열 S의 길이 |S|가 빈 칸을 사이에 두고 주어진다. (1≤g≤3000, g≤|S|≤3,000,000) 둘째 줄에 W, 셋째 줄에 S의 실 www.acmicpc.net 2. 접근 방법 와우오아오아우와웅 완전 딱 처음에 봤을 때는 순열을 구하면 되겠다라는 생각을 했는데 문자열 길이가 3000까지 되는 걸 보고 순열은 글러먹었다 라는 생각을 했다. 그 다음에는 그냥 word 안에 존재하는 문자일 경우에만 문자열에서 슬라이싱 해서 봐주면 되지 않을까 ? 라는 생각을 했다. 이렇게 되면 대충 가지치기 할 수 있으니까 ?? 근데 생각해보니까 3..

Algorithm/Python 2021.05.05

✏️ [스택/큐] 프린터

1. 문제 programmers.co.kr/learn/courses/30/lessons/42587 코딩테스트 연습 - 프린터 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린 programmers.co.kr 2. 접근 방법 1. 현재 n이 max인가 아닌가 확인 -- max를 확인하기 위해서 새로운 리스트 하나를 만듦 --- pop을 max리스트만 해주는 이유는 n을 확인하기 위해서! 1-1. max라면 max리스트에서 pop하고 isPrint를 뜻하는 visited[n] = True를 해준다. 그리고 answer += 1을 해준다. 1-1-1. 만약 max인데 locat..

Algorithm/Python 2021.05.04

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

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