05의 개발 계발

[페어프로그래밍] 230421 인덱스바꾸기 + 배열의 유사도 | 컴프리헨션, python 다중할당 본문

내일배움캠프 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