코테 준비/문자열, 내장함수
-
[백준] LCS(최장 공통 부분 수열)코테 준비/문자열, 내장함수 2024. 7. 15. 22:21
핵심 알고리즘(dp)이중 for 문으로 모든 문자열을 비교하면서 first[i]==second[j] 이면 dp[i-1][j-1]+1→ 두 문자열에서 같은 문자가 추가 됐으므로 (이전 최장 공통 부분 수열)+1 first[i]!=second[j] 이면 max(dp[i-1][j],dp[i][j-1])→ 이전의 최대 공통 부분 수열 유지 first=input()second=input()dp=[[0]*(len(second)+1) for _ in range(len(first)+1)]for i in range(1,len(first)+1): for j in range(1,len(second)+1): if first[i-1]==second[j-1]: dp[i][j]=dp[i-1][..
-
2018 KAKAO BLIND RECRUITMENT [3차] 파일명 정렬 feat. 정규표현식코테 준비/문자열, 내장함수 2024. 4. 19. 11:02
정규표현식을 잘 알고 있으면 쉽게 풀 수 있는 문제! 문자열을 숫자 기준으로 나누고 1. HEAD 기준으로 사전순 정렬 2. NUMBER 기준으로 오름차순 정렬 해주면 된다! import re def solution(files): def splitfile(file): match = re.match(r"([^\d]+)(\d+)(.*)", file) return match.group(1), int(match.group(2)) answer=sorted(files,key=lambda file: (splitfile(file)[0].lower(),splitfile(file)[1])) return answer
-
[프로그래머스] [3차] n진수 게임코테 준비/문자열, 내장함수 2023. 10. 13. 20:00
# 10진수 -> n진수 변환 함수 def change(num,n): T = "0123456789ABCDEF" q, r = divmod(num, n) return change(q, n) + T[r] if q else T[r] def solution(n, t, m, p): answer = '' result='' i=0 j=0 while len(result)!=t: answer+=change(i,n) if len(answer)>p-1+(m*j): result+=answer[p-1+(m*j)] j+=1 i+=1 return result
-
[백준] 2170. 선긋기코테 준비/문자열, 내장함수 2023. 2. 28. 18:02
인터넷 참고 안하고 감대로 풀었는데 바로 맞아서 깜짝놀람 ㅋㅋ... import sys n=int(sys.stdin.readline()) line=[] for i in range(n): x,y=map(int,sys.stdin.readline().split()) line.append((x,y)) line.sort(key=lambda x:(x[0],x[1])) # sort start=line[0][0] #start end=line[0][1] #end count=0 # 선의 길이 for i in range(1,n): if startend: # 선의 시작이 end보다 크면 count+=end-start # count+=선의 길이 start=line[i][0] # start 수정 end=line[i][1] # e..
-
[프로그래머스] 1차 뉴스 클러스터링 (Counter)코테 준비/문자열, 내장함수 2023. 1. 21. 22:39
Counter(list1).elements(): 입력된 값의 요소를 풀어서 반환 from collections import Counter ex_counter = Counter("I want success") print(list(ex_counter.elements())) >>> ['I', ' ', ' ', 'w', 'a', 'n', 't', 's', 's', 's', 'u', 'c', 'c', 'e'] from collections import Counter def multi(s): #리스트 만들어주는 함수 s=s.lower() #소문자로 통일 multi=[] for i in range(len(s)-1): if s[i:i+2].isalpha()==True: multi.append(s[i:i+2]) #두글자..