10월 26일
내일 풀어야 하는 알고리즘 문제는 배열이 주어지고 그 배열에 중복되는 값들은 배제하는 문제이다.
이 세가지 방법을 쓰면 점수가 많이 낮게 나온다
https://blockdmask.tistory.com/543
10월 27일
문제를 잘못 이해하고 있었다. 문제에서는 입력 받은 배열에서 연속적으로 나타나는 숫자를 하나만 남기고 전부 제거 한다는 것이였다. 그래서 다시 검색 해서 코드를 풀어본 결과이다.
문제를 잘 읽어보고 차근차근 어떻게 해나가야 할 지 정해서 코드를 짜야 할 것 같다.
너무 급하게 하려고 하다 보니까 문제도 잘못 읽고 쉽게 할 수 있는 코드도 멀리 돌아간 것 같다. 주의!!★
def solution(arr):
result = []
for i in range(len(arr)):
if i == 0:
result.append(arr[i])
# 맨 처음 숫자는 무조건 result 리스트에 담아준다.
elif arr[i] != arr[i-1] :
# 0이 아니면 elif 조건문으로 오기 때문에 1부터 elif에 걸린다.
# 예를 들어서 i가 1이면 arr[1] != arr[0]이면 result에 추가한다.
# 하다 보면 index 3에서 index 2를 비교하면 3으로 같은 값이기 때문에
# elif 조건식에 맞지 않으므로 추가 되지 않는다.
result.append(arr[i])
return result
print(solution([1,1,3,3,0,1,1]))
print(solution([4,4,4,3,3]))
코드 분석
1. 연속되지 않는 숫자를 담은 리스트를 선언 해준다.
2. 반복문을 돌려서 arr의 길이만큼 반복한다.
3. 조건문을 사용해서 맨 처음에 있는 숫자를 result 리스트에 추가(append) 한다.
4. elif 조건문을 사용해서 앞에 있는 숫자와 바로 뒤에 있는 숫자를 비교해서 다르면 result 리스트에 추가(append) 한다.
5. 앞에 있는 숫자와 뒤에 있는 숫자를 비교 했을 때 같으면 else로 넘어간다. (else에서는 코드를 실행 할 필요가 없기 때문에 생략함)
https://programmers.co.kr/learn/courses/30/lessons/12906?language=python3
'항해 전 > 스터디(Python 알고리즘)' 카테고리의 다른 글
로또의 최고 순위와 최저 순위 (0) | 2021.10.29 |
---|---|
3진법 뒤집기 (0) | 2021.10.28 |
소수 만들기 (0) | 2021.10.25 |
완주하지 못한 선수 (0) | 2021.10.24 |
8조 첫번째 스터디 회의 (2) | 2021.10.20 |
댓글