Edu/멘토링 자료

[멘토링] 본인 방금 소프트웨어 특기자 되는 상상함

happykoa 2020. 2. 28. 15:08

서론

미리 말씀드립니다.

이 글은 09.27일에 진행되는 한민고등학교 X 한아름 멘토링에서 사용된 자료이며 필자/발표자의 주관적인 생각이 매우 많이 담겨 있는 글입니다. 따라서, 아 이런 idea를 가지고 살아온 사람이 있다고 생각해주시고 무조건 이 말들이 받아들이지는 마시기 바랍니다.

글 내용은 멘토링 이후, 조금씩 수정하여 재업로드하였습니다.
기존의 글은 아래 링크에 있습니다.

링크: shinkeonkim 깃헙 블로그 post

소개

국민대학교 소프트웨어학부 김신건

  • 2016.03 한민고등학교 입학
  • 2017 한민 학술제(발표 부문) 금상(1위)
  • 2017 한민 학술제(발표 부문) 은상(2위)
  • 2017 제 5회 한국로보컵오픈대회 Soccer Light Weight 부문2위
  • 2017 Robocup 机器人世界杯中国赛华南公开赛 三等奖
  • 2017 제 1회 한국로보컵코딩대회 RescueLine Secondary 부분 Best Research Award
  • 2018 ICT 어워드코리아 이산수학 고등부 장려상
  • 2018 제 3회 국민대학교 알고리즘 대회 장려상
  • 2019.01 한민고등학교 졸업(3기)
  • 2019.02 국민대학교 입학(소프트웨어 특기자 전형)
  • 2019 국민대학교 두리톤 장려상
  • 2019.06.24 ~ 2019.08.19 Grepp 알고리즘 컨텐츠 제작자 (인턴)
  • 2019.09 ~ 2019.11 구로고등학교 융합형 프로그래밍 강좌 강사
  • 2019.12.23 ~ 2020.02.24 Grepp 알고리즘 컨텐츠 제작자 (인턴)

목차

1.소프트웨어 학과
    1-1. 소프트웨어 학과는 뭐하는 학과인가요
    1-2. SW학과, 단지 호기심만으로만 가도 되나요?
    1-3. 특기자 전형
        1-3-1. 자신에게 맞는 전형은 스스로 공부해보세요.
        1-3-2. 특기자 전형
        1-3-3. 저의 이야기 & 특기자 전형 준비

2. 프로그래밍을 해보고 싶다고요?
    2-1. 기초 100제를 풀어보세요.
    2-2. oj 사이트 활용방법

3. 고등학교 알고리즘 대회 및 프로그래밍 대회
    3-1. 뒤늦게 알고리즘에 고여가는 사람의 팁

소프트웨어 학과

소프트웨어 학과는 뭐하는 학과인가요?

제가 재학중인 국민대학교 소프트웨어융합학과의 커리큘럼입니다.

대학교마다 다르겠지만 주로 1,2학년 때는 기초적인 프로그래밍 언어, 알고리즘, 자료 구조 등의 기초 지식을 쌓습니다. 그리고 3,4학년 때는 프로젝트 진행 또는 쌓아둔 기초 지식을 원없이 발휘할 수 있는 심화적인 내용을 다룹니다.

국민대학교의 경우, 1,2학년때는 기초적인 내용들을 배우고 3,4학년 때는 자신이 선택한 트랙에 따라 심화 내용을 공부합니다.

1. 논리적인 사고와 문제 해결 능력, 설계 능력들을 기른 뒤, 이를 프로그래밍으로 해결하는 방법을 배웁니다.

2. 소프트웨어 학과는 컴퓨터를 고치는 학과도, 컴퓨터 사양을 맞추는 학과도, 엑셀-파워포인트 등을 배우는 학과도 아닙니다.

3. "소프트웨어 학과가면 게임같은 거 만드는 거 아냐?" 라는 말은 맞지만 게임'만' 만드는 게 아닙니다. 인공지능, IOT, 게임, 미디어, 임베디드 등등 많은 것을 배우고 실습합니다.

SW학과, 단지 호기심으로만 가도 되나요?

솔직히, 단지 호기심만으로 접근하기에는 어려운 학과이지 않을까 생각합니다.

실제로, 제 친구들 중에 SW 학과에 들어와서 코딩을 접하는 친구들도 있습니다. 하지만 처음에 프로그래밍의 프자도 모르는 자신을 보며 회의감을 가지기도 하고 학과 공부를 포기하기도 합니다.

