목록CS/Algorithm & Data Structure (23)
예지의 테크 로그포스 (Yeji's Tech Log Force)
주사위 숫자가 몇 번 '중복'등장하는 지에 따라 return값이 달라진다. python에서 중복이라고 하면 set함수와 dictionary가 떠오른다. 1. Set 처음에는 set함수를 떠올렸다. set을 통해 중복을 없앤 집합의 요소가 몇 개인지 판단하여, 집합을 배열로 변환해 값을 계산 후 return하려고 했다. 하지만 그렇게 할 경우 중복이 3개여도 집합에 2개가 남고, 예) [4, 1, 4, 4] => {4, 1} 중복이 2개여도 집합에 2개가 남아 예) [4, 4, 1, 1] => {4, 1} 구분이 모호해지는 문제가 있으므로, 다른 어떤 방식으로 또 처리해주긴 번거롭지 않을까 했다. 2. Dictionary 그래서 남은 것의 개수를 보는 것이 아니라, 직접 중복 횟수를 세어주기로 했다. 그를..
책 이름별로 몇 권을 팔았는지 표시해야한다. 따라서 dictionary를 사용해서 key: 책 이름, value: 판매권수 기록하면 좋을 것 같았다. 1. 변수에 기록 d = dict() max = 0 maxBook = "" for _ in range(int(input())): book=input() if book in d: d[book] +=1 else: d[book]=1 if d[book]>max: max=d[book] maxBook=book elif d[book]==max: if bookmax: max=v maxBook=k elif v==max: if maxBook>k: maxBook=k print(maxBook)
- 처음에 생각한 풀이 1. 발음 가능한 단어와 완전 일치한 입력단어가 있나? --> 바로 answer에 1을 추가하고 continue. 2. 일치하지는 않는다면 발음 가능한지(가능한 것들로 이뤄졌는지) 체크 --> 발음 가능한 단어를 하나씩 꺼내어 입력단어에 포함되었는지 확인, 있다면 1회 제거(문자열에서 최대 1번만 등장한다는 조건 때문) replace사용 2-2. 한 입력단어에 대해 모든 '발음가능단어'를 포함 확인&제거 했을 때, 문자열이 비어서 ' ' 이면 발음 가능한 단어이므로 answer에 1을 추가 able = {"aya", "ye", "woo", "ma"} def solution(babbling): answer = 0 for word in babbling: if word in able: ..
재귀로 풀 수도 있겠지만 시간초과가 날 가능성으로 인해 DP 활용 1. Bottom-Up n = int(input()) dp = [0]*(n+1) dp[1]=1 for i in range(2, n+1): dp[i] = dp[i-1]+dp[i-2] print(dp[n]) 2. Top-Down n = int(input()) DP = [0]*(n+1) DP[0] = 0 DP[1] = 1 def fib(num): if num==0 or num==1: return DP[num] elif DP[num]==0: DP[num]=fib(num-1)+fib(num-2) return DP[num] print(fib(n))