본문 바로가기

파이썬

(20)
[파이썬] (level4) 최고의 집합 문제 접근 방법 조건을 만족하지 않는 경우를 먼저 생각했다. Sum // n을 먼저 해야된다고 생각했다. 위 두 생각을 통해 접근하기로 생각했고, 10분 정도가 걸렸다. 나의 풀이 def bestSet(n, s): if n > s: return [-1] else: element = s // n answer = [element] * n if sum(answer) != s: diff = s - sum(answer) for i in range(1, diff+1): answer[-i] += 1 return answer return answer 우선, n이 sum보다 크다면 배열을 만들 수가 없다. 이 경우에는 return [-1]을 한다. element = s // n # 만약 n=8, S=80이면 몫은 9가 ..
[파이썬] (level4) 땅따먹기 게임 자소서 문제 접근 방법 pre_dup : 이전(previous) 라인의 max값 중복 유무 cur_dup : 현재(current) 라인의 max값 중복 유무 pre_max_idx : 이전 라인의 max값 인덱스 cur_max_idx : 현재 라인의 max값 인덱스 경우의 수를 직접 만들어봐야 한다. 인덱스의 겹침 유무는 나중에 판단해도 된다. max값이 리스트 내에 또 있는지가 중요하다. (즉, 중복 유무) 단, for문의 range는 0이 아니라 1 부터 시작한다고 가정한다. (1) pre_dup (O) cur_dup (O) 5 12 12 3
[파이썬] dict타입을 인덱스로 접근하기 dict를 인덱스로 접근하기 문제 items = {'cabbage' : 5000, 'Daikon' : 2000, 'Lettuce' : 3000} 다음과 같은 상품이 있다. 사용자의 입력 을 받아 해당 상품의 가격 을 출력하고자 한다. 해결방법 for index, (key, elem) in enumerate(items.items()): print(index, key, elem) print("Select Item(1-3) = ") goodsIdx = int(input()) print("Total Price : {} ".format(list(item.values())[goodsIdx-1])) enumerate 함수를 사용한다. item.values를 list로 만들어준다. 2번이 핵심이라고 볼 수 있다. it..
[파이썬] (level4) 숫자의 표현 (level4)숫자의 표현 문제접근법풀이def expressions(num): answer = 1 # 모든 num은 자기 자신을 답으로 가진다. _sum = 0 left = 0 while left != (num // 2 + 1): # left가 도달할 곳은 절반(num//2)면 충분하다. if _sum num: for right in range(left+1, num // 2 + 1 + 1): # right는 left + 1까지 체크 _sum += right # 합이 더 작다면, 계속해서 right..
[파이썬] (level4) 가장 큰 정사각형 찾기 (level4)가장 큰 정사각형 찾기 5중 포문 이용하기 데이터 개수 1452행 * 5열 배열일 때 (즉, 7260)개 일때, 100번 실행 결과의 평균 >>> print("실행시간 : ", time.time()-start_time) 1.1673초 아이디어 처음 풀었을 때는 DP의 개념을 몰랐기 때문에 노가다로 한번 풀어봤다. def findLargestSquare(board): # board의 길이를 측정한다. 다만, 전역변수 max_x와 max_y를 좌표값으로 활용해야 하기 때문에 (실제 길이 - 1)을 한다. max_x = len(board) - 1 max_y = len(board[0]) - 1 max_square = 0 # 정사각형의 최대 넓이 for x in range(0, len(board))..
[파이썬] pyenv, virtualenv 설치 및 가상환경 생성하기 pyenv, virtualenv Pyenv와 Virtualenv 설정하기 OS : Ubuntu 16.04 LTS Mac OS X : 10.11 왜 설치해야 하죠? pyenv는 로컬환경(즉, 나의 컴퓨터)에 다양한 파이썬 버전을 확인할 수 있습니다. 요약을 하면 "쉽게 설치할 수 있다" 라는 것을 강조하고 싶습니다. "엥!? 파이썬만 설치하면 되는거 아냐?" 라고 생각하실 수 있지만, 사실 python에 기반한 수많은 배포판들이 존재합니다. Anaconda : 파이썬 기반의 개방형 데이터 과학에 특화된 플랫폼입니다. Jython : 파이썬으로 자바를 구현한 플랫폼입니다. pypy : 파이썬은 C로 짜였습니다. pypy는 파이썬으로 파이썬을 만들었습니다. 사용해볼 일이 있을까? 라는 생각이 들겠지만 특정 상..
[파이썬] 카카오 블라인드 공채 1번 문제 q1 친구따라서 풀어본 카카오 알고리즘 문제였다. 7문제가 출제되었고 부분 점수는 없었다. 나같은 경우에는 1번 문제, 5번 문제만 손댈 수 있었는데 1번 문제는 완벽하게 맞았다. 겨우 한 문제 맞았지만, 이정도라면 충분히 만족(?)스럽다. 꾸준하게 나아가자. 문제 def solution(n, arr1, arr2): answer = [] return answer 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다. 지도는 한 변의 길이가 n인 정사각형 배열 형태로, 각 칸은 "공백"(" ") 또는 "벽"("#") 두 종류로..
[파이썬] level3 시저암호 (level3)시저암호 문제 어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. A를 3만큼 밀면 D가 되고 z를 1만큼 밀면 a가 됩니다. 공백은 수정하지 않습니다. 보낼 문자열 s와 얼마나 밀지 알려주는 n을 입력받아 암호문을 만드는 ceasar 함수를 완성해 보세요. “a B z”,4를 입력받았다면 “e F d”를 리턴합니다. 나의 접근법 이상하게 쉽게 풀릴 것 같았는데, 하루정도 걸려서 풀었다. 가장 직관적으로 떠오른 생각은 아스키코드(ASCII) 코드를 활용하자는 것이다. 아스키코드가 뭔지 잘 모른다면, 쑥쓰러운 나의 블로그 포스팅 아스키코드와 유니코드의 이해 을 소개한다. 문제를 풀 때 가장 먼저 고려했던 것은 공백을 반영해야 한다는 것..