Kotlin/Kotlin 알고리즘
백준 30032번 알파벳 뒤집기 Kotlin 구현해보기
kimc
2023. 9. 20. 20:30
반응형
```
백준 30032번 알파벳 뒤집기 Kotlin 구현해 보기
```
이번 글을 통해 배워갈 내용
- 백준 30032번 풀이
https://www.acmicpc.net/problem/30032
백준 30032번 알파벳 뒤집기는
난이도 브론즈 등급의 문제로서
d를 상하로 뒤집으면 q로, 좌우로 뒤집으면 b로
b를 상하로 뒤집으면 p로, 좌우로 뒤집으면 d로
q를 상하로 뒤집으면 d로, 좌우로 뒤집으면 p로
p를 상하로 뒤집으면 b로, 좌우로 뒤집으면 q로
변하며
d, b, q, p로 이뤄진 2D 배열을 입력받고
명령어 1을 입력받으면 상하반전
명령어 2를 입력받으면 좌우반전
해주면 되는 문제입니다
30분 정도 위에 링크를 방문하셔서 풀어보시고
안 풀리시는 경우에만 아래 해답을 봐주시면 감사하겠습니다.
입력을 받고
정해진 조건에 맞춰서 계산을 해서 출력해 주면 되는
문제입니다.
요즘에는 주석이나 설명 없이 코드로 설명하고자 노력 중입니다
만약 코드가 이해가 안 가시면 댓글 부탁드립니다
fun main() {
val inputDto = getInput()
print(solution(inputDto))
}
fun getInput(): InputDto {
val (rows, directionCmd) = readln().split(" ").map { it.toInt() }
val cols = rows
val alphaMap = Array(rows) { Array(cols) { ' ' } }
val inputLines = List(rows) { readln() }
inputLines.forEachIndexed { rowIdx, line ->
line.forEachIndexed { colIdx, char ->
alphaMap[rowIdx][colIdx] = char
}
}
return InputDto(alphaMap, directionCmd)
}
data class InputDto(
val alphaMap: Array<Array<Char>>,
val directionCmd: Int
) {
fun applyDirectionCmd(){
alphaMap.forEachIndexed { rowIdx, line ->
line.forEachIndexed { colIdx, char ->
when (directionCmd) {
1 -> {
alphaMap[rowIdx][colIdx] = verticalFlip(char)
}
2 -> {
alphaMap[rowIdx][colIdx] = horizontalFlip(char)
}
else -> {
throw Error("not valid cmd")
}
}
}
}
}
private fun verticalFlip(char : Char): Char {
return when(char){
'd'->'q'
'b'->'p'
'q'->'d'
'p'->'b'
else-> throw Error("not valid char")
}
}
private fun horizontalFlip(char : Char): Char {
return when(char){
'd'->'b'
'b'->'d'
'q'->'p'
'p'->'q'
else-> throw Error("not valid char")
}
}
fun to2DString() : String{
val sb = StringBuilder("")
alphaMap.forEach { line ->
line.forEach { char ->
sb.append(char)
}
sb.append("\n")
}
if(sb.isNotEmpty()){
sb.deleteCharAt(sb.length - 1)
}
return sb.toString()
}
}
fun solution(dto: InputDto): String {
dto.applyDirectionCmd()
return(dto.to2DString())
}
// https://www.acmicpc.net/problem/30032
// https://codemasterkimc.tistory.com/
읽어주셔서 감사합니다
무엇인가 얻어가셨기를 바라며
오늘도 즐거운 코딩 하시길 바랍니다 ~ :)
반응형