Python 33

[Softeer] HSAT 4회 기출 - 통근버스 출발 순서 검증하기

문제현대자동차그룹 연구소에서는 임직원들의 편의를 위해 출퇴근 통근 버스를 제공하고 있다. 퇴근 시간이 되면 연구소 주차장에는 수 많은 버스들이 일렬로 주차되어 있다.퇴근 버스는 번호순서 대로 출발해야 하는데, 주차장은 폭이 좁아 앞의 버스가 모두 나가야 뒤의 버스가 나갈 수 있는 구조로 되어 있다. 버스를 순서에 맞게 출발시키기 위해, 연구소 주차장의 맞은편에 임시 주차장을 추가로 건설하였다.이렇게 만든 임시 주차장은 출입구가 하나밖에 없는 데다가, 폭이 좁아서 Stack처럼 맨 처음 들어간 버스는 맨 마지막에 나올 수 있다.또한, 한 번 임시 주차장으로 이동했던 버스는 다시 원래의 주차장으로 이동할 수 없다. 위와 같은 상황에서 퇴근 버스를 번호 순서대로 출발시키는 문제는 스택 정렬로 모델링할 수 있다..

[Softeer] HSAT 4회 기출 - 슈퍼컴퓨터 클러스터

문제대규모 머신 러닝에서는 여러 컴퓨터를 하나의 클러스터로 묶어 계산을 수행하는 경우가 많다.병렬 컴퓨팅 파워가 늘어나면 훨씬 더 거대한 데이터도 실용적으로 사용할 수 있게 된다.클라우드 컴퓨팅을 이용하는 기업도 많지만, 개인정보와 보안, 네트워킹, 비용 등의 문제로 직접 클러스터를 구축하는 경우도 많다. 현지도 이러한 머신 러닝용 클러스터를 관리하는 역할을 맡고 있다.클러스터의 성능은 컴퓨터의 수가 많아질 수록, 각각의 성능이 올라갈 수록 향상된다.그런데 어느 날 협업 중인 몇몇 연구실에서 클러스터의 성능을 업그레이드해 달라는 요청을 보내 왔다.이들은 특히 클러스터를 이루는 각각의 컴퓨터 중 성능이 가장 낮은 컴퓨터의 성능이 병목이 된다고 알려 왔다. 이 클러스터에는 $N$대의 컴퓨터가 있으며, 각각의..

[Softeer] HSAT 3회 기출 - 플레이페어 암호

문제대학교 학부생활을 마치고 현대자동차에 프로그래머로 취직한 사회초년생 현빈이는 팀장님에게 보안에 관련한 지식이 하나도 없음을 들키고 말았다. 그래서 현빈이는 업무시간 틈틈이 보안과 관련된 주제들을 공부하고 있다. 오늘 공부할 주제는 암호화 방식중 하나인 Playfair cipher(플레이페어 암호)다. Playfair cipher는 알파벳으로 이루어진 어떤 문자열(평문; plaintext)을 암호화하는 방법으로, 이를 위해 알파벳으로 이루어진 문자열인 키(key)가 필요하다. Playfair cipher는 빈도분석을 어렵게 하기 위해 한번에 두 글자 단위로 암호화를 진행하며, $5\times 5$크기의 표를 사용하기 때문에 알파벳 26개를 모두 담기에는 칸이 한 개 부족해 I와 J를 동일한 것으로 생각..

[Softeer] HSAT 3회 기출 - 교차로

문제자율주행차가 아래와 같은 교차로를 통과하는 상황을 생각하여 보자. 이 문제에서 다루는 교차로에서는 우회전이 불가능하기 때문에, 아래 그림과 같은 네 가지 방법으로만 교차로를 통과할 수 있다.자동차들이 동시에 교차로를 통과하면 충돌할 수 있기 때문에, 효율적인 도로 교통 흐름을 위해서는 자동차끼리의 충돌을 방지할 수 있도록 자동차가 적절히 멈춰 있도록 하되, 너무 오래 멈춰 있지 않도록 소프트웨어를 적절하게 작성해야 한다.이 문제에서 각 도로의 맨 앞에 있는 자동차는 자신을 기준으로 오른쪽에 위치한 도로에 차량이 있으면 1초 동안 출발하지 않고, 차량이 없으면 즉시 교차로를 통과한다. 정확한 설명을 위해 아래와 같은 상황을 생각하여 보자. 1번 차량이 C 위치에, 2번 차량이 B 위치에 있다. 두 차량..

[Softeer] HSAT 2회 기출 - Garage game

