1. gets는 오래 전부터 C에서 deprecated되었고 C11 및 C++14 등에서부터 표준에서 완전히 제거된 함수입니다. 이유는 배열의 크기를 프로그래머가 함수에게 알려줄 수 있는 방법이 전혀 없어 배열의 크기를 넘어서도록 사용자가 마음대로 입력할 수 있다는 보안 문제가 있기 때문입니다. 따라서 앞으로는 만일 사용하시는 컴파일러가 gets의 사용을 허용해준다고 하더라도 쓰지 않는 습관을 들이는 것이 좋습니다. 대체제로 fgets를 사용하시기 바랍니다.
2. C++은 C가 할 수 있는 거의 모든 것을 할 수 있고 무엇보다 STL이라는 매우 강력한 라이브러리를 지원하기 때문에 알고리즘 문제를 푸는 데에 있어 C와는 그 편의성을 비교할 수 없습니다. 초반에는 모든 잡다한 작업을 한 줄 한 줄 C로 작성해 보면서 세부적인 구조를 이해해보는 것도 괜찮지만, 문제를 조금 풀다 보면 맨날 똑같은 수십 줄의 코드를 손으로 짜는 것이 지겹고 시간 낭비라고 느끼게 됩니다. 그보다는 적당히 기분 내킬 때 C++로 넘어가셔서 STL을 배우고 반복되는 자료구조 구현은 라이브러리의 힘을 빌리고 문제 해결 능력에만 집중하시는 것이 더 도움되리라 생각합니다. 지금 바로 C++로 넘어간 뒤 C 스타일로 코딩하면서 천천히 STL을 공부해도 괜찮습니다.
poroli0119 2년 전
질문1.
https://wtg-study.tistory.com/...
위의 블로그에서 그대로 가져온 코드인데
gets(str) 때문에 컴파일 오류가 발생합니다.
왜 그런지 알수있을까요?
-----
질문2.
또한 이제 알고리즘파트로 점점 진입하는것같은데 대부분 c++로 풀이를 많이하더라구요.
그래서 순수 c로만 되어있는 풀이찾기가 점점 어렵더라구요.
저같은 경우는 계속 c로만 풀었습니다.
현재 공부순서는
완전탐색 -> 정렬 -> 스택,큐,덱 -> DFS/BFS ... 이렇게 잡고있습니다.
최대한 c로 풀어보고 c++로 넘어가려고 하는데 어떻게 생각하시는지요.
혹은 어느 파트까지는 c로 풀면좋고 어느 파트부터는 c++로 넘어가는게 좋다 이런게 있을까요?
(최종적으로 코딩테스트는 c++로 볼 계획입니다.)