[프로그래머스] 코드 처리하기

devel_liz·어제
0

코딩테스트

목록 보기
4/8

🗒 문제



📝 나의 문제풀이

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

    • 인덱스와 함께 요소(value)를 순회하는 함수
       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("홀수") // 출력: 홀수
      }
  • ifEmpty
    • 비어 있는 문자열 처리용
val text = ""
println(text.ifEmpty { "기본값" }) // 출력: 기본값

val nonEmptyText = "Hello"
println(nonEmptyText.ifEmpty { "기본값" }) // 출력: Hello

📌 마치며

이번 문제는 조건이 많아 까다로운 문제였다. 나의 문제풀이에서 value가 Char 타입인데 처음에 "1"이라는 String 타입으로 비교하였다. 이렇게 되면 조건이 제대로 평가되지 않을 가능성이 있다고 한다. 그렇기에 value가 == '1'처럼 Char 타입으로 변경했다. 조건을 어떻게 풀어내느냐도 중요하지만 기본 자료형에 대해서도 개념이 탄탄해야 생각보다 쉽게 풀 수 있는 문제이지 않을까 생각한다.

profile
Android zizon

0개의 댓글