본문 바로가기
TIL & WIL

[TIL] #41. 231024

by mmm- 2023. 10. 24.

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

  • 알고리즘 문제
  • 자바 종합 문법 복습 (2주차) → 진행중
  • 팀 프로젝트
    • 회의


내일 목표

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

 

발생한 문제와 해결

def solution(arr1, arr2):
    answer = [[]]
        
    for i in range(len(arr1)):
        for j in range(len(arr1[i])):
            answer[i][j] = arr1[i][j] + arr2[i][j]
    
    return answer

이와 같이 코드를 작성했는데 아래와 같은 에러가 발생했다.

IndexError: list assignment index out of range

해당 에러는 빈 인덱스를 지정했을 때 발생하는 것이라고 한다. (https://wantoknowtotellthenstudy2.tistory.com/32)

그래서 해당 블로그(https://velog.io/@sjy5386/Python-2%EC%B0%A8%EC%9B%90-%EB%B0%B0%EC%97%B4-%EC%84%A0%EC%96%B8%ED%95%98%EA%B8%B0)를 참고해 아래와 같이 코드를 수정해주었더니 문제가 해결되었다.

def solution(arr1, arr2):
    answer = [[0 for j in range(len(arr1[i]))] for i in range(len(arr1))]
        
    
    for i in range(len(arr1)):
        for j in range(len(arr1[i])):
            answer[i][j] = arr1[i][j] + arr2[i][j]
    
    
    return answer

 

느낀점

원래는 알고리즘 문제를 금방금방 푸는 편이었는데 며칠 전부터 문제를 푸는 데 시간이 많이 쓰이는 것 같다.

위에서 언급한 코드대로 작성하였더니 문제는 해결되었지만 가독성도 떨어지고 실행시간도 너무 길었다. 다른 사람의 코드를 보니 zip()을 사용한 것을 볼 수 있었다. 나도 처음에는 zip()을 이용해 문제를 풀어보려고 했는데, 결과가 내가 생각한대로 나오지 않아 다른 방법을 선택했던 것이었다. 그리고 내 코드를 보고 너무 지저분한 것 같아서 아래와 같은 형식으로

def sumMatrix(A,B):
    answer = [[A[i][j] + B[i][j] for j in range(len(A[0]))] for i in range(len(A))]

    return answer

코드를 변경하고 싶었는데 실력이 부족해서 못했었다. 그런데 다른 사람의 코드를 보다보니 해당 코드를 보게 되었고, 이렇게 하는거였구나 라는 생각을 했다. 그리고

def sumMatrix(A,B):
    for i in range(len(A)):
        for j in range(len(A[0])):
            A[i][j] += B[i][j]

    return A

이런식으로 작성하게 되면 초기화를 해주지 않아도 되겠구나 생각했다. 잘 하고 있는건지 모르겠다.

그리고 어제 개인과제가 마무리되었고, 오늘부터는 팀 과제가 시작되었다. 팀 과제 코드를 작성하기 앞서, 팀원들과의 회의를 통해 코딩컨벤션, 프로그램 틀 잡기 등 여러 가지 이야기를 나누었다. 팀 과제도 잘 마무리 되었으면 좋겠다!

저녁식사 후, 깃허브 특강을 들었는데 들어는 봤지만 사용해보지 못한 기능과 여러 명령어들에 대해서 알 수 있는 시간이어서 좋았다.

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

[TIL] #43. 231026  (0) 2023.10.27
[TIL] #42. 231025  (0) 2023.10.25
[TIL] #40. 231023  (0) 2023.10.23
[WIL] #6. 231016~231022  (1) 2023.10.22
[TIL] #39. 231022  (1) 2023.10.22