그래서 저는 아직 고등학생인 여러분에게 한번이라도 프로그래밍 언어라든지, 논리적인 사고를 하는 방법등을 한번씩 공부해보길 바랍니다.

여기까지 설명을 하다보면 이런식으로 나뉘게 됩니다.

프로그래밍 언어 공부하는 것도 재밌고, 논리적으로 생각하는 것도 좋아!

꼭 SW학과 오셔서 자신의 기량을 펼쳐 주세요.

난 프로그래밍 언어 같은 건 모르겠고 뭔가 논리적으로 생각하는 게 좋은데?

프로그래밍 언어를 하나만이라도 공부해보면서 자신의 생각을 표현해보세요. 어느 순간 빠져 있을 겁니다.

난 둘 다 하기 힘들 것 같은 데, SW 학과는 가고 싶어.

SW 학과를 오시고 싶으시다면 언젠가 겪어야 할 일입니다. 화이팅..!
조금씩이라도 자신과의 접점을 만들어보시는 걸 노력해보세요 ㅠ..

아무튼 결론을 내려보겠습니다.

SW학과에 단순 호기심을 오기보다는 자신의 흥미, 능력, 사고 등등 여러가지를 고려해보세요.
그리고 한번 프로그래밍 언어, 알고리즘 등등도 공부해보면서 자신에게 맞는지 확인해보세요.
모든 것을 고려해보고 괜찮을 것 같다면 SW학과, 무조건, 꼭, 오시길 바랍니다.

특기자 전형

자신에게 맞는 전형은 스스로 공부해보세요.

제목이 너무 직설적일 수도 있습니다.
하지만 이 생각은 너무나 저의 뇌리에 박혀있는 생각입니다.

사람마다 가지고 있는 생각, 능력, 스펙, 성적, 상장의 종류, 상장의 수, 학생부의 내용, 내신 뭐 다 다를 수 밖에 없고 자신이 바라보고 있는 대학 또한 다 다릅니다. 근데 "이전에 이런 사람이 이렇게 갔다더라", "이렇게만 하면 어디 대학 갈 수 있어" 와 같은 선배 혹은 부모님, 선생님의 말만 듣고 자신의 생각없이 자신의 미래를 정할 건가요?

직접 가고 싶은 대학교 목록을 정하고 대학교 입학처 사이트 들어가서 입학 전형 목록, 선례, 이전 입학 성적 등등 다 찾아가면서 입학 전형 한번씩 정리해보세요. 그렇게 하다보면 자신에게 맞는 대학교, 목표가 정해지고 그걸 향해 달려가면 됩니다.

특기자 전형

소프트웨어 특기자 전형, 참 말이 많은 전형입니다..

SW 특기자 전형을 꿈꾸는 학우 여러분들을 위하여

(이 분의 글을 보고 저의 생각을 좀더 첨가해봤습니다.)

특기자 전형은 학종의 미묘한 연장선입니다.
특기자 전형은 참 애매합니다. 어떤 대학교는 학생부 종합과 거의 똑같고, 어떤 곳은 완전 다르게 진행되기도 합니다. 예를 들어, 제가 입학한 국민대학교의 소프트웨어 특기자(2019입학기준)의 경우, 1차 전형이 교외 상장 1개로 결정되고 2차 전형의 경우 면접의 비율이 압도적으로 높았습니다.

이렇게 학종과 관련없이 진행되는 학교도 있고 학종과 거의 똑깥이 진행되는 학교가 있기 때문에 미묘하다라는 말을 하게 되었습니다.

따라서 앞서 말했듯이 자신에게 맞는 전형을 찾다보면 특기자 전형을 넣을만 한 곳이 있고, 특기자 전형으로 넣으면 안되는 곳이 있습니다.

(계속 반복해서 말하게 되는 것 같네요.) 그래서 스스로 전형을 공부하고 자신에게 맞는 전형이 특기자 전형이라고 생각하신다면 차근 차근 준비하시면 될 것 같습니다.

저의 이야기 & 특기자 전형 준비

저는 SW특기자 전형(대학마다 이름이 조금씩 다르지만 통일해서 말하겠습니다.)으로 4개 학교에 지원했습니다.(나머지 2장은 학종이었습니다.)

1. 성균관대학교
2. 한양대학교
3. 경희대학교
4. 국민대학교

