목록2021/04 (22)
규도자 개발 블로그
[프로그래머스/Level2/파이썬3(python3)] n진수 게임 문제 튜브가 활동하는 코딩 동아리에서는 전통적으로 해오는 게임이 있다. 이 게임은 여러 사람이 둥글게 앉아서 숫자를 하나씩 차례대로 말하는 게임인데, 규칙은 다음과 같다. 숫자를 0부터 시작해서 차례대로 말한다. 첫 번째 사람은 0, 두 번째 사람은 1, … 열 번째 사람은 9를 말한다. 10 이상의 숫자부터는 한 자리씩 끊어서 말한다. 즉 열한 번째 사람은 10의 첫 자리인 1, 열두 번째 사람은 둘째 자리인 0을 말한다. 이렇게 게임을 진행할 경우, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 0, 1, 1, 1, 2, 1, 3, 1, 4, … 순으로 숫자를 말하면 된다. 한편 코딩 동아리 일원들은 컴퓨터를 다루는 사람답..
그렇다. 임내력... 인터넷에 쳐도 안나온다. 왜냐. 내가 만든말이니까 ㅋㅋㅋ 의미는 간단하다. 어떤 임계상태를 견디는 힘. 어떻게 보면 그냥 인내력이랑 똑같은 게 아닌가 하겠지만 약간 다른게 내 주변의 사람을 보고 이 개념이 떠올랐기 때문이다. 그사람은 인내력이 좋다. 맨날 힘들다 뭐한다 혼났다 하면서 회사를 오랫동안 잘 다닌다. 인내력이 참으로 대단하다고 할 수 있다. 하지만 그사람이 못견딘 게 있었다. 그게 바로 어떤 임계상태였고 그래서 내가 인내력과 임내력을 구분하게 된 계기가 됐다. 그사람은 이직을 준비하고 있었고 업계에서 화제가 될만큼 엄청나게 좋은 조건이 걸린 자리였다. 그사람도 역시 거기에 지원을 했고 열심히 준비하여 최종까지 갔다. 그때 그사람의 임내력에 한계가 온 것 같았다. 말만하면 ..
알고리즘 문제들을 풀다가 문득 이런 생각이 들었다. 알고리즘 문제는 오히려 현실세계에서의 개발에 비하면 자비로운 편이라는 것을. 개발자들이 현실에서 하는 일은 알고리즘 문제를 푸는 것보다 훨씬 복잡하다. 구조와 운영에 대해서도 생각해야 하고 그 모든것을 알고리즘과 함께 녹여내야 한다. 그리고 가장 크리티컬한 부분. 현실세계에서의 알고리즘은 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가 매개변수로 주어질 때, 모든 사람을 구출하기 위해 필요한 구명보트 개수의 최솟값..
[프로그래머스/Level2/파이썬3(python3)] JadenCase 문자열 만들기 문제 JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요. 제한사항 s는 길이 1 이상인 문자열입니다. s는 알파벳과 공백문자(" ")로 이루어져 있습니다. 첫 문자가 영문이 아닐때에는 이어지는 영문은 소문자로 씁니다. ( 첫번째 입출력 예 참고 ) 입출력 예 sreturn "3people unFollowed me""3people Unfollowed Me""for the last week""For The Last Week" 풀이 def solution(s): ans..
[프로그래머스/Level2/파이썬3(python3)] 이진 변환 반복하기 문제 0과 1로 이루어진 어떤 문자열 x에 대한 이진 변환을 다음과 같이 정의합니다. x의 모든 0을 제거합니다. x의 길이를 c라고 하면, x를 "c를 2진법으로 표현한 문자열"로 바꿉니다. 예를 들어, x = "0111010"이라면, x에 이진 변환을 가하면 x = "0111010" -> "1111" -> "100" 이 됩니다. 0과 1로 이루어진 문자열 s가 매개변수로 주어집니다. s가 "1"이 될 때까지 계속해서 s에 이진 변환을 가했을 때, 이진 변환의 횟수와 변환 과정에서 제거된 모든 0의 개수를 각각 배열에 담아 return 하도록 solution 함수를 완성해주세요. 제한사항 s의 길이는 1 이상 150,000 이하입..