이 글은 학회 회원 랑이집사님의 허락을 받아 에브리타임 게시글을 그대로 가져왔습니다.
지난번 글을 생각보다 많은 분들이 봐주셔서 xor에 이어 and를 이용한 코딩 스킬을 올릴까 하다가 삼성 코테 볼때 조심할 것들이 더 도움될것 같아서 올립니다.
삼성 코딩테스트 유형(완전탐색, 시뮬레이션)에 대한 내용이 아니라 삼성 코테 환경이나 문제 특성에 대한 글입니다.
삼성 코딩테스트에서 많이들 하는 실수에 대한 내용을 써보려고 합니다.
우선 삼성 코딩테스트 유형을 모르시면 www.swexpertacademy.com의 제일 위의 "신입 SW 역량테스트란?" 들어가서 중간에 "모의검정 문제 예시 풀어보기" 들어가시면 예시 문제 볼 수 있으니 유형은 보고 읽으시는게 좋아요.
언어는 제가 쓰는 c++기준입니다!
1. 전역변수 혹은 동적할당 사용
삼성의 경우 메모리 제한을 256, 512메가 정도로 꽤 넉넉하게 주지만, 스택메모리는 1메가밖에 안줘서 지역변수 크기가 크면 메모리초과 나옵니다. 큰 변수는 모두 전역변수에 넣거나 동적할당 쓰는걸 추천합니다.
단, 가끔 익숙하지 않은 분들이 for문에 사용할 i, j까지 전역변수에 넣는 경우가 있는데 이건 지양합시다. 이걸로 디버깅 몇시간 하는분도 봤어요.
그리고 메모리는 500*500이 필요하다면 510*510으로 선언합시다.
2. 변수 초기화
삼성 코딩테스트 문제들은 프로그램 한번 실행에 수십개의 케이스를 다뤄야 하는 문제들이 나와서 변수 초기화 문제가 생기기 쉬워요.
개인적으로 삼성 문제 풀땐 항상 void init() 함수 만들어서 이 함수에서 모든 전역변수 초기화하는 코드를 작성합니다. 이렇게 꼭 할필는 없지만 변수 초기화는 꼭 신경쓰셔야해요.
memset 함수 사용법을 모른다면 어렵지 않으니 꼭 익혀가시는거 추천드려요. 초기화 난이도가 확 줄어들어요.
3. freopen
이건 조심할점은 아니고 편하게 코딩하는 방법인데, freopen 함수 사용법 꼭 익혀가세요. 삼성은 예제입력이 엄청 큰편이고, 입력->출력->입력->출력 형식이라 출력문이 어떤게 나왔는지 구분하기 어려운 경우가 있어요.
freopen으로 입력시간 줄이고, 출력문도 편하게 볼 수 있으니 꼭 사용법 익혀갑시다.
4. (3~4학년이면) 상시테스트
삼성은 공채 지원해서 코딩테스트를 볼 수도 있지만, 삼성에서 두달에 한번정도 공채랑 상관없이 코딩테스트를 열어줍니다.(지금은 코로나때문에 안해요)
여기서 2문제를 모두 푼다면 공채 지원할 때 코딩테스트가 면제되기 때문에 미리미리 봐두는게 좋아요.
삼성은 몇년째 유형이 시뮬레이션, 완전탐색 둘밖에 안나오니 삼성 노리고 공부 좀 하시면 2학년도 충분히 합격 가능할것 같아요. 하지만 유효기간이 2년이니 2학년분들은 나중에 다시 봐야하니 추천 안드려요.
개인적인 생각이지만 삼성은 잘한다 못한다보단 익숙하다 안익숙하다가 중요한것 같아요. 유형만 익숙해지면 문제당 20~30분이면 충분히 풀 수 있어요.
그리고 이건 주관적인 평가지만 저는 역량테스트보다 상시테스트가 더 쉬웠어요.
다음엔 삼성에서 많이 쓰이는 코딩 스킬같은걸 올려볼까 하는데 길어질것 같아서 엄두가 안나네요. dx, dy쓰는거나 set을 이용한 중복제거, bfs 돌릴 때 원하는 depth만큼 돌리기 같은것들에 대해 시간 나면 작성해보겠습니다!
+
5. for문 반복조건에 strlen 쓰면 안돼요
for(i = 0; i < strlen(str); i++)
{
//코드
}
이런식으로 쓰시면 i가 증가할때마다 strlen으로 str의 길이를 계속 구하게 돼서 시간복잡도가 엄청 늘어납니다!
int len = strlen(str);
for(i = 0; i < len; i++)
이렇게 쓰셔야해요.
c++에서 string 쓰시는 분들의 경우 .length()는 O(1)이라 반복문 안에 쓰셔도 상관 없어요.
'정보 게시판' 카테고리의 다른 글
간단한 알고리즘 - 정수론 (0) | 2020.12.27 |
---|---|
배열을 이용한 코딩 스킬(중요) (0) | 2020.12.27 |
코딩 질문할 때 체크할점 (0) | 2020.12.27 |
알고리즘 기초 - 완전탐색 (0) | 2020.12.27 |
xor 연산을 이용한 간단한 코딩 스킬들 (0) | 2020.12.27 |