자기계발/그외 준비하는것

[Python]COS_PRO_기출 3회차[1-5]풀이

개발자 덕구🐾 2022. 10. 26. 14:58
728x90

 

 

1번 배열을 회전시켜보세요 

def solution(arrA, arrB):
	if len(arrA) != len(arrB):
		return False
	if func_b(arrA,arrB):
		arrA_temp = func_a(arrA)
		if func_c(arrA_temp, arrB):
			return True
	return False

 

 

 

2번 팰린드롬 문제

def solution(s, k):
	palindromes = []
	length = len(s)
	for start_idx in range(length):
		for cnt in range(1, length - start_idx + 1):
			sub_s = s[start_idx : start_idx + cnt]
			if func_b(sub_s) == True:
				if func_a(palindromes,sub_s) == False:
					palindromes.append(sub_s)

	answer = func_c(palindromes,k)
	return answer

 

 

코드를 안읽어도 대충 눈치만 있으면 풀수있다..!

 

 

 

3번 비숍으로부터 도망쳐

def solution(bishops):
	answer = 0
	dyx = [[1,1],[-1,1],[-1,-1],[1,-1]]
	a = [[0]*9 for _ in range(9)]
	for b in bishops :
		y = ord(b[0])-64
		x = int(b[1])
		a[x][y] = 1 
		for dy,dx in dyx :
			ny,nx = y,x 
			while True :
				ny += dy 
				nx += dx 
				if 1<=ny<=8 and 1<=nx<=8 :
					a[nx][ny] = 1 
				else : break
	
	answer = sum(a,[]).count(0)-17
		
	return answer

 

 

 

4번 중복 문자열 이어붙이기 

 

얼렁뚱땅 내 풀이 ㅎㅎ

def solution(s1, s2):
	answer = 0

	# s1 + s2 
	for i in range(len(s1)) :
		if s2.startswith(s1[i:]) :
			answer = len(s1) + len(s2) - (len(s1)-i)
			break
		
	# s2 + s1 
	for i in range(len(s2)) :
		if s1.startswith(s2[i:]) :
			answer = min(answer,len(s1) + len(s2) - (len(s2)-i) )
			break
	
	return answer

 

 

 

5번 전광판 문구 출력 

def solution(phrases, second):
	phrases = '_'*14 + phrases
	for i in range(second) :
		phrases = phrases[1:] + phrases[0]
	return phrases[:14]

맨 앞에 있던 값을 맨 뒤로 붙여준다. second 동안 !! 

 

 

 

 

 

 

 

반응형