코드트리 왕실의 기사 대결 (C++)
2023 하반기 삼성 코딩테스트 오전 1번 문제입니다. 기사를 움직이면서 밀어내는 기사들을 queue로 체크하여 문제를 풀었습니다. 움직이는 기사 뿐만 아니라 밀리게 되는 기사들에 대해 움직일 수 있는지 체크해야 합니다. HTML 삽입 미리보기할 수 없는 소스
2023 하반기 삼성 코딩테스트 오전 1번 문제입니다. 기사를 움직이면서 밀어내는 기사들을 queue로 체크하여 문제를 풀었습니다. 움직이는 기사 뿐만 아니라 밀리게 되는 기사들에 대해 움직일 수 있는지 체크해야 합니다. HTML 삽입 미리보기할 수 없는 소스
문제를 그대로 구현하면 됩니다. 회전하는 부분이 있어 코드가 좀 더럽습니다. 예술성을 계산하는 부분에서는 맞닿아 있는 변의 수를 체크하기 위해 map 자료구조를 사용했습니다. 아래 방향과 오른쪽 방향만 체크하여 중복되지 않게 작성했습니다. HTML 삽입 미리보기할 수 없는 소스
2023 삼성 상반기 코딩테스트 오전 2번 문제입니다. 최대 2000마리의 토끼를 빠르게 선택하기 위해 우선순위 큐를 이용했습니다. 이 문제에서 생각해봐야 할 것은 토끼의 이동입니다. 토끼의 이동은 최대 10억을 가질 수 있으므로 한 칸씩 이동할 수 없습니다. 현재 위치와 방향에서 같은 위치와 방향을 가리킬 때까지 토끼가 이동할 거리는 2 * ((N or M) - 1) 이므로 나머지 연산으로 계산량을 줄여야 합니다. HTML 삽입 미리보기할 수 없는 소스
2023 상반기 삼성 코딩테스트 오전 1번 문제입니다. 문제에 나와있는 대로 함수를 구성하고 구현하면 됩니다. 공격자와 희생자 선정은 필요한 값을 저장하여 정렬하는 것으로 찾을 수 있습니다. 공격자와 희생자의 선정 방법이 완전히 반대이므로 정렬 후 공격자는 첫 번째, 희생자는 마지막 값을 리턴하면 됩니다. 레이저 공격이 실패하면 포탄 공격으로 넘어가므로 레이저 공격을 하는 함수에 true / false 리턴값을 넣어 레이저 공격이 성공했는지 실패했는지 알 수 있도록 합니다. 공격시 레이저와 포탄을 사용하는데 레이저 공격은 최단경로를 이용하므로 bfs를 사용하면 됩니다. 이 문제에서 주의할 점은 범위가 넘어가면 반대편이 된다는 것입니다. HTML 삽입 미리보기할 수 없는 소스
2023 삼성 상반기 코딩테스트 오후 2번 문제입니다. TLE를 해결하지 못해 다른 사람의 풀이를 보고 계속 코드를 고쳐가면서 문제를 풀었습니다. 단순한 구현이 아닌 적절한 자료구조를 사용하고 한번 더 생각해야 해서 개인적으로 잘 만든 문제라고 생각합니다. 우선 어떠한 task가 채점이 될 수 없는 조건은 다음과 같습니다. - 해당 task의 도메인이 현재 채점을 진행중인 도메인 중 하나라면 불가능합니다. - 해당 task의 도메인과 정확히 일치하는 도메인에 대해 가장 최근에 진행된 채점 시작 시간이 start, 종료 시간이 start+gap 였고 현재 시간 t가 start+3×gap 보다 작다면, 부적절한 채점이라 의심되기에 채점이 불가합니다. 채점기로 들어가는 위의 조건때문에 url을 검사해야 합니다..
2023 삼성 상반기 코딩테스트 오후 1번 문제입니다. 출구와 가장 가까운 사람을 포함하는 정사각형 범위를 찾고 이를 회전해야 합니다. 이때 정사각형 범위 내 사람이 있는 경우 같이 회전시켜야 합니다. 정사각형을 찾는 코드는 반복문을 사용했는데 (10,10)인 보드에서 최대 크기 10인 사각형을 찾는 코드라서 크게 시간을 잡아먹지 않는다고 생각했습니다. 그리고 거리가 abs(x1-x2)+abs(y1-y2)로 정의되어 있어 bfs나 dfs를 사용하지 않고도 사람을 이동시킬 수 있습니다. 출구와 같은 거리를 가진 경로가 여러개라면 행 -> 열 방향으로 우선순위를 적용해야 합니다. HTML 삽입 미리보기할 수 없는 소스
생각보다 어려운 문제였습니다. 트랙위에 사람이 트랙을 따라가는 것을 구현하기 위해 트랙 전부를 저장하여 회전하는 것으로 구현했습니다. 예를들면, 첫 번째 예시 왼쪽 상단의 트랙에 대해 person=[1,2,3,4,4,4,4,4], track=[(0,2),(0,1),(0,0),(1,0),(2,0),(2,1),(2,2),(1,2)]으로 저장하고 person 배열을 [2,3,4,4,4,4,1]로 회전시키면 트랙위에 사람이 움직인 것과 같습니다. HTML 삽입 미리보기할 수 없는 소스
문제를 그대로 구현하면 됩니다. 어떤 사람이 원하는 편의점에서 가장 가까운 베이스캠프를 지정할 때 이전 사람들이 지정한 베이스캠프를 지나지 못하도록 주의해야 합니다. 따라서 베이스캠프 위치를 정할때는 미리 정하지 않아야 합니다. HTML 삽입 미리보기할 수 없는 소스
문제에 주어진 과정을 그대로 따라가면서 구현하면 됩니다. 처음에는 땅에 하나의 총이 떨어져 있거나 없는 경우가 있지만 라운드를 거치면서 한곳에 여러개의 총이 떨어져 있을 수 있음을 알아야 합니다. HTML 삽입 미리보기할 수 없는 소스
디버깅이 힘든 문제입니다. 그리고 술래가 바라보는 방향을 따로 저장해두는 것이 편했습니다. 도망자가 움직이는 move 함수, 술래가 잡은 도망자의 수를 리턴하는 check 함수, 술래가 바라보는 방향을 계산하는 indexing_m 함수와 m_reverse 함수로 구성했습니다. 술래는 달팽이 방향으로 움직이며 움직이는 방향으로 바라봅니다. 그러나 코너 위치에서 술래는 이동하자마자 방향을 바꿔버리기 때문에 이를 반영해야 합니다. # 상 : 0 # 우 : 1 # 하 : 2 # 좌 : 3 # 정방향 2 1 1 1 2 0 0 1 2 2 0 0 0 2 2 0 0 3 3 2 0 3 3 3 3 # 역방향 2 2 3 3 3 2 2 2 3 0 2 2 0 0 0 2 1 1 0 0 1 1 1 1 0 HTML 삽입 미리보기할 ..