[프로그래머스] 수 조작하기 1

devel_liz·2024년 11월 25일
0

코딩테스트

목록 보기
10/45

🗒 문제



📝 나의 문제풀이

class Solution {
    fun solution(n: Int, control: String): Int {
        var answer = n
        for(value in control){
            when(value){
                  'w' -> answer += 1
                  's' -> answer -= 1
                  'd' -> answer += 10
                  'a' -> answer -= 10
                else -> 0
            }
        }
        return answer
    }
}

📝 다른 사람의 문제 풀이

class Solution {
    fun solution(n: Int, control: String): Int {
        val map = mapOf('w' to 1, 's' to -1, 'd' to 10, 'a' to -10)
        return control.fold(n) { acc, w -> acc + map.getValue(w) }
    }
}

🖊 문제 풀이 시 알면 좋을 것

  • for문

    • 컬렉션(리스트, 문자열 등)의 각 요소를 순차적으로 처리하는 반복문입니다.
      • control 문자열의 각 문자를 하나씩 가져와 처리합니다.
      • 문자열은 문자(char)의 배열로 취급
      			val str = "abcd"
      			for (char in str) {
                   println(char) // 'a', 'b', 'c', 'd' 순서대로 출력
      			}
  • when문

    • 조건문으로, 주어진 값을 여러 가지 조건과 비교하여 해당 조건이 만족하는 경우 그에 맞는 처리를 실행합니다.
      when (expression) {
        value1 -> { // value1과 비교
            // 조건이 맞으면 실행할 코드
        }
        value2 -> { // value2와 비교
            // 조건이 맞으면 실행할 코드
        }
        else -> { // 위의 모든 조건이 만족하지 않으면 실행할 코드
            // else는 선택적
        }
      }
      
      
  • 복합 할당 연산자(+=, -=)

    • 값에 새로운 값을 더하거나 빼면서 기존 변수에 갱신합니다.
    • answer += 1은 answer = answer + 1과 동일합니다.
    • answer -= 10은 answer = answer - 10과 동일합니다.
      var num = 10
      			num += 5  // num = num + 5
      			println(num) // 15
      			num -= 3  // num = num - 3
      			println(num) // 12
  • mapOf

    • 키-값 쌍으로 이루어진 불변 맵(Map)을 생성하는 함수.
  • to

    • 키와 값을 연결하는 중위 함수로, 맵(Map)에서 주로 사용됩니다.
      • 'w' to 1은 'w'를 키로, 1을 값으로 묶은 쌍을 만듭니다.
      • 실제로는 Pair('w', 1)와 같습니다.
        val pair = 'x' to 42
        println(pair) // (x, 42)
  • fold

    • 누적 계산을 하는 함수입니다. 주로 함수형 프로그래밍에서 사용되며, 리스트나 컬렉션의 모든 원소를 특정한 방식으로 하나로 합치는 작업을 합니다.

      • 초기값 (Initial value): 누적 계산을 시작할 때 사용하는 값입니다. 예를 들어, 합계를 구하려면 0이 초기값이 됩니다.

      • 합치는 함수 (Combining function): 리스트의 각 원소를 누적값과 결합하는 함수입니다. 예를 들어, 두 값을 더하는 함수가 될 수 있습니다.

      • fold를 사용하여 합계를 구해봅시다.

        val numbers = listOf(1, 2, 3, 4, 5)
        	
        		val sum = numbers.fold(0) { acc, number ->
        		acc + number
        }
        
        println(sum)  // 결과: 15
      • fold를 사용하여 곱을 구해봅시다.

        val numbers = listOf(1, 2, 3, 4, 5)
        
        // fold를 사용하여 곱을 구해봅시다.
         val product = numbers.fold(1) { acc, number ->
           acc * number
        }
        
        println(product)  // 결과: 120
  • getValue
    • 맵(Map)에서 키에 대응하는 값을 가져옵니다.
      • map.getValue('w')는 'w' 키에 해당하는 값을 반환합니다.
      			val map = mapOf('x' to 42)
      			println(map.getValue('x')) // 42
      			// println(map.getValue('y')) // 예외 발생: Key y is missing
  
profile
Android zizon

0개의 댓글

관련 채용 정보