ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • PS 튜토리얼 2부 1편
    ProblemSolving Tutorial/공통 2020. 2. 26. 13:37

    안녕하세요. 오늘은 튜토리얼 2부(1)입니다.

    제가 곰곰히 생각을 해봤는데요.

    일단 튜토리얼은 크게 3부분으로 나누려고 합니다.


    첫번째는 언어와 관련된 부분

    두번째는 problem solving의 문제들이 어떻게 구성되고

    어떤 결과들이 나오는지에 대해서이고

    마지막은 우리가 초반에 어떤 문제들을 풀어나가야 하는가에 대한 부분으로

    나눌까하네요.


    막상 모두 알고나면 정말 아무것도 아닌데

    아무도 알려주지 않고 알아내려해도 힘겹게

    힘겹게 찾아야하는 것들이에요.


    저만 그런건지는 모르겠는데

    아무튼 많은 분들이 힘들어 하시는 것 같았으니

    이렇게 글을 적어놓더라도 쓸모가 없진 않겠죠??^^


    일단은 오늘은 프로그래밍 언어에 관련해서 적어보겠습니다.


    처음 프로그래밍을 시작하시는 분들은 어떤 언어를 선택하느냐도

    되게 갈팡질팡하시고 또 막상 선택하더라도 어떻게

    공부해야하는지에 대해서도 해매게 되더라구요.


    알고리즘을 공부하시는 분들은 C++/Python3/Java가 주류인것 같아요.

    각각의 장단점을 분석해보면


    C++의 장점은 속도가 굉장히 빠르다는거죠. 이론적인 것들은 여기서

    필요가 없어요. 컴파일 언어이고 그래서 빠르다. 뭐 이런건 알 필요도 없죠.


    조금 덧붙이자면 이 포스팅은 문제풀이에 대한 튜토리얼이고 

    프로그래밍언어도 컴퓨터이론도 아니니까요.

    아무것도 모르고 문제풀고 코드만 짤줄알면 다냐?라고 생각하실 수도 있는데...

    코드를 계속 짜다보면 컴퓨터가 작동하는 원리들을 간접적으로 자연스럽게

    문제들을 통해서 그리고 코드를 통해서 익혀나가시게 될거에요.

    많이 풀어보시고 이론들을 공부하면 아하~ 이게 이거구나~ 하실거에요.


    다시 돌아가면 C++의 또 다른 장점은 문제풀이에서 가장 많이

    사용되는 언어이고(적어도 백준에서 만큼은) 정확한 수치는 모르겠지만

    확실히 상위권에는 C++의 개수가 더 많더라구요.

    해외대회에서는 상위권에 python3가 많았던것 같아요.

    아무튼 이게 왜 장점이냐면 구글이나 네이버에서 검색해보시면

    대부분의 블로그에서 문제풀이를 C++로 되어있어요 ^^

    그게 바로 최고의 장점이죠.


    단점은 극악한 난이도??인데 사실 이거는 메모리에 대한 이해 포인터나

    기타등등의 문법들이 문제인데요....사실 이부분은 저도 정확히는

    답변드리기는 어렵지만 파이썬을 주로 쓰는 사람으로써

    그리고 어느정도는 저도 써본 사람의 입장으로 말씀드리면

    포인터나 메모리공간 이런것들도 크게 중요하지 않아요.


    변수가 있고 이 변수를 어디에서 접근할 수 있고 없고 뭐 이정도

    그리고 루프구문 / while / if 구문 ,함수선언과 사용, 그리고 배열과 변수 .

    이정도만 알면 될것 같은데.....


    파이썬을 쓰면서 클레스도 써보고 해봤는데

    그건 그냥 억지로 써봤던 경험이고 일반적으로는

    배열이나 리스트로 해결이 되거든요.


    다음은 파이썬입니다! 파이썬에는 크게 4가지로 나뉘고 있어요.

    python / python3 / pypy / pypy3

    제가 정확히는 잘모르는데 python류와 pypy류의 차이점은

    pypy가 더 빠르다는거에요ㅎㅎ 조금만 더 자세히 설명하면

    pypy에는 파이썬 코드를 기계어나 다른 저급언어로 치환해준다는데

    이게 속도를 향상시켜준다네요. 다시 말하지만 다 필요없고!

    pypy는 빠르다! 얼마나? python보다는 빠르지만 그렇다고

    C++에 비빌정도는 아니다 정도! ㅎ


    python과 python3의 차이점은 문법이 조금씩 달라요.

    python은 python2를 의미하는데 이건 이제 python 재단에서

    지원을 안해주니 python3를 사용하시는게 좋아요.


    python이 느린 이유는?? 알필요없다~

    그래도 알아야한다면 간단하게 파이썬은 인터프리터언어고

    C++은 컴파일러 언어라서~라고 간단하게 알고있으시면 되요.


    이런 파이썬의 장점은 뭘까요??

    다들 아실꺼에요. 쉽죠?? 편하죠??

    근데 이게 기존의 다른 언어들과는 형태가 달라서 만약 파이썬으로

    괴리가 있으실꺼에요. 요즘에는 워낙 괴랄한 언어들이 많아서

    파이썬은 뭐 평범해보이네요. 아무튼 프로그래밍의 표준이라는

    C/C++/JAVA류와는 좀 달라서 좀 까다롭기는해요.

    편한만큼 익혀야하는게 조금 있기는 한데

    문제풀이 하다보면 많은 문제를 풀테고 

    거기서 단순히 한번 적고 끝날것도 아니고

    디버깅하고 다른 방법으로 풀어보고하면

    정말 많은 코드를 써내려 나갈텐데 

    처음에 조금 오래걸리긴하지만

    파이썬을 쓴다면 그런 과정이 많이 축약되겠죠??


    그리고 다른 장점이라면 파이썬 많은 레퍼런스가 있다는거에요.

    이게 C++와는 다른게 파이썬의 경우에는 문제풀이를 해놓은

    블로그에서 찾기는 상대적으로 찾기 어려우실거에요.

    하지만! 이게 쉽다고 인식되고 많은 라이브러리들이

    잘 구현되고 배포되어 있어서 일반인들에게 친숙해요.

    그래서 되게 많은 블로그에서 파이썬에 대한 글들을 찾을 수 있어요.

    그리고 기본 내장함수에 대한 설명을 해놓은 사이트들도 많구요.


    그런데 파이썬이 쉽고 접하기 쉽다고 알려져있지만

    저는 왜 그렇게 소문이 난건지 전혀 모르겠네요.

    파이썬 어렵습니다. 제대로 사용하려면.

    물론 절차를 밟아가면서 차근차근 배우면 괜찮지만

    아닌 경우에는 혼란스러운 언어에요.

    그리고 혼란스럽다고 파이썬 특유의 문법을 사용하지

    않는다면 차라리 C++를 하는게 더 나아요^^

    하지만! 단언컨데 편하고 짧고 빠른 코딩측면에서는

    좋습니다!!!!!ㅎㅎㅎㅎㅎㅎㅎㅎ 전 파돌이 입니닷 ㅎ


    단점의 경우에는 파이썬 특유의 문법의 난해함.

    그리고 속도가 느립니다. 그리고 마지막으로 메모리도

    크게 잡아먹습니다. C++에 비해서 입니다~~

    메모리를 잡아먹는것도 파이썬은 메모리에 단순히

    우리가 만든 코드만 올리는게 아니라 인터프리터 프로그램도

    올리게 때문이겠죠?? 몰라도 됩니다. 그냥 느리다~~

    메모리를 많이 잡아먹는다~~~~


    그러면 이런 질문을 하실 수도 있어요. 그러면

    느리리고 메모리를 많이 잡아먹으면 불리한거 아니냐??

    그런 수치도 채점하는데 영향을 주지 않느냐??라고 하실 수 있는데

    채점은 그런 부분을 반영해서 이루어지니 너무 걱정하지 마세요.

    대회의 경우에는 일차적으로 얼마나 문제를 빨리 해결했느냐

    얼마나 틀린 횟수가 적느냐. 얼마나 다양한 언어로 문제를 풀었느냐로

    채점이 이루어지니 주어진 제한만 지키면 되요. 그 주어진 제한은

    언어마다 다르겠죠??


    다만 백준에서 주로 문제를 푸는 저로서는

    파이썬으로 풀때 언어마다 주어지는 제한이

    제대로 설정되지 않는 경우가 있는데 그런 경우에는

    파이썬으로 풀지 못하는 경우가 있어요.

    이런 경우에는 다른 언어로 풀던가 포기를 해야하죠.


    이거는 문제를 선택하는 팁중에 하나인데요.

    일단 문제를 풀기전에 C++에서 맞은 사람이 많은지 먼저 체크하고

    맞은 사람이 많다면 그때 python3에 넘어가서 사람이 없다면

    이건 거의 저런 제한이 잘못 설정된 것들이에요.

    혹은 진짜 파이썬 잘 푸는 사람들이 풀지 않았다는건데

    백준에는 파이썬 하이랭커가 몇 사람이 없어서 그럴 수도 있기는한데

    아무튼 그럴 확률이 높다~~라고 알아두세요.


    자바는 저도 잘 몰라서^^

    대신 현업에서 굉장히 많이 쓰이니 취업할때 유리하겠죠??


    일단 이번 편은 여기까지하겠습니다.

    일단 2부를 여러 편으로 나눠야 겠네요.

    길어도 너무 길다 ㅠㅠ


    다른 장단점이 있다면 댓글로 남겨주세요^^


    마지막으로 백준 사이트에 랭킹을 볼 수 있는 페이지인데요

    보시면 아시겠지만 C++를 푼사람들이 압도적으로 문제를 많이 풀었고

    Python과 Java는 비슷비슷하네요.





Designed by Tistory.