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

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

개발자 덕구🐾 2022. 10. 22. 17:04
728x90

 

 

1번 . 음식 전문점 

 

상속을 받을 때 

Class PizzaStore(DeliveryStore) :

이런식으로 인터페이스 이름( DeliveryStore)을 매개변수로 준다. 

 

 

클래스 내부의 메서드의 선언부는 해당 인터페이스의 추상 메서드와 동일한 선언부로 선언해준다!!

	def set_order_list(self, order_list):
		for order in order_list:
			self.order_list.append(order)

	def get_total_price(self):
		total_price = 0
		for order in self.order_list:
			for menu in self.menu_list:
				if order == menu.name:
					total_price += menu.price
		return total_price

이렇게!!

 

 

 

 

2번 해밍거리 구하기 

def func_a(string, length):
	padZero = ""
	padSize = length - len(string)
	for i in range(padSize):
		padZero += "0"
	return padZero + string

def solution(binaryA, binaryB):
	max_length = max(len(binaryA), len(binaryB))
	binaryA = func_a(binaryA, max_length)
	binaryB = func_a(binaryB, max_length)

	hamming_distance = 0
	for i in range(max_length):
		if binaryA[i] != binaryB[i]:
			hamming_distance += 1
	return hamming_distance

 

padSize는 긴 거리에서 string의 길이를 빼주면 된다. 

만약 해당 string이 더 작으면 0을 붙이고 해당 string과 동일하면 0을 안붙인다. 

 

if binaryA[i] != binaryB[i] : 일 때 ! 서로 다를 때 hamming_distance를 1증가시킨다. 

 

 

3번 계산기

def solution(expression):
	exp_index = func_b(expression)
	first_num, second_num = func_c(expression,exp_index)
	result = func_a(first_num,second_num,expression[exp_index])
	return result

func_b를 이용해 연산자의 인덱스를 구하고 

func_c를 이용해 연산할 2개의 숫자를 구하고

func_a를 이용해 앞서 구한 2개의 숫자와 연산자를 매개변수로 주어서 result를 반환하도록 한다. 

 

 

 

4번 타임머신

def solution(num):
	answer = ''
	num +=1 
	for i in str(num) :
		if i =='0' : i = '1'
		answer += i
	return answer

1을 더한 후 str로 만든 num을 돌면서 

'0'이라면 1을 넣고 아니면 그냥 넣어서 answer를 만들어 반환한다. 

 

 

여기 for문을 한줄로 만들어서 join으로 묶을 수도 있다. 

def solution(num):
	answer = ''
	num +=1 
	answer = ''.join('1' if i=='0' else i for i in str(num))
	return answer

 

 

 

 

 

5번 소용돌이 [ 달팽이 문제]

def solution(n):
	mp = [[0]*n for _ in range(n)]
	answer = 0
	dir = 0 # 방향 0,1,2,3,0,1,2,3...
	loop = n
	r,c = 0,-1 # 좌표의 초기값 
	dr = [0,1,0,-1]
	dc = [1,0,-1,0]
	num = 0 
	while num < n*n :
    	# 해당 방향으로 쭉 움직이면서 채움 
		for _ in range(loop) :
			r+=dr[dir]
			c+=dc[dir]
			num += 1 
			mp[r][c] = num 
        # 방향을 바꾼다. [0,1,2,3,0,1,2,3...]
		dir = (dir+1)%4 
        # 방향이 홀수일때 숫자가 줄어든다. 
		if dir%2 : loop -=1 
    # 다 구한 후 대각선 수들의 합을 구한다. 
	for i in range(n) :
		answer += mp[i][i]
				
	return answer

첫 좌표가 [0,0]인데 방향은 [0,1]으로 가야하므로 첫 r,c 좌표를 [0,-1]으로 지정하였다.

[0,-1] + [0,1] = [0,0]

 

 

 

 

 

 

 

 

 

참고 : 

https://edu.goorm.io/learn/lecture/17299/cos-pro-1%EA%B8%89-%EA%B8%B0%EC%B6%9C%EB%AC%B8%EC%A0%9C-python

 

COS PRO 1급 기출문제 - Python - 구름EDU

YBMIT에서 시행하는 COS Pro 자격증으로 기출문제를 직접 풀어볼 수 있는 실습 위주의 강좌입니다.

edu.goorm.io

https://www.inflearn.com/course/%ED%8C%8C%EC%9D%B4%EC%8D%AC-cos-%EA%B8%B0%EC%B6%9C%EB%AC%B8%EC%A0%9C/dashboard

 

[무료] [EduAtoZ] Python CosPro 1급 예상문제 풀이(40문제) - 인프런 | 강의

본강의는 CosPro 1급 시험을 준비하는 분을 위한 과정으로 시험 주관사인 (주)와이비엠넷에서 공개한 COS Pro 1급 샘플 문제 풀이 과정입니다., - 강의 소개 | 인프런...

www.inflearn.com

 

반응형