privatefuninput() = with(BufferedReader(InputStreamReader(System.`in`))) { N = readLine().toInt() // 목판의 크기 N (2 ≤ N ≤ 10) COMMAND = readLine() // 로봇팔의 움직임 }
privatefunsolve() { var x = 0 var y = 0
COMMAND.forEach { direction -> var currentX = x var currentY = y
when (direction) { UP -> { currentX-- if (currentX < 0) { return@forEach } vertical[currentX][currentY] = true vertical[x][y] = true x = currentX } DOWN -> { currentX++ if (currentX >= N) { return@forEach } vertical[currentX][currentY] = true vertical[x][y] = true x = currentX } LEFT -> { currentY-- if (currentY < 0) { return@forEach } horizontal[currentX][currentY] = true horizontal[x][y] = true y = currentY } RIGHT -> { currentY++ if (currentY >= N) { return@forEach } horizontal[currentX][currentY] = true horizontal[x][y] = true y = currentY } } }
for (i in0 until N) { for (j in0 until N) { if (vertical[i][j] && horizontal[i][j]) { print('+') } else { if (vertical[i][j]) print('|') elseif (horizontal[i][j]) print('-') else print('.') } } println() } }
Point of Thinking
단순 구현 문제이다.
수직 수평에 따른 BooleanArray를 각각 만들어놓고, 주어진 명령에 따라 체크 한뒤 최종 출력때 AND연산으로 출력하면 Accepted.