emeraldgoose
'코드트리' 카테고리의 글 목록

코드트리

코드트리

코드트리 왕실의 기사 대결 (C++)

2023 하반기 삼성 코딩테스트 오전 1번 문제입니다. 기사를 움직이면서 밀어내는 기사들을 queue로 체크하여 문제를 풀었습니다. 움직이는 기사 뿐만 아니라 밀리게 되는 기사들에 대해 움직일 수 있는지 체크해야 합니다. HTML 삽입 미리보기할 수 없는 소스

코드트리

코드트리 예술성 (C++)

문제를 그대로 구현하면 됩니다. 회전하는 부분이 있어 코드가 좀 더럽습니다. 예술성을 계산하는 부분에서는 맞닿아 있는 변의 수를 체크하기 위해 map 자료구조를 사용했습니다. 아래 방향과 오른쪽 방향만 체크하여 중복되지 않게 작성했습니다. HTML 삽입 미리보기할 수 없는 소스

코드트리

코드트리 토끼와 경주 (C++)

2023 삼성 상반기 코딩테스트 오전 2번 문제입니다. 최대 2000마리의 토끼를 빠르게 선택하기 위해 우선순위 큐를 이용했습니다. 이 문제에서 생각해봐야 할 것은 토끼의 이동입니다. 토끼의 이동은 최대 10억을 가질 수 있으므로 한 칸씩 이동할 수 없습니다. 현재 위치와 방향에서 같은 위치와 방향을 가리킬 때까지 토끼가 이동할 거리는 2 * ((N or M) - 1) 이므로 나머지 연산으로 계산량을 줄여야 합니다. HTML 삽입 미리보기할 수 없는 소스

코드트리

코드트리 포탑 부수기 (C++)

2023 상반기 삼성 코딩테스트 오전 1번 문제입니다. 문제에 나와있는 대로 함수를 구성하고 구현하면 됩니다. 공격자와 희생자 선정은 필요한 값을 저장하여 정렬하는 것으로 찾을 수 있습니다. 공격자와 희생자의 선정 방법이 완전히 반대이므로 정렬 후 공격자는 첫 번째, 희생자는 마지막 값을 리턴하면 됩니다. 레이저 공격이 실패하면 포탄 공격으로 넘어가므로 레이저 공격을 하는 함수에 true / false 리턴값을 넣어 레이저 공격이 성공했는지 실패했는지 알 수 있도록 합니다. 공격시 레이저와 포탄을 사용하는데 레이저 공격은 최단경로를 이용하므로 bfs를 사용하면 됩니다. 이 문제에서 주의할 점은 범위가 넘어가면 반대편이 된다는 것입니다. HTML 삽입 미리보기할 수 없는 소스

코드트리

코드트리 채점기 (C++)

2023 삼성 상반기 코딩테스트 오후 2번 문제입니다. TLE를 해결하지 못해 다른 사람의 풀이를 보고 계속 코드를 고쳐가면서 문제를 풀었습니다. 단순한 구현이 아닌 적절한 자료구조를 사용하고 한번 더 생각해야 해서 개인적으로 잘 만든 문제라고 생각합니다. 우선 어떠한 task가 채점이 될 수 없는 조건은 다음과 같습니다. - 해당 task의 도메인이 현재 채점을 진행중인 도메인 중 하나라면 불가능합니다. - 해당 task의 도메인과 정확히 일치하는 도메인에 대해 가장 최근에 진행된 채점 시작 시간이 start, 종료 시간이 start+gap 였고 현재 시간 t가 start+3×gap 보다 작다면, 부적절한 채점이라 의심되기에 채점이 불가합니다. 채점기로 들어가는 위의 조건때문에 url을 검사해야 합니다..

코드트리

코드트리 메이즈 러너 (C++)

2023 삼성 상반기 코딩테스트 오후 1번 문제입니다. 출구와 가장 가까운 사람을 포함하는 정사각형 범위를 찾고 이를 회전해야 합니다. 이때 정사각형 범위 내 사람이 있는 경우 같이 회전시켜야 합니다. 정사각형을 찾는 코드는 반복문을 사용했는데 (10,10)인 보드에서 최대 크기 10인 사각형을 찾는 코드라서 크게 시간을 잡아먹지 않는다고 생각했습니다. 그리고 거리가 abs(x1-x2)+abs(y1-y2)로 정의되어 있어 bfs나 dfs를 사용하지 않고도 사람을 이동시킬 수 있습니다. 출구와 같은 거리를 가진 경로가 여러개라면 행 -> 열 방향으로 우선순위를 적용해야 합니다. HTML 삽입 미리보기할 수 없는 소스

코드트리

코드트리 꼬리잡기 (C++)

생각보다 어려운 문제였습니다. 트랙위에 사람이 트랙을 따라가는 것을 구현하기 위해 트랙 전부를 저장하여 회전하는 것으로 구현했습니다. 예를들면, 첫 번째 예시 왼쪽 상단의 트랙에 대해 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 삽입 미리보기할 수 없는 소스

코드트리

코드트리 빵 (C++)

문제를 그대로 구현하면 됩니다. 어떤 사람이 원하는 편의점에서 가장 가까운 베이스캠프를 지정할 때 이전 사람들이 지정한 베이스캠프를 지나지 못하도록 주의해야 합니다. 따라서 베이스캠프 위치를 정할때는 미리 정하지 않아야 합니다. HTML 삽입 미리보기할 수 없는 소스

코드트리

코드트리 싸움땅 (C++)

문제에 주어진 과정을 그대로 따라가면서 구현하면 됩니다. 처음에는 땅에 하나의 총이 떨어져 있거나 없는 경우가 있지만 라운드를 거치면서 한곳에 여러개의 총이 떨어져 있을 수 있음을 알아야 합니다. HTML 삽입 미리보기할 수 없는 소스

코드트리

코드트리 술래잡기 (C++)

디버깅이 힘든 문제입니다. 그리고 술래가 바라보는 방향을 따로 저장해두는 것이 편했습니다. 도망자가 움직이는 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 삽입 미리보기할 ..