Notice
Recent Posts
Recent Comments
Link
BugDIARY
Programmers-배열 중복 제거, 약수 구하기 본문
# 배열 중복 제거하기
def solution(arr):
answer = []
# 배열 길이 만큼 for문을 실행
for n in range(len(arr)-1):
# 배열의 앞 뒤를 비교하여 앞뒤가 다를 경우 answer배열에 값을 저장
if arr[n] != arr[n+1]:
answer.append(arr[n])
# for문을 종료 후 arr의 제일 마지막 값도 append해줌.
# 이유는 서로 앞 뒤를 비교할 경우 제일 마지막 값은 서로 다르더라도 저장되지 않기 때문.
# 목적은 중복 제거이기 때문에, (1, 1, 2, 2)의 경우 마지막의 2, 2를 비교했을 때 2라는 값을 추가해야 하는데
# 위의 if문 대로라면 앞의 값이 뒤에 값과 같아 저장되지 않기 때문에(2 != 2 가 False이기 때문에) 제일 마지막 값을 append해주는 것.
answer.append(arr[len(arr)-1])
return answer
# 약수구하기
def solution(left, right):
answer = 0
# for문을 이용해 left(시작값)부터 right+1(마지막 값)까지의 약수를 구한다.
for number in range(left, right+1):
# 짝수, 홀수에 대한 판단을 하기 위해 cnt를 이용해 약수를 count한다.
cnt = 0
# 약수를 구하기 위한 for문. 1에서 주어진 값 까지 %연산자를 이용해 연산하며 0인 경우 약수이므로 cnt를 +1해준다.
for n in range(1, number+1):
if number % n == 0:
cnt += 1
# cnt를 2로 나누었을 때 나머지가 0이라면 짝수이므로 number숫자를 answer에 합한다.
if cnt % 2 == 0:
answer += number
# cnt를 2로 나누었을 때 나머지가 1이라면 홀수이므로 number숫자를 answer에 뺀다.
else:
answer -= number
return answer
'IT > CodingTest' 카테고리의 다른 글
Programmers-숫자 문자열과 영단어 (0) | 2021.09.01 |
---|
Comments