dksdudgn00   2년 전

안녕하세요. 현재 대학 1학년 컴퓨터공학과 학생입니다. 우연히 알고리즘 대회에 나갔다가

무참히 탈락했지만 조금 흥미가 생기고, 또 알고리즘을 설계하고 생각하는 과정이

제 두뇌를 자극하는 것 같아서 며칠 전부터 알고리즘 공부를 시작했습니다.

지금은 인프x에서 기초 알고리즘부터(문자열) 강의 들으면서 백준 하루에 쉬운 거 3~4문제씩 풀고

있는데요. 일단 제 최종적인 목표는 알고리즘 대회에 나가서 수상을 하고 그런건 아니고

그냥 코딩테스트 적당히 보고 합격 할 수준..? 정도면 될 것 같고 알고리즘 공부하면서

문법도 좀 빠삭해지고 그런 목적으로 공부하려고 합니다.

근데 여기서 한가지 고민이 드는 게 랭커분들 보면 9할이 CPP를 사용하시더라구요..

참고로 저는 자바를 사용하는데 속도 차이가 많이 나긴 하더라구요. 입출력 빠르게 받아야 할 때는

버퍼쓰는 것도 번거롭기도 하구요.. 근데 제 진로가 웹 백엔드 개발자라서 자바 언어로 알고리즘

공부하면 자바 실력도 늘고 사이드 프로젝트(스프링 이용해서 CRUD 구현 같은)도 할 수 있어서

왠만하면 자바로 하고 싶은데 문제 난이도가 올라가다보면 자바로는 언젠간 한계가 올까요?

알고리즘 공부용으로 cpp를 따로 배워야 할 지 고민입니다..ㅠㅠ 문제만 없다면

자바로 알고리즘도 공부하고 사이드 프로젝트도 하고 일석이조를 누리고 싶은데

어떻게 생각하시나요? 알고리즘을 위해 cpp을 따로 배울까요, 아니면 그냥 자바로 진행할까요?

리고 코테에서 자바로 보는 사람은 많지 않은 편이죠? 대부분 파이썬,cpp 사용하시는 것 같아서요..

긴 글 읽어주셔서 감사하고 답변주시면 더 감사하겠습니다. ^_^

wapas   2년 전

Q. 왠만하면 자바로 하고 싶은데 문제 난이도가 올라가다보면 자바로는 언젠간 한계가 올까요?

알고리즘 대회 수상이 아닌 코딩테스트 합격선 정도면 자바로 알고리즘 푸셔도 큰 지장은 없습니다.

코딩테스트 문제들은 평균적으로 (백준에서의) 골드 티어 난이도 이하 수준으로 출제됩니다.

그러나 백준은 대부분 문제가 C++ 언어 기준으로 시간 제한과 메모리 제한을 두기 때문에 C++보다 느리거나 무거운 언어들은 추가 시간 & 메모리를 줍니다.

Java는 아래 추가 시간 & 메모리를 얻습니다.

- 시간 제한: ×2+1 초

- 메모리 제한: ×2+16 MB

이 추가 시간 & 메모리 덕분에 골드 이하 문제들은 큰 지장 없이 풀 수 있습니다.

Q. 알고리즘을 위해 cpp을 따로 배울까요, 아니면 그냥 자바로 진행할까요?

본인 자유입니다. 한 언어에 고집하지 않고 여러 언어 특성을 이해한뒤 상황에 맞게 각 다른 언어를 쓰는 것도 방법 중 하나입니다.

저는 주로 Swift로 백준 문제들을 풀고 있으며, 가끔씩 Swift로 풀 수 없다면 C++로 풉니다. 아니면 문제 푸는데 Python 언어가 더 편할 것 같으면 Python을 사용합니다.

Q. 코테에서 자바로 보는 사람은 많지 않은 편이죠?

네, C++, Python 보다는 적은편입니다.

사람들이 C++과 Python을 많이 이유는 단순합니다.

C++은 실행 시간이 빠르고, Python은 편의성 때문에 많이 사용합니다.

실행 시간과 편의성이라는 이점에 큰 신경을 쓰지 않는다면 다른 언어로 코딩테스트를 봐도 상관없습니다.

djm03178   2년 전

자바를 사용한 것 때문에 풀 수 있는 문제가 적어지는가 하면 그런 경우는 흔치 않습니다. 코딩 테스트에는 나올 일이 없는 아주 고난도 문제들 중에만 일부 빡세게 제한을 잡아 C/C++와 같은 언어만 통과하도록 의도한 것이 있을 뿐입니다. 대부분의 코딩 테스트에서도 자바를 사용할 수 있게 해주는 것으로 알고 있으며, 자바 자체가 그렇게까지 느린 언어가 아니기 때문에 정해대로 구현할 수만 있다면 크게 손해보는 것도 없다고 생각합니다. 적어도 Python보다는 성능상 훨씬 낫습니다.

자바의 단점이라고 한다면 문제의 해결 가능성보다는 오히려 타이핑할 게 너무 많아서 푸는 시간이 오래 걸린다는 것 정도라고 봅니다. Python과 비교해보면 같은 로직의 코드를 작성하더라도 코딩량이 몇 배는 많다고 느껴지곤 합니다.

dksdudgn00   2년 전

@wapas 오.. 코딩테스트가 골드 이하 난이도인건 처음 알았네요.. 전 막 플레 이상 문제들로 응용돼서 나오는 줄 알았네요..

그렇다면 자바로 사이드하면서 알고리즘도 자바로 꾸준히 공부해야겠네요. 답변 감사합니다 ㅎㅎ

@djm03178 타이핑이 긴 것은 사실 상관없어서 코딩테스트 볼 때 불리하지만 않다면 자바로 해야겠네요 ㅎㅎ

답변 감사드립니다.

댓글을 작성하려면 로그인해야 합니다.