목록강한 파이썬 (7)
너무너무 멋져 눈이눈이 부셔
1. 문제 인하은행에는 ATM이 1대밖에 없다. 지금 이 ATM앞에 N명의 사람들이 줄을 서있다. 사람은 1번부터 N번까지 번호가 매겨져 있으며, i번 사람이 돈을 인출하는데 걸리는 시간은 Pi분이다. 사람들이 줄을 서는 순서에 따라서, 돈을 인출하는데 필요한 시간의 합이 달라지게 된다. 예를 들어, 총 5명이 있고, P1 = 3, P2 = 1, P3 = 4, P4 = 3, P5 = 2 인 경우를 생각해보자. [1, 2, 3, 4, 5] 순서로 줄을 선다면, 1번 사람은 3분만에 돈을 뽑을 수 있다. 2번 사람은 1번 사람이 돈을 뽑을 때 까지 기다려야 하기 때문에, 3+1 = 4분이 걸리게 된다. 3번 사람은 1번, 2번 사람이 돈을 뽑을 때까지 기다려야 하기 때문에, 총 3+1+4 = 8분이 필요하게..

프로그래밍: 소프트웨어를 개발하기 위한 과정. 컴퓨터에게 명령하는 적절한 수행절차를 정의하고 이를 프로그래밍 언어로 표현하는 과정, 과정: 컴퓨터에게 시키고 싶은 일을 정한다 컴퓨터가 이해할 수 있도록 수행 절차를 정의해서 표현한다 적절한 프로그래밍 언어를 선택, 언어를 이용해서 절차를 기술 오류 수정(디버깅) 구문오류->문법 x 실행 x 논리오류-> 문법 o 실행 o 결과 x 2진수 16진수 0~ 9 10-> a, 11-> b, 12-> c ...16->10 *작은 문제로 쪼개기 기초 문법 변수 데이터를 저장하기 위해서 사용 동일 변수에 다른 데이터를 할당 가능 추상화. | a = 1000 변수 = 값 a , b = 1000, 2000 | x,y = 10,20 tmp = x x= y y =tmp pri..

딱 절반 아니어도 노상관(탑다운) 전체의 문제를 해결하기 위해서 쪼개서 문제를 해결. Top-down은 가장 큰 문제를 방문 후 작은 문제를 호출 하여 답을 찾는 방식 -최소 크기가 될 때까지 (1개) 계속 나누고, 이걸 정렬되었다고 본다. -동시에 이뤄지는 게 아니라 왼쪽을 다 자르고 오른쪽을 자르는 식으로 진행. 왼쪽 절반/ 오른쪽 절반을 각각 정렬한다. 제일 왼쪽에 있는(정렬되어있음을 전제하므로 왼쪽이 제일 작음) 한쪽이 끝나면 나머지 다 붙여주면 됨. 다 나누고 작은 거 순서대로 다 갖다 붙이자! =>머지 그대로 두면 원하는 값이 안나옴 시간초과 남. (따져야 하는 경우의 수가 너무 많아서 가지치기 필수) # 1. 정렬된 두 배열을 합치는 과정 -> merge() # 2. 정렬된 배열을 반환하는 ..
풀이 1번. 시간초과. 대강 조합을 사용해서 길이가 3인 조합을 찾고 다 더한 다음에 찾아야 하는 M을 반복문을 돌면서 하나씩 줄였다. 답은 잘 나와서 제출했는데 시간초과! 그냥 i번은 한 번 스쳤으면 (조합이니까 중복 된 값 안 씀) 그 다음 값 부터 찾으면 된다. 조합 리스트의 길이가 길다면 재귀나 다른 함수를 써야 하는데, 고작 3이라서 완전탐색으로 반복문 돌리면 된다. # M을 넘지 않으면서 최대한 가깝게 # 완탐으로 풀자. # 3장을 모두 더해보고 혹시 21이 있니? 20이 있니? 19가 있니? 이렇게 물어봐야겠다. # 길이가 3인 조합 맨드는 거 아뉴? # N, M = map(int,input().split()) # card_num = list(map(int,input().split())) #..

def bfs(i,j): queue = [] visited = [[0] * N for _ in range(N)] queue.append((i,j)) visited[i][j] = 1 while queue: ci, cj = queue.pop(0) if len(result) > max_v: max_v = len(result) result_num = result[0] for di,dj in [(-1,0),(1,0),(0,-1),(0,1)]: #상하좌우 ni = ci + di nj = cj + dj # 범위 내, 1큰, 노방문 if 0

함수를 왜 사용할까? 기능을 분해하고 재사용가능하게 만든다.(특정 기능 단위로 분해한다) len([1,2,3]) >>> 3 sum([1,2,3]) >>> 6 -------------------------------------- ->간결하고 이해하기 쉽다! 복잡한 내용을 모르더라도 사용할 수 있도록. 재사용성 가독성, 생산성 내장함수 파이썬에 기본적으로 포함된 함수 외장함수 import로 가져와야하는 함수, 외부 라이브러리에서 제공하는 함수 사용자 정의 함수 직접 사용자가 만드는 함수 함수 특정한 기능을 하는 코드의 조각 input(parameters) -> docsring -> output 기본 구조: 선언과 호출(define & call) 입력 문서화 범위 결과값 def 함수이름 (parameter/있..

특정 상황에 따라 코드를 선택적으로 실행하거나 계속 반복하는 제어가 필요함->제어문 활용 순차,선택,반복 파이썬은 기본적으로 위에서부터 아래로 차례대로 명령을 수행 순서도로 표현가능 코드 스타일 가이드 코드를 어떻게 작성할지 : PEP8, 혹은 회사마다 스타일 가이드를 설정하기도 함 들여쓰기 문장을 구분할 때, 들여쓰기를 사용(SPACE 4번 or 1탭) 한 코드 안에서는 반드시 한 종류의 들여쓰기를 사용! ->혼용금지 탭으로 들여쓰기를 하면 계속 탭을 써야함 조건문 반드시 참 거짓을 판단할 수 있는 조건식과 함께 사용. 조건 표현식 : 조건 표현식을 일반적으로 조건에 따라 값을 정할 때 활용 if는 단독으로 사용이 가능. 조건문 if 조건 == True: 여기 적은 코드가 실행 elif 조건 == Tr..