🔗 문제 링크 2493번: 탑 첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1 www.acmicpc.net 💡 문제 풀이 및 해석 탑은 왼쪽에서 오른쪽으로 만들고, 탐색은 오른쪽에서 왼쪽으로 진행된다. 자신보다 크거나 같은 탑을 만나면 더 이상 신호가 왼쪽으로 가지 않는다. 1번과 2번을 종합하면, 오른쪽 탑부터 왼쪽 탑으로 탐색을 해야 하는데, 현재 탑을 기준으로 오른쪽에 있는 탑들의 집합에서 가장 작은 탑보다 작다면, 현재 탑도 집합에 넣어주고, 아니라면 현재 탑의 높이보다 작거나 같은 탑들은 현재 탑에 수신된다고 표시해주면 된다. 종합적으로 in..
G5
🔗 문제 링크 21608번: 상어 초등학교 상어 초등학교에는 교실이 하나 있고, 교실은 N×N 크기의 격자로 나타낼 수 있다. 학교에 다니는 학생의 수는 N2명이다. 오늘은 모든 학생의 자리를 정하는 날이다. 학생은 1번부터 N2번까지 번호 www.acmicpc.net 💡 문제 풀이 및 해석 N이 최대 20이고, 교실의 크기는 20*20 이므로 400이다. 모든 칸에서 인접한 칸을 조사해도 400*4 밖에되지 않는다. 학생들의 배치는 BruteForce로 하고 만족도 또한 BruteForce로 해도 10만번으로 끝낼 수 있다. 코드에 대한 자세한 설명은 주석에 달아뒀다. ⭐️ 정답 코드 및 설명 #include #include #include #include #include using namespace ..
🔗 문제 링크 14503번: 로봇 청소기 첫째 줄에 방의 크기 $N$과 $M$이 입력된다. $(3 \le N, M \le 50)$ 둘째 줄에 처음에 로봇 청소기가 있는 칸의 좌표 $(r, c)$와 처음에 로봇 청소기가 바라보는 방향 $d$가 입력된다. $d$가 $0$인 경우 북쪽 www.acmicpc.net 💡 문제 풀이 및 해석 문제의 전체적인 흐름은 '현재 칸 청소' 반시계 90도로 회전하면서 청소할 있을 경우 이동 한 바퀴 돌고도 청소할 공간이 없다면 후진한다. 후진할 공간이 없다면 작동을 멈춘다. ⭐️ 정답 코드 및 설명 #include using namespace std; int N, M, r, c, d; int dir[] = { 0,3,2,1 }; int next_x[] = { 0,1,0,-1..