알고리즘 4

(파이썬) [알고리즘 문제 풀이] - 수박수박수박수박수박수? (프로그래머스)

문제 설명 길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다. 풀이 주어진 숫자 n의 길이만큼 문자열 "수박"을 연장 시키면 되는 문제 입니다. 우선, "수박"이라는 문자열을 변수로 지정해둡니다. n 범위의 for 문을 사용하여 "수"와 "박"을 번갈아가면서 빈 문자열에 더 하도록 합였습니다. 문자열 "수박"에서 인덱스 0은 "수"이고 인덱스 1은 "박"입니다. 오직 인덱스 0과 1만 필요함으로 for 문의 인덱스 i에서 2로 나눈 나머지만 나오도록 하였습니다. 어떤 숫자든지 2로 나눈 나머지는 0이나 1만 가능하기 때문에 그렇습니다. 코드 def sol..

(파이썬) [알고리즘 문제 풀이] - 야근 지수 (프로그래머스)

문제 설명 회사원 Demi는 가끔은 야근을 하는데요, 야근을 하면 야근 피로도가 쌓입니다. 야근 피로도는 야근을 시작한 시점에서 남은 일의 작업량을 제곱하여 더한 값입니다. Demi는 N시간 동안 야근 피로도를 최소화하도록 일할 겁니다. Demi가 1시간 동안 작업량 1만큼을 처리할 수 있다고 할 때, 퇴근까지 남은 N 시간과 각 일에 대한 작업량 works에 대해 야근 피로도를 최소화한 값을 리턴하는 함수 solution을 완성해주세요. 풀이 n은 현재 남아 있는 일할수 있는 시간이며 이 시간을 활용하여 works안에 있는 잔업마다 필요한 시간들을 줄여야 합니다. n 시간을 모두 사용하고도 남은 잔업의 시간들은 각각 제곱한 후에 더 합니다. 그리고 이 값을 야근 피로도 라고 부릅니다. 즉, 야근 피로도..

(파이썬) [알고리즘 문제 풀이] - 콜라츠 추측 (프로그래머스

프로그래머스의 연습 문제중 하나인 콜라츠 추측 입니다. 숫자가 한개 주어지며 규칙은 간단합니다. 주어진 숫자가 짝수라면 2로 나눈다. 주어진 숫자가 홀수라면 3을 곱하고 1을 더한다. 주어진 숫자가 1이 될때까지 반복한다. 단, 500번을 반복해도 1이 되지 않는다면 -1을 리턴한다. 위의 작업을 진행하기 위해서는 loop이 한개 필요합니다. For loop을 써도 되고 While loop을 써도 괜찮아 보이네요. 위 작업을 한번 할때마다 따로 variable을 만들어서 기록 해둡니다. loop은 주어진 숫자가 1이 되거나 작업 횟수가 500번이 넘어가면 멈추는 조건이 있어야 하겠네요. 짝수인지 홀수인지 구분하는건 if statement를 써서 2로 나눴을때 나머지가 0인지 체크 했습니다. def sol..

[코딩테스트 준비] 완전 탐색 ( Brute-Force Search ) - 모의 고사 문제 (Python 풀이)

설명 완전 탐색이라는건 모든 경우의 수를 전부 찾고 그중에서 답을 찾는 알고리즘을 뜻한다. 완전 탐색을 하는 방법에는 여러가지가 있는데 이중에 가장 대표적인게 Brute-Force Search 또는 Brute-Force Attack이라고도 불린다. 단어 그대로 직역을 해보자면 무차별 검색 또는 무차별 공격이라고 나오는데 무슨 말인지 잘 감이 오질 않아서 영어로 된 설명을 좀 찾아보았다. "Trying every single possibility rather than advanced technique to improve efficiency" 나는 이게 좀 더 와 닿았다. 시간 효율 고려하지 말고 가능한 경우의 수는 다 보자는 얘기 였다. 그렇다면 최소한 문제 내에서 시간 제한을 넉넉하게 주지 않을까 하는 ..

Algorithm 2020.12.08