지난 2월 18일 토요일 현대오토에버 상반기 코딩테스트를 응시했습니다. 소프티어라는 플랫폼에서 보았고 문제들은 생각보다 간단했습니다. 서류도 별게 없고 자느라 인적성 보는 것을 까먹었기 때문에 무조건 불합격일 것 같지만 코딩테스트 경험을 해본다는 점에 의의를 두고 싶네요..
문제는 3문제였으며 3시간동안 보았습니다.
1번 문제는 구현 문제였습니다. 두번의 key=value 집합을 입력으로 받고 새로운 것, 바뀐 것, 삭제된 것을 각각 개수와 함께 출력하는 문제였습니다. 보자마자 python split을 쓰고 싶었지만 python 입력받는 방법이 생각나지 않아 그냥 c++의 substr함수를 써서 파싱한 후 map으로 구현했습니다. 구하라는 것이 명확하고 예외도 별로 없을 것 같았지만 체크하는 데 시간이 많이 들어가서 20분정도 걸렸습니다.
2번 문제도 정직한 구현 문제였습니다. 자동차(맞는지 정확하지 않음) 정가, 자동차가 해당되는 클래스, 쿠폰 유뮤, 결제방식 네가지를 입력받고 그에 따른 할인된 가격을 소숫점으로 출력하는 문제였습니다. 금방 풀 줄 알았지만 소숫점 출력 부분에서 예제와 다른 출력이 나와 고치느라 시간을 좀 쓴 것 같습니다. 걸린 시간은 20분 정도입니다.
3번 문제는 누적합 문제였습니다. n일간 일을 할 때, 안할 때의 이득을 각각 입력으로 받고 이득의 최댓값을 구하는 문제였습니다. 여기서 또다른 문제의 조건은 일을 하는 날짜와 일을 하지 않는 날짜들이 연속적이어야 한다는 점이었습니다. 즉 나올 수 있는 경우는 일만 하거나, 일을 하지 않기만 하거나, 일을 하다가 하지 않거나, 일을 하지 않다가 일을 하거나 네 가지라고 생각했습니다. 또한 n의 최댓값이 30만 이었기 때문에 무조건 O(N)풀이만 가능할 것이라 생각하였습니다. 저는 일을 할 때와 하지 않을 때 이득 배열을 누적합으로 구해놓고 for문을 한번 돌며 최댓값을 업데이트해주는 방식으로 풀었습니다. 0부터 돌면 한가지만 하는 경우를 다 포함할 수 있습니다. 걸린 시간은 30분입니다.
for (int i=0;i<=n;i++){
mx = max(mx, work[i] + notWork[n] - notWork[i]);
mx = max(mx, notWork[i] + work[n] - work[i]);
}
'취준' 카테고리의 다른 글
2023 상반기 한화시스템 ICT 신입사원 채용 코딩테스트 후기 (0) | 2023.04.09 |
---|---|
48회 SQLD 합격 후기 (0) | 2023.04.09 |
2023 상반기 하나은행 디지털 코딩테스트 후기 (5) | 2023.02.21 |
2023 정보처리기사 1회차 필기시험 후기 (0) | 2023.02.16 |
오픽 IH(Intermediate High) 등급 후기 (0) | 2023.02.08 |