본문 바로가기
TIL & WIL

[TIL] #43. 231026

by mmm- 2023. 10. 27.

어제 목표 & 오늘 완료한 한 일 

  • 알고리즘 문제
  • 자바 종합 문법 복습 (3주차)
  • 팀 프로젝트


내일 목표

  • 알고리즘 문제
  • 자바 종합 문법 복습 (3주차)
  • 팀 프로젝트

 

발생한 문제와 해결

처음에는 알고리즘 문제를 아래와 같이 풀려고 했었다.

def solution(arr):
    answer = arr
    
    for i in range(len(answer)-1):
        if answer[i] == answer[i+1]:
            del answer[i]
    return answer

그런데 위와 같이 작성했더니

 IndexError: list index out of range

에러가 발생했다. 그 이유는 바로 answer가 삭제되면 answer의 길이가 달라져서 그런 것이었다. 그래서 만약 길이가 10이면 9부터 0까지 반복할 수 있도록 코드를 변경하였다. 그랬더니 문제는 해결되었지만, 채점 결과 효율성테스트에서 시간초과가 나왔다. 그래서 처음과 비슷한 방법을 선택해서 풀고자 했다. 그런데 이전처럼 미리 담아놓고 삭제를 하는 방법이 아닌, 조건을 만족하면 answer에 값을 추가하는 방식으로 문제를 해결했다. 그 과정에서, 마지막 값이 담기지 않아 오답처리가 되었다. len(arr)만큼 반복문을 돌릴 때 arr의 i+1에 접근하고자 하면 존재하지 않는 인덱스에 접근하려고 하는 것이기 때문에 오류가 발생하게 된다. 그래서 len(arr)-1만큼 for문을 돌리게 된 것인데, 그렇게 되면 앞에서 말한 것과 같이 마지막 값이 담기지 않는다. 이러한 문제를 해결하기 위해 for문이 종료된 후, arr의 마지막 값을 추가해주어 문제를 해결하였다.

 

느낀점

지금 우리 팀은 MVC 패턴을 기반으로 코드를 작성하고 있는데, 하다보니 모델과 컨트롤러로 나누느 기준이 좀 헷갈려서 검색을 하던 중, 가이드라인이 작성된 것을 보았다. (https://messycode.tistory.com/60)
이전에는 기능 구현을 우선으로 하고 코드를 정리하였는데(내 기준...) 이번에는 코드에 좀 더 신경을 쓰다보니 더 어렵게 느껴지는 것 같다. 그렇지만 이 과정에서 배울 게 많을 것 같다. 이후에 개인과제 코드를 한 번 더 다듬어야겠다는 생각이 들었다.

'TIL & WIL' 카테고리의 다른 글

[TIL] #45. 231028  (0) 2023.10.28
[TIL] #44. 231027  (0) 2023.10.27
[TIL] #42. 231025  (0) 2023.10.25
[TIL] #41. 231024  (1) 2023.10.24
[TIL] #40. 231023  (0) 2023.10.23