-
[백준] 1193 분수찾기 Kotlin개발/알고리즘 2023. 4. 28. 16:56
https://www.acmicpc.net/problem/1193
처음으로 풀어본 구현 유형의 문제였다. 단순히 이차원배열을 생각하고 하나 하나 노드를 이동하면서 풀이를 생각했다. 문제는 통과했지만 다른 사람들의 풀이를 보고 구현 유형의 문제는 나처럼 푸는게 아니구나 느꼈다. 규칙성을 찾고 그걸 코드로 구현하는게 중요해 보인다.
내가 짠 코드는 아래와 같다.
package baekjoon import java.io.BufferedReader import java.io.InputStreamReader fun main() = with(BufferedReader(InputStreamReader(System.`in`))) { val x = readLine().toInt() var count = 1 var isDown = 0 // 0: 직선이동, 1: 대각선 아래, 2: 대각선 위 var currentNode = Pair(1, 1) while (true) { if (count == x) { println("${currentNode.first}/${currentNode.second}") return@with } if (currentNode.first == 1 && isDown == 0) { currentNode = Pair(currentNode.first, currentNode.second + 1) isDown = 1 } else if (currentNode.second == 1 && isDown == 0) { currentNode = Pair(currentNode.first + 1, currentNode.second) isDown = 2 } else { currentNode = if (isDown == 1) { Pair(currentNode.first + 1, currentNode.second - 1) } else { Pair(currentNode.first - 1, currentNode.second + 1) } if (currentNode.first == 1 || currentNode.second == 1) isDown = 0 } count++ } }
'개발 > 알고리즘' 카테고리의 다른 글
[백준] 5568 카드 놓기 Kotlin (0) 2023.04.27 [백준] 2589 보물섬 Kotlin (0) 2023.04.13 [백준] 14496 그대, 그머가 되어 Kotlin (0) 2023.01.23 [백준] 21937 작업 Kotlin (0) 2023.01.21 [백준] 1058 친구 Kotlin (0) 2023.01.20