Programming/Programmers 문제풀이
-
백준 14888 - 연산자 끼워넣기Programming/Programmers 문제풀이 2022. 4. 25. 14:23
숫자 배열이 주어지고, 사용할 수 있는 연산자의 갯수도 주어진다. 예를 들어서 [1,2,3,4,5,6] 이고 [2,1,1,1]이면 '+'를 2개, '-' 1개, '*' 1개, '%' 1개를 이용할 수 있다. 조금 더 작은 수를 예제로 들어보자 숫자 : 3 4 5 사용할 수 있는 연산자 : 1 0 1 0 나올 수 있는 조합은 3+4*5, 3*4+5 이 있다. 여기서 최댓값, 최솟값을 구하는 문제이다. 나올 수 있는 숫자는 11개이며, 연산자는 10개이다. 즉 10개의 연산자를 순서대로 배치하면 된다. 문제에서는 숫자 6개에 연산자 5개일때, 경우의 수가 60가지라고 표현을 했다. 왜 그러냐면 같은것을 하나로 보기 때문이다. 만약 최악의 경우 11개의 숫자가 들어온다면 '+' 3개, '-' 3개, '*' 2..
-
백준 1339 - 단어 수학Programming/Programmers 문제풀이 2022. 4. 24. 16:28
https://www.acmicpc.net/problem/1339 1339번: 단어 수학 첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대 www.acmicpc.net 그리디로 찾아가면서 푸는 문제이다. 최대 10개와 문자 길이는 8이 최대이므로 전체를 다 돌려봐도 되고, 긴 순서대로 정해주면서 아래로 내려가면 될거라 생각했다. 1) 1차 코딩 dictionry에 값을 저장해두고, 계산하는 방법이다. 2차원 배열을 열로 돌면서 Dict에 값을 저장하고, 이미 나온 값은 Dic에서 가져오는 방법이다. 결과는 실패 코드 더보기 arr = [['.' for i ..
-
메뉴 리뉴얼Programming/Programmers 문제풀이 2021. 3. 8. 13:39
조합과 collections을 이용하면 풀리는 문제, 처음에는 복잡하게 생각하다가...문제가 이렇게 복잡할수는 없다라고 생각하고 다시 풀어본 문제 python 풀이를 한 사람들은 대부분 combinations과 collections를 사용해서 풀었던것 같다. def solution_kakao_2(orders, course): answer = [] for k in course: candidates = collections.defaultdict(int) for menu_li in orders: for li in list(combinations(menu_li, k)): res = ''.join(sorted(li)) candidates[res] += 1 sorted_candidates = collections...
-
신규 아이디 추천Programming/Programmers 문제풀이 2021. 3. 8. 09:31
2021 카카오 코딩테스트 1번 문제 주어진 규칙대로 풀면 되는 문제 정규식 표현을 사용해서 풀어도 되는데, 정규식은 어려우므로 그냥 풀었음 def solution_kakao_1(new_id): answer = '' #허용되는 case - 문자, 숫자, '.', '_', '-' # 1번 규칙 id = new_id.lower() # 2번 규칙 id = "".join([ch for ch in id if ch.isalnum() or ch == '.' or ch == '-' or ch == '_']) # 3번 규칙 for i, value in enumerate(id): if i > 0 and id[i-1] == '.' and id[i] == '.': continue answer += value # 4번 규칙 i..
-
디스크 컨트롤러Programming/Programmers 문제풀이 2020. 12. 24. 10:52
프로그래머스 사이트에 있는 heap 관련 문제 중에 두번째 문제 문제 설명을 하면, 요청시간부터 총 걸린 시간을 알아내고, 평균이 가장 작게 하는 문제 문제 구분이 heap이어서 생각하다 보니 heap이 필요할까라는 생각을 해서 list로 무식하게 풀기로함 구현 아이디어 [[0,3], [1,9], [2,6]] 이 들어오면 맨 처음걸 무조건 넣고 시작 [[1,9], [2,6]] 중에서 [0,3] 의 끝나는 시간에서 가장 짧은것을 찾아서 그 다음에 시작 같은 시작이 존재한다면 끝나는 시간이 짧은것을 선택하도록 한다. 그렇게 된다면, [0,3], [2,6], [1,9]의 순으로 진행되면 평균이 가장 짧다. def solution(jobs): answer = 0 length = len(jobs) result =..