[Python 문제풀이] 10일차
2020. 7. 18. 11:00ㆍ03. Resources/Python
728x90
반응형
Day_10
Intro
Q16. Are Similar?
Two arrays are called similar if one can be obtained from another by swapping at most one pair of elements in one of the arrays.
Given two arrays a and b, check whether they are similar.
제출 코드
def areSimilar(a, b):
if a == b: # 둘이 같으면 참
return True
else: # 다를 때
# 정렬한 값이 같은 경우, 스왑해야하는 갯수를 체크하면 된다
c = sorted(a)
d = sorted(b)
diffCount = 0
# 정렬한 값이 같은 경우
if c == d:
for i in range(len(c)):
if a[i] != b[i]:
diffCount += 1
if diffCount > 2:
return False
return True
# 정렬한 값이 다른 경우
else:
return False
작성 흐름 (제출 코드에도 같은 주석)
# 테스트 케이스
a = [1,2,3]
b = [2,1,3]
if a == b: # 둘이 같으면 참
print("True")
else: # 다를 때
# 정렬한 값이 같은 경우, 스왑해야하는 갯수를 체크하면 된다
c = sorted(a)
d = sorted(b)
diffCount = 0
# 정렬한 값이 같은 경우
if c == d:
# 전체 길이만큼 보면서
for i in range(len(c)):
# 원래 값에서 차이가 있는 갯수를 센다
if a[i] != b[i]:
diffCount += 1
# 차이 값이 2개인 경우 한 번 스왑을 해서 해결할 수 있지만, 그 이상인 경우 한 번으로 해결 불가능
if diffCount > 2:
print("False")
break
print("True")
# 정렬한 값이 다른 경우
else:
print("False")
반응형
'03. Resources > Python' 카테고리의 다른 글
[Python 문제풀이] 12일차 (0) | 2020.07.20 |
---|---|
[Python 문제풀이] 11일차 (0) | 2020.07.19 |
[Python 문제풀이] 9일차 (0) | 2020.07.17 |
[Python 문제풀이] 8일차 (0) | 2020.07.16 |
[Python 문제풀이] 7일차 (0) | 2020.07.15 |