Cohe

코딩 테스트 합격자 되기 - 2주차 본문

개발 이모저모/코딩 테스트 합격자 되기 스터디

코딩 테스트 합격자 되기 - 2주차

코헤0121 2024. 1. 13. 22:22
728x90

05 배열

공부한 내용

  1. 배열 기초
    • 인덱스와 값을 일대일 대응하는 자료구조
    • 선언 방법
    • #1. 일반적인 방법
    • arr = [0, 0, 0, 0, 0, 0] arr = [0] * 6
    • # 2. 생성자를 사용하는 방법
    • arr = list(range(6)) # [0, 1, 2, 3, 4, 5]
    • # 3. 컴프리헨션(comprehension)을 활용하는 방법
    • arr = [0 for _ in range(6)] # [0, 0, 0, 0, 0, 0]
  2. 배열과 차원
    • 배열은 차원과는 무관하게 메모리에 연속 할당됨!
    • 1차원배열 : 간단한 형태
    • 2차원배열 : 1차원 배열 확장 형태
    • # 2차원 배열을 리스트로 표현
    • arr = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
    • # arr[2][3]에 저장된 값을 출력
    • print(arr[2][3]) # 12
    • # arr[2][3]에 저장된 값을 15로 변경
    • arr[2][3] = 15
    • # 변경된 값을 출력
    • print(arr[2][3]) # 15
    • # 크기가 3 * 4인 리스트를 선언하는 예
    • arr = [[i]*4 for i in range(3)] # [[0, 0, 0, 0], [1, 1, 1, 1], [2, 2, 2, 2]]
  3. 배열의 효율성
    • 시간 복잡도 호가인
      • 맨 뒤에 삽입할 경우 : O(1)
      • 맨 앞에 삽입할 경우 : O(N)
      • 중간에 삽입할 경우 : O(N), 현재 삽입한 데이터 뒤에 있는 데이터 개수만큼 미는 연산을 해야 합니다. 밀어야 하는 데이터 개수가 N개라면 시간 복잡도는 O(N)이겠네요.
  4. 자주 활용하는 리스트 기법
    • 리스트에 데이터 추가
      1. append() 메서드 : list.append(4) -> 맨 끝에 데이터 추가
        • 연산자 : my_list = my_list + [4, 5] # [1, 2, 3, 4, 5]
      2. insert() 메서드 : my_list.insert(2, 9999) # [1, 2, 9999, 3, 4, 5]
    • 리스트에 데이터 삭제
      1. pop() 메서드 : popped_element = my_list.pop(2) # 3, 인덱스를 인수로 받아서 삭제함
      2. remove() 메서드 : my_list.remove(2) , 인수로 값은 값이 처음 등장하는 위치의 데이터 삭제
    • 리스트 컴프리헨션
      • squares = [num**2 for num in numbers] # [1, 4, 9, 16, 25], 이런식이다!!

문제

- 너무 바빠서 문제를 풀지 못했다. 다음주 내외로 추가 예정

모의고사

 

  1. 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/42840

2. 문제 풀이

실패율

https://school.programmers.co.kr/learn/courses/30/lessons/42889

방문길이

https://school.programmers.co.kr/learn/courses/30/lessons/49994

 

추가문제

 

 

출처 : https://wikidocs.net/223079