Total
시저암호(알파벳, 리스트 인덱스 밀기)
from string import ascii_uppercase, ascii_lowercase a = ascii_uppercase b = ascii_lowercase def solution(s, n): answer='' for x in s: if x.islower(): answer+=b[(b.index(x)+n)%len(b)] elif x.isupper(): answer+=a[(a.index(x)+n)%len(a)] else: answer += x return answer
테이블 해시 함수 (정렬)
def solution(data, col, row_begin, row_end): answer = 0 data.sort(key=lambda x: (x[col-1], -x[0])) for i in range(row_begin, row_end+1): result = 0 for x in data[i-1]: result += x % i answer ^= result return answer
H-index
def solution(citations): answer = 0 n=len(citations) citations.sort() for i in range(n): if citations[i]>=n-i: answer += 1 return answer
달리기 경주 (딕셔너리)
def solution(players, callings): callings p={x:i+1 for i,x in enumerate(players)} r={i+1:x for i,x in enumerate(players)} for x in callings: pre=r[p[x]-1] p[x]-=1 rank=p[x] p[pre]+=1 r[rank]=x r[rank+1]=pre return list(r.values())
둘만의 암호 (알파벳, 리스트 인덱스 밀기)
# 알파벳 리스트 from string import ascii_lowercase def solution(s, skip, index): answer = '' a=ascii_lowercase for x in skip: a=a.replace(x,'') for i in s: tmp=a[(a.index(i)+index) % len(a)] answer+=tmp return answer
푸드 파이트 대회 (문자열 뒤집기)
def solution(food): answer = '' for i in range(len(food)): for j in range(1,food[i]//2+1): answer+=str(i) answer+='0'+answer[::-1] return answer
추억 점수 (zip)
def solution(name, yearning, photo): answer = [] d = {i:j for i,j in zip(name,yearning)} for x in photo: score=0 for i in x: if i in d: score+=d[i] answer.append(score) return answer
전화번호 목록 (리스트 값 비교, zip함수, 2중 for문 시간초과)
def solution(phone_book): phone_book.sort() for p1, p2 in zip(phone_book, phone_book[1:]): if p2.startswith(p1): return False return True
인사고과 (정렬, 튜플값 비교)
scores[0]은 완호의 점수 각 사원의 근무 태도 점수와 동료 평가 점수 목록 scores이 주어졌을 때, 완호의 석차를 return def solution(scores): answer = 0 w=scores[0] scores.sort(key=lambda x:(-x[0], x[1])) maxval=0 for i,j in scores: if w[0]
3 x n 타일링 (DP)
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 분석 (현재 경우의 수) = (이전 단계의 경우의 수) x (n = 2일 때 경우의 수) + 2 dp[n] = dp[n-2]*dp[2] + dp[n-4]*2 + dp[n-6]*2 + ... dp[2]*2 + 2 = dp[n-2]*3 + dp[n-4]*2 + dp[n-6]*2 + ... dp[2]*2 + 2 2를 더하는 이유 : 아래와 같은 새로운 모양의 타일이 생김 풀이 def solution(n): mod = 1000000007 dp=[0]*(n+1) dp[2]=3 if n>2: dp[4] = 11 for ..