[그리디] 볼링공 고르기
·
알고리즘_코딩테스트/이것이 코딩테스트다
"이것이 코딩테스트다(나동빈 저)"에서 나온 문제에 대한 코드를 다루고 있습니다. 문제에 대한 구체적인 설명과 조건 등은 책을 참고해주시기 바랍니다. 소요시간: 10분 30초 1. 문제 설명 - 친구 A와 B가 볼링공을 고를 때 서로 다른 무게를 고르고자 한다. 주어진 볼링공 중에서 이 둘이 고를 수 있는 경우의 수는 몇 개인가? 2. 접근 방식 - 바로 이전 문제에서 조합을 활용해서 문제를 풀어서 쉽게 접근할 수 있었다. - 조합으로 문제를 고르고, 나온 조합들 중 값이 같은 것들을 빼줌으로써 답을 구했다. - 주어진 조건의 범위가 적어서 일일이 다 찾아도 될 것 같다는 생각을 했다. 3. 코드 from itertools import combinations def bowling(n, m, ls): co..
[그리디] 만들 수 없는 금액
·
알고리즘_코딩테스트/이것이 코딩테스트다
"이것이 코딩테스트다(나동빈 저)"에서 나온 문제에 대한 코드를 다루고 있습니다. 문제에 대한 구체적인 설명과 조건 등은 책을 참고해주시기 바랍니다. 소요시간: 14분 1. 문제 설명 - 다양한 금액들이 주어지고, 해당 금액들을 조합해서 만들 수 없는 금액 중 최소값을 리턴하는 문제 2. 접근 방식 - 처음에는 for문을 이용해볼까 고민을 하다가 인적성 공부를 하다 배운 조합이 생각이 났다. - 조합이 경우 itertools라는 모듈 내에 combinations 함수가 있어 이를 활용하기로 했다. 3. 코드 from itertools import combinations def find_money(x, ls): dp = [False]*sum(ls) answer = 0 idx = sum(ls) for i i..
[그리디] 문자열 뒤집기
·
알고리즘_코딩테스트/이것이 코딩테스트다
"이것이 코딩테스트다(나동빈 저)"에서 나온 문제에 대한 코드를 다루고 있습니다. 문제에 대한 구체적인 설명과 조건 등은 책을 참고해주시기 바랍니다. 소요시간: 20분 1. 문제 설명 - 0과 1로 이루어진 string에서 최소한의 뒤집기 연산을 수행해 모든 string을 0이나 1로 통일시켜라 2. 접근 방식 - for문을 한 번 돌아서 0인 경우와 1인 경우를 골라서 더 짧은 경우를 뒤집어주면 될 거 같다고 생각. 리스트에 인덱스를 기록했다. - 투포인터 알고리즘을 활용해봤다. ----- - 해답 코드의 경우 접근 방법은 나와 비슷했는데, 코드 상으로는 좀 달라져서 해당 코드도 확인해봤다. 3. 코드 - 내 코드 def changeString(x): global zero, one zero = 0 on..
[그리디] 곱하기 혹은 더하기
·
알고리즘_코딩테스트/이것이 코딩테스트다
"이것이 코딩테스트다(나동빈 저)"에서 나온 문제에 대한 코드를 다루고 있습니다. 문제에 대한 구체적인 설명과 조건 등은 책을 참고해주시기 바랍니다. 소요시간: 7분 51초 1. 문제 설명 - 문자열이 주어질 때 +, *연산을 수행해서 최대값을 리턴시켜라 2. 접근 방식 - 0이 아니라면 무조건 곱하기가 훨씬 좋다. (라고 쉽게 생각했는데, 0뿐만 아니라 1일 때도 덧셈이 더 좋다는 것을 간과하고 있었다.) - 문자열의 경우 리스트로 만들고 하나씩 뽑아서 연산을 수행한다. 3. 코드 def mul_add(x): answer = 0 word_ls = list(x) for i in word_ls: now = int(i) if now in (0, 1) or answer == 0 : answer += now e..
[그리드] 모험가 길드
·
알고리즘_코딩테스트/이것이 코딩테스트다
"이것이 코딩테스트다(나동빈 저)"에서 나온 문제에 대한 코드를 다루고 있습니다. 문제에 대한 구체적인 설명과 조건 등은 책을 참고해주시기 바랍니다. 소요시간: 12분 30초 1. 문제 설명 - 모험가 집단에서 공포도에 따라 그룹을 나눌 때 최소로 나눌 수 있는 그룹을 정한다. 2. 접근 방식 - 여행을 떠날 수 있는 최대 공포자의 수 공포도가 최대인 경우를 정하고(내림차순)으로 그 밑으로 공포도가 같거나 최대인 애들을 넣었었다. - 주어진 테스트 코스는 패스했지만, 후에 해답을 보니 나와는 다르게 '오름차순'으로 했다. 3. 코드 - 초기 코드_(내림차순 구현) from collections import deque def make_group(n, input_ls): q = deque(sorted(inp..
40. 키패드 누르기
·
알고리즘_코딩테스트/프로그래머스_Level1
0. 문제 링크) https://programmers.co.kr/learn/courses/30/lessons/67256 코딩테스트 연습 - 키패드 누르기 [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL" programmers.co.kr 1. 알고리즘 계획 각 키패드의 규칙을 확인 (3으로 나눴을 때 나머지가 동일하게 나타난다.) 그 규칙을 토대로 배열의 행과 열 위치를 설정한다. Left규칙과 Right규칙을 설정한다. 만약 Mid에 위치한 번호를 누를 경우 '왼손과..