다른 학교들은 확신이 없었지만 국민대학교는 확신을 가지고 지원을 한 것 같습니다. (제가 지금 국민대학교를 재학 중이어서 그렇게 기억이 왜곡된 걸 수 도 있습니다..ㅋㅋ)

그 이유는 위에서 말했듯이 국민대학교의 입학전형이 저한테 매우 유리했기 때문입니다. 저는 2018년 국민대학교 알고리즘 대회에서 장려상을 받은 상태였고 이 상은 국민대학교 입학 전형에 매애애애애우우우 크게 반영되는 상이었습니다.

일단 그렇게 원서를 다 작성하고 수능을 봤습니다.
수능 80일 전까지 프로그래밍에 빠져있었던지라 수능 점수를 기대는 하지 않았습니다. 그래도 6월 모평 때, 수학을 4등급을 맞으니 멘탈이 나갔습니다. 그리고 다시 모의고사, 수능 공부를 하기 시작했고 수능에서는 수학 2등급을 받았고 다른 과목들도 다 괜찮게 받은 것 같았습니다.

하지만 역시나 역대급으로 HELL을 보여준 국어가 저의 발목을 붙잡았고 정시 원서를 쓸 미련을 바로 버리게 만들었습니다.

그렇게 이틀 뒤, 국민대학교 특기자 면접을 보게 됩니다.(수능 이틀전에 1차 합격을 본 상태였습니다.)

특기자 면접에서는 제가 준비해간 포트폴리오 위주의 면접이었고 여러 질문들을 받았습니다.(면접 후기를 적어논 한글 파일 또는 프린트 참고해주세요!!)

딱 이 면접에서 붙은 것을 확신한 것은 여러 말 중 "국민대학교 와서 이거 연구해봐요""학원 다닌적 있어요?" 였습니다. 그 당시에 확신한 이유는 저는 학원을 다닌 적도 없으며 스스로 공부했었고 제가 하고자 하는 연구 내용을 들으시고 너무나 흐뭇하게 보고 계셔서 인 것 같습니다.

면접이 끝나고 나서 몇 일동안, 다른 대학들의 불합격 통보를 수없이 보게 되었고.. 몇 일 뒤, 국민대학교 특기자 최초합을 받고 국민대학교에 입학하게 되었습니다.

 

 

이제 제가 직접 특기자 전형을 경험하고 준비하면서 했던 내용을 바탕으로 준비하는 과정을 정리해보겠습니다!!

1. 내신 버리지 말자

내신이 심각하게 중요한 전형이 아니더라도 챙겨야 합니다. 내신이 엄청 하위권인데 특기자 전형을 붙은 case는 이미 정보과학에서 '괴물', '괴수' 라고 불리는 사람들입니다. 스스로 자신이 괴물, 괴수가 될 자신이 있으시다면 제 말 듣지 않으셔도 될 것 같습니다.(괴물이 된다는 것은 정올, 각종 알고리즘 대회에서 끊이지 않고 상을 타고, codeforeces나 boj같은 알고리즘 사이트의 탑을 먹는 것입니다.)

 

2. 자신이 공부한 내용을 정리하세요.

 

자신이 알고리즘이든 수학이든 배운 내용에 대해서 github 블로그, 티스토리, 네이버 블로그 등등 아무데나 일단 정리하는 습관을 가지시길 바랍니다.

언젠가는 쓸 일이 무조건 있을 겁니다.

  • 학생부 기록할 때
  • 특기자 포트폴리오 작성
  • 대회 준비 등등

3. 알고리즘에 끝없이 질문해보세요.

 

어떤 알고리즘을 공부한다면 계속 스스로 질문을 해보세요. "만약 이런 상황이라면 어떻게 해야되지?"
예를 들어, N개의 숫자가 나열되어 있을 때, N개의 숫자를 합하는 문제를 풀었다고 생각합시다. 아래와 같이 이런 여러 가지의 질문을 할 수 있습니다.

"만약에 N개의 숫자 중에 일부 숫자만 더한 값을 구하려 할 때, 어떻게 하면 빨리 구할 수 있을까?"

"만약에 일부 숫자들이 변할 수 있는 상황에서 N개의 숫자의 합을 어떻게 하면 쉽게 구할 수 있을까?"

"만약에 일부 숫자들이 변할 수 있는 상황에서 K개의 숫자의 합을 여러번 구하려면 어떻게 해야 할까?"

...

 

4. 알고리즘 대회를 나갔다고요? 정리하세요.

