내일배움캠프 AI/페어프로그래밍
[페어프로그래밍] 230421 인덱스바꾸기 + 배열의 유사도 | 컴프리헨션, python 다중할당
생각하는 코댕이
2023. 4. 21. 16:05
728x90
페어프로그래밍 결과 코드
# 인덱스 바꾸기
# 페어프로그래밍으로 제작한 코드
# 페어프로그래밍 1번 - 리스트컴프리헨션사용
def solution(my_string, num1, num2):
#문자열을 리스트로 변환한다.
list_=[s for s in my_string]
#리스트에서 num1과 num2 요소를 분리해낸다.
#두 요소를 교환해준다.
list_[num1],list_[num2] =list_[num2],list_[num1] # 파이썬의 특징! 변수의 값을 서로 바꿀 때 사용!
#분리되었던 list를 다시 str으로 바꿔준다. → join 사용
answer = ''.join(list_)
return answer
# 페어프로그래밍 2번 - list클래스사용
def solution(my_string, num1, num2):
#문자열을 리스트로 변환한다.
list_ = list(my_string)
#리스트에서 num1과 num2 요소를 분리해낸다.
#두 요소를 교환해준다.
list_[num1],list_[num2] =list_[num2],list_[num1] # 파이썬의 특징! 변수의 값을 서로 바꿀 때 사용!
#분리되었던 list를 다시 str으로 바꿔준다. → join 사용
answer = ''.join(list_)
return answer
# 배열의 유사도
# 페어프로그래밍으로 제작한 코드
# 페어프로그래밍 1번 - for문과 if문 사용
def solution(s1, s2):
#두 배열에서 일치하는 원소를 판별한다.
#두 배열에서 일치하는 원소를 카운트한다.
count=0
for s_1 in s1: #원소로 분리
if s_1 in s2: #원소가 겹치는지 판다
count += 1 #원소가 겹칠경우 카운트하기
answer = count
return answer
# 페어프로그래밍 1번의 리팩토링 - 컴프리헨션
def solution(s1, s2):
return sum(1 if s_1 in s2 else 0 for s_1 in s1)
#페어프로그래밍 2번 - set(집합)의 교집합을 활용한 풀이
def solution(s1, s2):
return len(set(s1)&set(s2))
시사점 or 새로이 알게된 점
# 다중 할당(multiple assignment)
파이썬에서 두 변수의 값을 서로 교환할 때 유용하게 사용할 수 있는데, 아래와 같은 형태로 사용가능하다.
a, b = b, a
위의 코드는 a와 b라는 두 변수의 값을 서로 교환하는 코드로, 임시 변수 없이 두 변수의 값을 교환할 수 있다.
이는 파이썬에서만 가능한 특징으로, 코드를 더 간결하고 가독성있게 작성할 수 있도록 도와준다.
위는 파이썬의 "인터프리터식, 객체지향적, 동적 타이핑 대화형 언어" 라는 특징 중 "인터프리터" 에 의한 특징이다.
인터프리터는 실행 시마다 소스 코드를 한 줄씩 기계어로 번역하는 방식을 말한다.
그렇기에 다중할당 a, b = b, a 는 한 줄에서 작성된 것으로, 파이썬이 번역할 때에 동시에 할당을 하게 되어 가능한 형태가 된 것이다.
728x90