문제더보기자율주행 기술의 발전과 함께 차량 내 인포테인먼트 기술 또한 많은 주목을 받고 있다. 최근 자동차 실내에는 디스플레이의 대형화를 비롯해 새로운 제어 기술이 빠르게 적용되고 있는데, 완전 자율주행 시대가 다가올 수록 이런 변화가 가속화될 전망이다. 개인 맞춤형 인포테인먼트 시스템 역시 핵심 기능 중 하나다. 자율주행 시대에 발맞춰 차량 내 디지털 시스템을 활용한 게임을 개발하고 있다.게임의 룰은 가로 세로 $N$칸의 차고(격자)가 있고, 각 차고에는 색깔이 있는 자동차가 하나씩 있다.한 턴에 한 칸을 선택하며, 선택한 칸과 상하좌우 칸에 들어있는 자동차의 색이 같다면 모두 사라진다.그리고 사라진 칸들과 연결된 칸들의 상하좌우 칸에 들어있는 자동차의 색이 같다면 함께 사라진다. (문제 하단 예시 참..

[Softeer] HSAT 1회 기출 - 안전운전을 도와줄 차세대 지능형 교통시스템

문제 더보기자율주행차가 영화 속 자율주행차와 다른 이유는 차량 자체의 센서 기술은 발달했지만, 교통 인프라는 도입되지 않았기 때문이다. 이 때, 필요한 것이 바로 차세대 지능형 교통 시스템이다. 통상 ITS는 지능형 교통시스템(Intelligent Transport System)을 이야기 한다. ITS는 이미 우리의 삶에 밀접하게 연결되어 있다. 내비게이션 실시간 교통정보, 고속도로의 하이패스, 정류장의 버스 도착 안내 시스템들이 ITS에 속한다. 여기서 차량과 인프라가 서로 협력하면 차세대 지능형 교통시스템(C-ITS, Cooperative Intelligent Transportation System)이 되는 것이다. 이렇게 차량 주행과 관련된 인프라와 차량 등이 통신하기 시작하면 사고나 정체 상황에서..

[Softeer] HSAT 1회 기출 - 로봇이 지나간 경로

HSAT은 softeer에서 진행되는 현대자동차의 정기 코딩 인증 평가이다. 문제현대자동차그룹에 입사하여 로봇 연구 개발 부서에 막 입사한 당신은 아래와 같은 기능을 하는 간단한 로봇의 사용법을 전달받았다.로봇은 $H$행 $W$열의 2차원 격자판 위를 돌아다닌다. 격자판의 각 칸은 정사각형 모양이며, 로봇은 격자판의 칸 하나를 차지한다.로봇은 오른쪽(동), 왼쪽(서), 아래(남), 위(북) 중 한 방향을 바라볼 수 있다.로봇의 이동을 제어하는 명령어는 다음과 같이 세 가지이다. L: 로봇이 왼쪽으로 90도 회전하며, 이에 따라 바라보는 방향이 바뀐다.R: 로봇이 오른쪽으로 90도 회전하며, 이에 따라 바라보는 방향이 바뀐다.A: 로봇이 바라보는 방향으로 두 칸 전진한다. 단, 이 과정에서 로봇이 격자판 ..

[Softeer] 21년 재직자 대회 본선 - 트럭

문제 예제 1번 설명:신차의 크기가 1이라면, 1번 소비자에게만 차량을 보낼 수 있으므로, 총 1원의 매출을 얻는다.신차의 크기가 2이라면, 1,2번 소비자에게만 차량을 보낼 수 있으므로, 총 1+2=3원의 매출을 얻는다.신차의 크기가 3이라면, 1,2,3번 소비자에게만 차량을 보낼 수 있으므로, 총 1+2+3=6원의 매출을 얻는다.신차의 크기가 4이라면, 모든 소비자에게 차량을 보낼 수 있으므로, 총 1+2+3+4=10원의 매출을 얻는다.풀이이 문제에 사용될 알고리즘은 아래와 같다. 1. 모든 사람들의 가격제안을 차 크기 순으로 작은 것부터 정렬한다. 2. 제안을 하나씩 보면서 이 제안을 한 사람에게 기존에 얻을 수 있는 매출보다,새 제안을 받아들여서 매출이 더 오른다면 매출을 업데이트한다. 3. 새..

[Softeer] 21년 재직자 대회 본선 - 코딩테스트 세트

문제현대자동차그룹은 코딩 테스트를 위한 문제들을 많이 가지고 있는데, 관리를 위해 문제의 난이도를 $1$레벨에서 $N$레벨까지 $N$레벨로 구분하고 있다.문제 중에 난이도가 정확히 $i$레벨로 평가된 문제는 총 $c_i$개가 있고, 난이도를 정확히 매기기 애매하다는 평가를 받아 난이도를 $i$레벨 또는 $i+1$레벨로 매길 수 있다고 평가된 문제는 총 $d_i$개가 있다.이외에 다른 문제는 없다. 현호는 현대자동차그룹 채용 시험을 위해 코딩 테스트 세트를 만드는 작업을 하고 있다.하나의 코딩 테스트 세트는 $1$에서 $N$사이의 모든 난이도를 가지는 문제 $N$개를 모은 것이다.난이도가 애매한 문제들은 현호가 임의로 가능한 난이도를 적절히 매겨 넣을 때, 같은 문제를 포함하지 않는 코딩 테스트 세트는 최..

[Softeer] 21년 재직자 대회 본선 - 거리 합 구하기

문제현호는 사내 네트워크 분석 업무를 담당하게 되었다.현재 사내 네트워크는 $N$개의 노드를 가지는 트리 형태의 네트워크인데,이 말은 두 노드간의 연결이 정확히 $N-1$개 있어서 이 연결만으로 모든 노드간에 통신을 할 수 있다는 뜻이다. 각 노드에 $1$에서 $N$사이의 번호를 붙이면 $i$번째 연결은 $x_i$번 노드와 $y_i$번 노드를 양방향으로 연결하며, 통신에 걸리는 시간은 $t_i$이다. $D(i,j)$는 $i$번 노드와 $j$번 노드 사이의 거리를 나타내는데, $i$번 노드에서 여러 연결을 거쳐 $j$번 노드에 도달하기 위해 걸리는 최소 시간이다.노드를 들를 때 추가적인 작업이 없는 이상적인 시간을 따진다. 현호는 네트워크 분석을 위해 어떤 노드를 기준으로 다른 모든 노드 사이와의 거리의 ..