저도 잘 지키지 못했던 내용이지만 정말정말 필요한 것입니다. 알고리즘 대회를 나간 뒤에는 자신이 푼 문제와 못 푼 문제에 대해서 정리하세요. 만약 못 푼 문제를 계속 모르고 지낸다면 영원히 그 문제는 못 푸는 문제가 되는 것입니다. 아는 문제였더라도 내가 어떤 알고리즘, 생각으로 문제를 풀었는지를 정리해야 합니다. (대회에서 즉석에서 떠오른 아이디어가 정말 맞는건지 점검하는 것도 실력을 늘리기에 정말 좋은 것입니다.)

 

5.소논문 한번 써보실래요?

한번이라도 자신이 불편함을 느낀 부분이 있다면
이를 해결하려는 프로그램이나 알고리즘을 구상해서 소논문을 작성해보세요. 정말정말 소중한 경험이 되고 나중에 써먹기 좋은 포트폴리오가 됩니다.

 

6. 친구들과 프로젝트를 진행해보세요.

뜻이 맞는 친구가 있거나 다른 분야를 꿈꾸는 친구라도 분업을 한 뒤, 프로젝트를 진행해보세요. 다 같이 한다는 생각때문에 포기를 하지 않고 열심히 할 수 있게 될 뿐만 아니라 자신의 실력도 금방 늘 수 있는 길이었던 것 같습니다.

 

7. 정말 자신이 알고있는 내용만 포트폴리오에 포함시키세요.

가끔 자신이 알고있는 내용이 아닌데 일단 포트폴리오, 자소서, 생기부에 포함시키는 친구들이 있습니다. 물론 운 좋게 넘어가는 경우도 있지만 그런 내용 하나하나 때문에 면접에서 큰코 다칠 수 있습니다. 만약 자신이 대충 알고 있거나 모르는 내용인데 포트폴리오에 포함된 경우, 면접관이 너무나 잘 알아챕니다. 괜히 양 늘릴려고 질을 낮추지 마세요.

8. 특기자 전형은 고여있습니다.

특기자 전형을 준비하기 위해 여러 알고리즘 대회를 다녀보면, 어디서 많이 본 이름들이 보입니다. 계속 같은 사람들끼리 경쟁한다는 얘기입니다. 정말 여러분이 알고리즘 대회 수상으로만 특기자 전형을 지원하고 싶으면 계속 만나게 되는 사람들과 경쟁해야 합니다. 설렁설렁 이정도 하면 되겠지하는 마음가짐은 안됩니다. 당신도 고인물이 될 각오하시길 바랍니다.(진짜 알고리즘 대회 수상만으로 특기자 전형을 준비하는 사람에 한해서 입니다.)

 

9. 알고리즘과 자료구조 공부는 최대한 풀어서 생각하세요.

만약 알고리즘과 자료구조를 들어보지 못했거나 잘 모른다면, 예를 들어드리겠습니다.

배가 고파서 오므라이스를 먹으려 합니다.
이때, 필요한건 오므라이스를 만드는 레시피, 재료, 조리기구등이 있겠죠?

오므라이스를 만드는 레시피 =  알고리즘
재료 = 어떤 input data
조리기구 = 자료구조

오므라이스를 만드는 데 프라이팬이라는 자료구조를 쓴다면 오므라이스를 만드는 알고리즘이 쉽게 작동하겠죠?
만약 오므라이스를 만드는데 냄비라는 자료구조를 쓴다면 오므라이스를 만드는 알고리즘이 비교적 어렵게 작동하겠죠?

이런 식으로, 어떤 명령들이 순서대로 주어지면 알고리즘, 알고리즘을 구현하기 위해 도와주는 무언가를 자료구조라고 이해하시면 될 것 같습니다.

 

이제 본 얘기로 돌아와 보겠습니다.

 

위의 예시처럼 알고리즘과 자료구조 공부는 최대한 자신에게 이해가 가는 방법으로 풀어서 공부해보세요.
알고리즘과 자료구조는 그 어떤 코드를 말하는 것이 아닙니다. 알고리즘과 자료구조는 사람의 생각이고 idea입니다. 최대한 자신에게 맞는 idea를 찾아보세요. 그럼 자연스럽게 코드가 따라오게 됩니다.

긴 글 읽어주셔서, 긴 말 들어주셔서 감사합니다. 다음 내용은 다음 post에 올리도록 하겠습니다!

Rmx