cpp
코드트리 루돌프의 반란 (C++)
2023 삼성 하반기 코딩테스트 오후 1번 문제입니다. 기절된 산타에게 루돌프가 충돌하는 경우 다시 기절하도록 구현해야 하고 산타 이동시 거리가 줄어드는 방향으로 움직여야 합니다. 만약 거리가 줄어드는 방향이 없다면 그 자리에 가만히 있어야 합니다. HTML 삽입미리보기할 수 없는 소스
코드트리 왕실의 기사 대결 (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 삽입 미리보기할 수 없는 소스
[모의 SW 역량테스트] 특이한 자석 (C++)
주어진 문제 그대로 구현하면 되는 시뮬레이션 문제입니다. 자석의 N과 S극이 닿게되면 같이 움직이므로 회전하는 방향이 바뀌는 것만 주의하면 됩니다. HTML 삽입 미리보기할 수 없는 소스
[모의 SW 역량테스트] 원자 소멸 시뮬레이션 (C++)
원자들이 충돌할 경우 가지고 있는 에니저를 발산한 뒤 소멸하는 시뮬레이션 문제입니다. 원자가 1초에 1만큼 이동하지만 0.5초에 충돌할 수 있어 전체 격자를 2배로 늘려 계산해야 합니다. C++을 사용할 경우 vector와 같은 2차원 벡터를 사용할 수 있는데 int[][]보다 랜덤접근이 느려 TLE가 발생합니다. 원자를 저장하는 atoms 배열과 원자들의 수를 카운트하는 board, 원자들이 충돌했는지 확인하는 crash 모두 vector 구조를 사용하지 않았습니다. 아래 코드에서 위의 3개 중 하나라도 vector를 사용하면 TLE가 발생했습니다. HTML 삽입 미리보기할 수 없는 소스
[모의 SW 역량테스트] 숫자 만들기 (C++)
연산자들의 순열을 구하고 수식을 계산한 값의 최솟값과 최댓값의 차이를 구하는 문제입니다. 구한 수식에 대해 연산자 우선순위가 적용되지 않아 그대로 구현만하면 해결할 수 있습니다. HTML 삽입 미리보기할 수 없는 소스
[모의 SW 역량테스트] 탈주범 검거 (C++)
맨홀 위치에서 탈주범이 있을 공간의 수를 출력하는 문제입니다. 단순하게 맨홀 위치에서 시작하여 BFS로 탐색하면 되고 맨홀 위치의 시간을 0으로 두었을 때 파이프를 통해 시간을 1씩 증가시켜 L 시간 내의 범위의 공간의 수를 세면 됩니다. HTML 삽입 미리보기할 수 없는 소스