규도자 블로그
알고리즘 문제들을 풀다가 문득 이런 생각이 들었다. 알고리즘 문제는 오히려 현실세계에서의 개발에 비하면 자비로운 편이라는 것을. 개발자들이 현실에서 하는 일은 알고리즘 문제를 푸는 것보다 훨씬 복잡하다. 구조와 운영에 대해서도 생각해야 하고 그 모든것을 알고리즘과 함께 녹여내야 한다. 그리고 가장 크리티컬한 부분. 현실세계에서의 알고리즘은 test case 및 정답이 주어지지 않는다. 자신이 만들어야 한다. 알고리즘 문제풀이 플랫폼에서는 전부 문제와 함께 테스트 케이스, 정답까지 전부 제공해준다. 문제를 제출하면 그게 맞는지 안맞는지조차 검사해준다. 하지만 현실세계에서의 코딩은 그런 게 없다. 자신이 생각해야하고 만들어내서 결과를 도출해내야 한다. 만약에 내가 만든 알고리즘이 충분한 검증 없이 배포되었다..
나는 게임을 좋아한다. 어렸을 때부터 좋아했다. 지금은 게임을 하고 있진 않지만 언젠가 또 재미있는 게임이 나오면 나는 바로 하게 될 것이다. 그정도로 내 인생에 있어서 게임은 당연할 뿐더러 많은 비중을 차지하고 있다. 제일 많이 했을 때는 잠도 자지 않고 38시간 동안 연속으로 한 적도 있었고, 하지 않을 때는 수년동안 단 한번도 하지 않은 때도 있었다. 이렇게 게임을 좋아하면서도 휴지기와 몰입기를 간헐적으로 가지면서 나이를 점차 먹다보니 왜 사람들이 게임에 빠지게 되는지 알 것 같더라. 그래서 그 고찰의 결과를 적어두려 한다. 1. 게임은 노력에 대한 보상이 즉각적이다. 현실과 다르게 게임에서의 노력은 보상으로 바로 귀결된다. 게임에서 스킬을 찍으면 바로 강해지고 물약을 먹으면 바로 체력이 차고 퀘스..
[프로그래머스/Level2/파이썬3(python3)] 최솟값 만들기 문제 길이가 같은 배열 A, B 두개가 있습니다. 각 배열은 자연수로 이루어져 있습니다. 배열 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱합니다. 이러한 과정을 배열의 길이만큼 반복하며, 두 수를 곱한 값을 누적하여 더합니다. 이때 최종적으로 누적된 값이 최소가 되도록 만드는 것이 목표입니다. (단, 각 배열에서 k번째 숫자를 뽑았다면 다음에 k번째 숫자는 다시 뽑을 수 없습니다.) 예를 들어 A = [1, 4, 2] , B = [5, 4, 4] 라면 A에서 첫번째 숫자인 1, B에서 두번째 숫자인 5를 뽑아 곱하여 더합니다. (누적된 값 : 0 + 5(1x5) = 5) A에서 두번째 숫자인 4, B에서 세번째 숫자인 4를 뽑아 ..
[프로그래머스/Level2/파이썬3(python3)] 위장 문제 스파이들은 매일 다른 옷을 조합하여 입어 자신을 위장합니다. 예를 들어 스파이가 가진 옷이 아래와 같고 오늘 스파이가 동그란 안경, 긴 코트, 파란색 티셔츠를 입었다면 다음날은 청바지를 추가로 입거나 동그란 안경 대신 검정 선글라스를 착용하거나 해야 합니다. 종류이름 얼굴동그란 안경, 검정 선글라스상의파란색 티셔츠하의청바지겉옷긴 코트 스파이가 가진 의상들이 담긴 2차원 배열 clothes가 주어질 때 서로 다른 옷의 조합의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 clothes의 각 행은 [의상의 이름, 의상의 종류]로 이루어져 있습니다. 스파이가 가진 의상의 수는 1개 이상 30개 이하입니다. 같은 이름을 가..
파이썬 람다(lmbda)란 람다는 "익명함수"를 의미한다. 그럼 또 의문이 든다. 엥? 익명함수가 뭐냐? 익명함수는 함수는 함수인데 기존처럼 함수명을 명명하지 않고도 쓸 수 있는 함수를 의미한다. 기존 함수가 def sum_ab(a, b): return a + b print(sum_ab(1, 2)) # 3 위와 같이 명명하고 사용하는 것과 달리 람다는 sum_lambda = lambda a, b: a + b print(sum_lambda(1, 2)) # 3 이런식으로 변수에 할당해서 사용할 수도 있다. 근데 보통의 함수도 변수에 담아서 사용할 수 있다. def sum_ab(a, b): return a + b print(sum_ab(1, 2)) # 3 test = sum_ab print(test(1, 2)..
[프로그래머스/Level2/파이썬3(python3)] 구명보트 문제 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 50kg]이고 구명보트의 무게 제한이 100kg이라면 2번째 사람과 4번째 사람은 같이 탈 수 있지만 1번째 사람과 3번째 사람의 무게의 합은 150kg이므로 구명보트의 무게 제한을 초과하여 같이 탈 수 없습니다. 구명보트를 최대한 적게 사용하여 모든 사람을 구출하려고 합니다. 사람들의 몸무게를 담은 배열 people과 구명보트의 무게 제한 limit가 매개변수로 주어질 때, 모든 사람을 구출하기 위해 필요한 구명보트 개수의 최솟값..