[코딩테스트] 2023 하반기 오후 삼성 SW 역량테스트 후기
2023 하반기 삼성 코딩역량테스트를 치르고 와서 이에 대한 간단한 소회를 남겨보고자 한다.
1. 시험방식
최근의 삼성 코딩테스트는 4시간 동안 2문제가 출제된다.
1번 문제는 2차원 시뮬레이션(구현) 문제가 나오는데, 문제가 제법 설명이 길다.
별다른 알고리즘 없이 DFS/BFS를 활용해 시간복잡도를 고려하지 않고 문제를 해결할 수 있다. (대신 코드복잡도가 높다.)
2번 문제는 실전함수 구현 문제가 나오는데 주어진 문제 상황을 테스트하는 main 함수에서 돌리는 특정 함수들을 구현해내면 된다.
테스트 케이스 입력의 크기가 상당하기 때문에, 시간복잡도 및 자료 구조를 신경써서 해결해야 한다.
상반기 및 이번 경험으로 볼 때 문제 유형은 항상 이대로 나오는 것 같다.
평가과정에서 풀이시간도 측정하는데, 문제를 읽는 순간 제출하기 전까지 시간이 흘러간다. 그래서 문제 둘 다 열어 기웃거리지 말고 하나씩 정해서 푸는 것이 좋다.
2. 준비과정
요즘 대부분의 코딩테스트는 프로그래머스를 통해 이루어지는데, 삼성은 자기만의 색을 가지고 있다.
프로그래머스에서는 고려하지 않아도 되었던 입출력을 항상 신경써야 한다.
삼성 sw 사이트에서 문제를 풀다보면 금방 적응할 수 있다.
https://swexpertacademy.com/main/main.do
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
그리고 삼성은 파이썬으로 문제를 풀 때 안되는 라이브러리가 많아서 사실상 import 없이 구현하는 연습을 하게 되었다.
그리고 문제유형 특성상 딱히 라이브러리가 필요하지도 않은 것 같다.
3. 경험담
오후 시험에서는 1번의 구현 난이도가 상반기 테스트보다 올라간 느낌이었다. 상반기에서는 좌표의 회전연산이 있어서 머리가 좀 헷갈렸지만 양 자체는 많지 않았는데, 이번에는 그냥 문제 설명이 저번 문제보다 두 배였다.
소와 사람들이 게임을 하는데, 2차원 배열에서 각 턴마다 돌아가며 움직여서 충돌하면 점수를 얻고 튕겨나가는데 게임이 끝난 후 점수를 출력하는 문제였다. 그런데 소와 사람의 움직이는 방향과 충돌 결과가 달라서 일일히 구현 해야했다.
문제 조건마다 함수로 다 쪼개서 구현하니 그나마 좀 나았다. 마지막에 오타로 인한 오류를 헤매다 결국 총 2시간 정도 동안 풀어서 주어진 테스트 케이스들은 전부 통과했다.
2번 문제 상황에서는 짐이 놓여지는 원형 컨베이어 벨트와 여행객이 주어지는데, 컨베이어 벨트는 매초 한칸씩 회전하고, 여행객은 도착해서 그 위치에서 계속 기다리며 수하물을 수거하다가 자신의 수하물을 다 챙기면 자리를 떴다.
그래서 다음의 함수들을 구현하면 되었다.
class solve:
def __init__():
# 초기화
def add_baggage(position, time, name) -> None:
# 수하물 도착(도착 위치, 도착 시간, 이름)
def add_passenger(position, time, name, num_baggage) -> None:
# 승객 도착(도착 위치, 도착 시간, 이름, 수하물 수)
def count_baggage(time) -> int:
# 현재시간 잔류 수하물 세기
def add_passenger(time) -> int:
# 현재시간 남아있는 승객 세기
아쉽게 마지막 승객을 세는 함수를 구현하기 전에 시험이 종료되었다.