인프런 커뮤니티 질문&답변

janeeee님의 프로필 이미지
janeeee

작성한 질문수

CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조

동적배열(vector) ★★★

다른 언어를 사용할 경우

작성

·

194

0

안녕하세요.

알고리즘 문제를 파이썬 언어를 사용해서 공부하고있는데,

동적배열 강의에서 말씀해주신 push_back(), pop_back()과 같은 메서드는 C++ 에서만 사용 가능해서

해당 강의는 어디까지만 이해하고 넘어가야할지,

push_back()과 같은 기능을 하는 함수가 파이썬에도 있는지 찾아보며 강의를 들어야하는지..

다른 언어로 준비할 때 어디까지 이해하고 적용해야하는지에 대한 감이 안잡혀(?) 문의 드립니다.

 

답변 1

0

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 ㅎㅎ

push_back()과 같은 기능을 하는 함수가 파이썬에도 있는지 찾아보며 강의를 들어야하는지..

다른 언어로 준비할 때 어디까지 이해하고 적용해야하는지에 대한 감이 안잡혀(?) 문의 드립니다.

>>

python 등 다른 언어를 하나이상을 아신다면 이정도의 C++언어는 쉽게 이해하실 것 같습니다.

다만 이해가 안되신다면

그냥 앞에 집어넣는다 또는 뒤에 집어넣는다 의미만 이해하고 넘어가셔도 되긴하지만... 저한테 질문을 주셔서 이해를 하고 C++를 한번 테스팅하고 넘어가는게 좋을 것 같습니다.

즉, 이정도의 C++언어는 이해 + python과 대응해서 공부하시는게 좋을 것 같습니다.

예를 들어 다음의 코드는.

#include <bits/stdc++.h>
using namespace std; 
list<int> a; 
void print(list <int> a){
    for(auto it : a) cout << it << " ";
    cout << '\n'; 
}
int main(){ 
    for(int i = 1; i <= 3; i++)a.push_back(i);
    for(int i = 1; i <= 3; i++)a.push_front(i); 

    auto it = a.begin(); it++; 
    a.insert(it, 1000);
    print(a); 

    it = a.begin(); it++; 
    a.erase(it);
    print(a); 
    
    a.pop_front();
    a.pop_back(); 
    print(a);

    cout << a.front() << " : " << a.back() << '\n';  
    a.clear();
    return 0;
}
def print_list(a):
    for item in a:
        print(item, end=" ")
    print()

def main():
    a = []

    # C++의 push_back에 해당하는 파이썬 코드
    for i in range(1, 4):
        a.append(i)

    # C++의 push_front에 해당하는 파이썬 코드
    for i in range(1, 4):
        a.insert(0, i)

    # 특정 위치에 요소 삽입
    a.insert(1, 1000)
    print_list(a)

    # 특정 위치의 요소 제거
    del a[1]
    print_list(a)

    # 맨 앞과 맨 뒤의 요소 제거
    a.pop(0)
    a.pop()
    print_list(a)

    # 리스트의 맨 앞과 맨 뒤의 요소 출력
    print(a[0], ":", a[-1])

    # 리스트 비우기
    a.clear()

if __name__ == "__main__":
    main()

다음 처럼 python 코드로 나타낼 수 있습니다.

또한 대응을 한다면 다음과 같습니다. 이부분 참고해서 공부하시면 될 것 같습니다.

  • push_front = insert

  • erase = del

  • clear = clear

  • pop_back = pop()

  • pop_front = pop(0)


그리고 수강생님 말씀을 좀 생각해봤는데요.

python을 배웠어도 어려워할 수 있을 것 같아서

추후 C++ 이외에 다른 언어로도 포팅 -> 제공해서 쉽게 공부할 수 있도록 교안에 추가하도록 하겠습니다.


또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.


janeeee님의 프로필 이미지
janeeee
질문자

이렇게나 빠른 피드백 너무 감사드립니다.

잘 이해했습니다 ㅎㅎ 반영해서 공부해야겠네요.

감사드려요!

janeeee님의 프로필 이미지
janeeee

작성한 질문수

질문하기