본문 바로가기

PYTHON91

프로그래머스 Lv2 멀리 뛰기 (python) 멀리 뛰기 풀이 처음엔 재귀로 했으나, 이번에도 maximum에 걸렸다. dp를 이용했다. 현재 칸의 경우의 수는 1칸 전과 2칸 전의 경우의 수를 합친 것과 같다는 것에 기인했다. 그러니 아래처럼 코드가 나왔따. def solution(n): # n번 칸에 도착할 수 있는 경우의 수는 1칸 전에서의 경우의 수와 2칸 전의 경우의 수를 더한 것. dp = [0,1,2] + [0] * 1998 for i in range(3, n+1): dp[i] = dp[i-1] + dp[i-2] return dp[n] % 1234567 다른 사람 풀이 다들 비슷비슷하게 풀었다. def solution(n): dp = [0]*2002 dp[1], dp[2] = 1, 2 for i in range(3, n+1): dp[i].. 2024. 2. 4.
프로그래머스 Lv2 피보나치 수 (python) 피보나치 수 풀이 처음엔 재귀함수로 시도해 봤으나, 시간도 오래 걸리고, maximum deepth 에러가 생겨서 실패했다. 그래서 while문을 이용해봤고 아래처럼 진행을 했다. 1. F=[0,1,2] 변수를 생성 2. n = 2일 때는 1을 반환시키고 이게 아니라면, while문에 입장 3. i변수를 이용해서 n과 동일해질때의 값을 반환할 수 있게 제약 걸고, while문 내에서는 F.append() 대신 [0], [1], [2]를 계속해서 바꿔주는 방식으로 이용. 이유 append()도 은근히 시간이 걸리는 녀석임 4. while문을 벗어나면 F[2] 즉, n번째가 되는 값을 1234567로 나눈 나머지를 반환. 이때 n번째는 0번째부터 새는 n번째. def solution(n): F = [0, 1.. 2024. 2. 4.
프로그래머스 Lv2 의상 (python) 의상 풀이 처음엔 모든 경우의 수를 구하기 위해, 재귀함수를 이용해 모든 옷을 입을 수 있는 방법을 구하도록 하였다. 방법에는 문제가 없는 것으로 보이나, 시간이 너무 오래 걸리게 되어 실패했다. # 코니는 매일 다른 옷을 조합. 종류별, 1가지 의상만 착용 # 다른 의상이 겹쳐도, 다른 의상이 겹치지 않거나 의상을 추가로 더 착용한 경우에는 서로 다른 방법으로 착용한 것. # 코니는 하루에 최소 한 개의 의상 # 변수 설정 answer = 0 clothes_kind = [] # 옷을 입는 방법을 추가 # puton(clothes_dict, 착용갯수, 착용 의상 인덱스, 입은 의상 리스트) def puton(clothes_dict, i, j, put_cloth): global answer # 입은 의상 .. 2024. 2. 4.
프로그래머스 Lv2 전화번호 목록 (python) 전화번호 목록 풀이 처음방법으로 풀었을 때, 잘 넘어갔지만, 효율성에서 문제가 생겼었다. # 전화번호 부의 한 번호가 다른 번호의 접두어인 경우가 있는지 확인 # 있으면 False, 없으면 True # .startswith()를 활용 def solution(phone_book): phone_book_sort = sorted(phone_book) for i in range(len(phone_book)): for j in range(i+1, len(phone_book)): if phone_book_sort[j].startswith(phone_book_sort[i]): return False return True 그래서 보다 보니 내가 사용하기 위해 phone_book 이미 정렬을 해둔 게 있다. 정렬을 해뒀.. 2024. 2. 3.
프로그래머스 Lv2 N-Queen (python) N-Queen 풀이 재귀함수를 이용해줬다. 사실 예전에 자력으로 풀었었는데, 지금은 어떻게 풀어야하는지 잊어버려서 골골대다가 예전에 풀었던 것을 참고해서 풀었다. 많이 풀고 또 많이 풀고 또 많이 풀어서 예전 보다 더 좋은 실력을 가져야지. 우선 프로그래머스는 함수형으로 문제를 풀어야되기 때문에 solution()밖에 변수를 설정한다. soultion()에서 n을 받아옴과 동시에 global을 이용해서 설정한 변수의 값을 변경한다. n queen을 재귀함수로 사용할 수 있는 함수를 따로 만들어주고, 이 때 맨 처음 만날 조건으로 row == n 즉, 모든 행에 다 퀸을 놓았으면 count +1 해주는 조건을 걸어주고 시작한다. 그 외에는 각 행별로 열을 돌아가며, 퀸을 놓을 수 있는지를 판단, 된다면, .. 2024. 2. 3.
프로그래머스 Lv2 숫자의 표현 (python) 숫자의 표현 풀이 for 문과 while문을 사용했다. 1. 우선 자기자신인 방법이 있으니 answer = 1로 등록 2. for 문으로 1, n//2 까지 확인 하기 n//2 + 1 이후로는 값을 더하게 되면 n을 넘어버리니까 3. while 문에서 sum_v == n이 되면 answer += 1 하고 break 후 다시 for문 돌기 4. for문 완료후 answr 반환 def solution(n): # 자기자신인 방법이 있으니까 answer = 1 # 1~ n//2까지 돌아가며 확인 for i in range(1, n//2+1): sum_v = i j = i+1 while sum_v < n: sum_v += j if sum_v == n: answer += 1 break j += 1 return an.. 2024. 2. 3.