class Solution {
fun solution(code: String): String {
var mode = 0
val ret = StringBuilder()
code.forEachIndexed { idx, value ->
if (mode == 0) {
if (value != '1' && idx % 2 == 0) {
ret.append(value)
} else if (value == '1') {
mode = 1
}
} else {
if (value != '1' && idx % 2 != 0) {
ret.append(value)
} else if (value == '1') {
mode = 0
}
}
}
return ret.toString().ifEmpty { "EMPTY" }
}
}
class Solution {
fun solution(code: String): String {
var mode = 0
var answer = ""
code.forEachIndexed { i, v ->
if (v == '1') mode = mode xor 1
else if (mode == 0 && i % 2 == 0) answer += v
else if (mode == 1 && i % 2 != 0) answer += v
}
return if (answer.isNotEmpty()) answer else "EMPTY"
}
}
forEachIndexed
val list = listOf("a", "b", "c")
list.forEachIndexed { index, value ->
println("인덱스: $index, 값: $value")
}
// 출력:
// 인덱스: 0, 값: a
// 인덱스: 1, 값: b
// 인덱스: 2, 값: c
StringBuilder()
val sb = StringBuilder()
sb.append("데이") // 문자열 추가
sb.append("식스")
println(sb.toString()) // 출력: 데이식스
% 연산자
val number = 7
if (number % 2 == 0) {
println("짝수")
} else {
println("홀수") // 출력: 홀수
}
val text = ""
println(text.ifEmpty { "기본값" }) // 출력: 기본값
val nonEmptyText = "Hello"
println(nonEmptyText.ifEmpty { "기본값" }) // 출력: Hello
이번 문제는 조건이 많아 까다로운 문제였다. 나의 문제풀이에서 value가 Char 타입인데 처음에 "1"이라는 String 타입으로 비교하였다. 이렇게 되면 조건이 제대로 평가되지 않을 가능성이 있다고 한다. 그렇기에 value가 == '1'처럼 Char 타입으로 변경했다. 조건을 어떻게 풀어내느냐도 중요하지만 기본 자료형에 대해서도 개념이 탄탄해야 생각보다 쉽게 풀 수 있는 문제이지 않을까 생각한다.