본문 바로가기

Coding Test

(56)
[PRO/프로그래머스] DFS/BFS 여행경로 파이썬 DAY 2022.03.25 삼일동안 끙끙 거리다가 결국 답을 봤지만 안봤으면 못풀었을 것 같음.. dfs를 너무 재귀로만 풀려는 생각이 크다..dfs에 스택이용이랑 while문도 익혀야겠다. 프로그래머스 DFS/BFS 여행경로 풀이 DFS와 BFS모두 가능하고, DFS가 더 풀기 쉽다. DFS풀이 ) ICN을 변수로 넣고 dfs문에서 원래는 스택으로 쌓고, tem=stack[-1]으로 확인한 후 딕셔너리에 다음 경로가 있으면 스택에서 다음 경로 append하고, 다음 경로가 없으면 answer.append하기!! ->이후 return answer하기 전에 answer를 reverse해서 return하기!! **내가 본 답안이 스택으로 append랑 pop하는 답안이라, 나는 재귀함수를 활용했다. BFS풀..
[PRO/프로그래머스] DFS/BFS 단어변환 파이썬 DAY 2022.03.24 프로그래머스 단어변환 풀이 처음에 정규표현식으로 풀어야하나 싶어서 한참을 정규표현식익히려고 서치했지만 정규표현식이 아니어도 풀 수 있음! 나는 BFS이용! start단어를 큐에 넣고, popleft한 큐의 단어와 모든 단어집합 비교(이중for문으로 단어 하나하나 글자 비교까지)->한글자만 다른 단어라면 다음 큐에 append( 단어와 함께 cnt+1값도 append) 프로그래머스 단어변환 코드
[BOJ/백준] 2579번 계단 오르기 파이썬 DAY 2022.03.24 짧은 코드와 그렇지 못한 정답률(34%..) 실버3이라고 만만하게 봤다가 몇시간을 잡힌건지!! 사람들 똑똑하네.. 백준 2579번 계단오르기 풀이 두가지 경우 중 큰 값을 dp[i]에 저장해야 한다. 현재 계단을 i라고 생각할때 이전 계단을 밟을 경우/안 밟을 경우가 있다. 전전전계단(i-3) 전전계단(i-2) 이전계단(i-1) 현재 계단(i) ? 알수없음 O X O 밟음 O X O O 밟음 이전계단은 안 밟는다면 현재 계단의 data[i]값과 + 전전계단(i-2,가장 최근밟은)의 dp[i-2]의 합 이전계단을 밟는다면 현재계단과 이전계단의 data[i]+data[i-1]과 + 전전전계단(i-3)의 dp[i-3]의 합 백준 2579번 계단오르기 코드
[BOJ/백준] 11052번 카드 구매하기 파이썬 DAY 2022.03.23 백준 11052번 카드 구매하기 풀이 n을 dp로 놓고 (dp 0~n+1까지 리스트) dp[n]개의 카드 구매할때 최대값을 dp에 저장 백준 11052번 카드 구매하기 코드
[PRO/프로그래머스] 해시 전화번호목록 파이썬 DAY 2022.03.23 프로그래머스 해시 전화번호목록 풀이 풀이방법이 3개나 있다. 1. sort후 문자열1.startswith(문자열2) 2. 이중 for문 그대로 사용하고 if문에 hash_ph으로 탐색하기. 3. 이중 for문 startswith으로 서로 접두어확인 프로그래머스 해시 전화번호목록 코드(1번풀이) 효율성FAIL했을때 코드(2번풀이에 해시 미사용) ->이렇게 풀면 효율성FAIL이라 해쉬를 사용해야 한다. hash_ph={}하고 값을 다 넣어준 후 이중 for문에서 if 문자열 in hash_ph and 문자열 !=phone_num : 해시 사용 정석 풀이(2번 풀이) 이중 for문 사용, 서로 startswith비교하기(3번 풀이)
[PRO/프로그래머스] 완전탐색 카펫 파이썬 DAY 2022.03.23 프로그래머스 완전탐색 카펫 풀이 약수를 구하는게 keypoint total(B+Y)의 약수를 구하고, 약수를 큰 수 부터(가로>세로니까) 하나씩 본다음 -> 가로*2 +세로*2 -4==brown이면 answer로 변경 프로그래머스 완전탐색 카펫 코드
Itertools 함수의 순열조합 정리 import itertools (또는 from itertools import product/permutations/combinations) data=['a', 'b', 'c', 'd'] 하나일 때 1. 순열: N개중 R개 선택하되, 순서존재 (permutations) 순서O 중복X **(1,2)와 (2,1)은 별개의 배열로 처리함 **순열 이므로 배열의 경우의 수까지 계산 2. 조합: N개중 R개 선택하기 (combinations) 순서X 중복X **(1,2)와 (2,1)은 같은 것으로 처리함==먼저 나온(1,2)하나만! **조합이므로 가능한 모든 경우의 수만 계산 +) 중복조합뽑기는 combinations_with_replacement(리스트, r) data1= ['a', 'b','c'] data2=[..
[PRO/프로그래머스] 완전탐색 소수찾기 파이썬 DAY 2022.03.23 프로그래머스 완전탐색 소수찾기 풀이 1. 소수판별함수 만들기 2. 기존solution함수에서 itertools의 permutations함수 이용하여 조합 형성->형성된 조합 숫자가 1번 소수판별함수의 소수이면 ans리스트에 append 3. ans리스트에 중복된 값 제거를 위해 set이용 프로그래머스 완전탐색 소수찾기 코드 itertools개념 따로 정리해서 포스팅할예정