소프트웨어 마에스트로는 한국정보산업연합회가 주관하는 SW 인재 육성 정부지원 사업(대외활동)이며,
1, 2차 코딩테스트와 심층 면접을 통해 14기 기준 235명 내외의 SW 인재를 선발하고, 이들이 3명씩 팀을 이뤄 소프트웨어 개발 프로젝트를 진행할 수 있도록 장학금, IT기기, 사무공간, 학습 지원금, 창업 지원금 등을 지원합니다.
컴퓨터공학과 학생들이라면 소프트웨어 마에스트로 과정은 누구나 들어봤을정도로 유명한 대외활동이라고 생각합니다. 학부생 입장에서도 경험해보기 쉽지않은 프로젝트 규모와 지원 규모
서류 평가에서의 자기소개서 항목은 총 4개로 작년, 제작년과 다르지 않았습니다.
이번 소프트웨어마에스트로 코딩테스트에서는 작년과 달리 웹 문제가 사라지고 알고리즘 문항 4문제와 SQL 문항 1문제로 총 5문제가 출제되었습니다. 저는 평소에 알고리즘 문제를 꾸준히 풀고 있던지라 평소에 약한 dp문제들 다시 풀어보기 외에는 시간투자를 하지 않았고, SQL은 대학교 데이터베이스 수업을 수강한 지 4년이 지나 모두 까먹은지라.. 짧은 유튜브 강의들과 프로그래머스 SQL 고득점 키트를 통해 준비하였습니다.
시험 당일, 프로그래머스에서 사이트가 터져 45분의 추가시간을 받았지만, 저에게 따로 피해는 없었어서 2시간 45분의 시험시간을 가질 수 있었습니다. (시험끝나고 나서 45분 더 준 이유를 알게된 케이스....)
1번 문제는 단순 구현 알고리즘으로 배열을 주고 조건 식에 따라 평범한 구현 문제로 저는 배열을 이용하여 풀었습니다.
2번 문제는 백트래킹, 브루트포스 유형의 문제였습니다.
문제 내용은 모눈 종이에 직선들이 그려져 있고 이 사이에서 가장 긴 십자가 구하는 문제로 저는 모눈 종이에 모든 점을 찍어 본후 가장 긴 십자가를 찾는 브루트포스 방식으로 풀었습니다. 단, 십자가의 조건 구현, 예외사항들이 꽤나 있던 문제로 저는 2번문제에서 가장 많은 시간을 사용하였습니다.
3번 문제는 조합, 완전탐색 문제입니다.
문제 내용은 1달이 지난 현재 정확히 기억은 나지않지만, 설치된 도미노 중 아무거나 K개를 먼저 제거를 하고 특정 도미노를 밀었을 때, 같이 넘어지는 도미노의 갯수가 가장 적은 경우를 찾는(?) 문제였던걸로 기억합니다.
백트래킹을 이용해 k개를 뺀 도미노 조합을 만들어 각 조합마다 최대 몇개가 넘어가는지 체크하는 방법으로 문제를 풀었습니다. 다른 1,2,4문제는 맞췄다고 확신하지만, 이 문제는 지금 생각해보니 틀린거같네요
4번 문제는 bfs문제 입니다.
문제 내용은 테이블에서 모든사람의 젓가락 짝을 최소의 교환을 통해 짝을 맞추는 문제로, 젓가락 교환은 자신의 양옆사람만 가능하다는 조건이 있었습니다.
ex.) AB DC BC DB -> AA BB CC DD
저는 처음 이 문제를 보자마자 bfs 기본 문제임을 확신했고, 각각의 젓가락 짝 상황을 pair를 취급하는 Vector에 담아 BFS 돌리는 방식을 사용하여 풀었지만, 시험이 끝난 후 젓가락 상황을 벡터로 다루는 대신 string으로 변환하여 사용한다면 공간과 코드 가독성에서 이점을 얻지 않았을까라는 아쉬움이 있었습니다.
5번 문제는 sql 문제로 사용자들의 아이디와 숫자를 추출한 후 재조합하는 문제였습니다.
해당 문제는 제가 숫자와 영어를 분리하는 법을 몰라 건들지 못했습니다. 나중에 풀이 방법을 찾아보니 Lpad와 Rpad를 이용하여 푸는 문제 였습니다.
저의 풀이 순서는 5번(포기) -> 4번 -> 2번 -> 1번 -> 3번 순서로 문제를 풀었고 투자시간으로는....
5번 시도 시간 3분 -> 4번 풀이시간 20분 -> 2번 풀이시간 1시간 -> 1번 풀이시간 10분 -> 3번 나머지 시간 을 사용하였습니다.
알고리즘 부분은 그래프와 구현 위주의 문제들이 나와서 대체로 쉬웠지만, sql은 프로그래머스의 고득점 kit 준비로는 역부족이였습니다. 그래서 다음 시험까지 sql을 집중적으로 공부할 예정입니다.