오늘치는 단 한문제!

1. 조건에 맞게 수열 변환하기 2

반복해서 배열에 대한 계산을 하는 문제인데...

  func arrProc(_ arr: [Int]) -> [Int] {
    
//    원소에 대해 값이 50보다 크거나 같은 짝수라면 2로 나누고, 50보다 작은 홀수라면 2를 곱하고 다시 1을 더합니다.
//    보다 크거나가 아니라 이상의 짝수라는건가?
    var result: [Int] = []
    for x in arr {
      let isEven: Bool = x % 2 == 0
      if x >= 50, isEven {
        result.append(x / 2)
        continue
      }
      if x < 50, !isEven {
        result.append(x * 2 + 1)
        continue
      }
      result.append(x)
    }
    return result
  }

  var befor: [Int] = arr
  
  for i in 0 ..< Int.max / 2 {
    let response = arrProc(befor)
    if befor == response {
      return i
    }
    befor = response
  }

  return -1

항상 타인답보면 이걸 이렇게나 줄일 수 있구나 하고 놀란다

for 조건문이 좀 마음에 걸리긴한데 문제에서 통과해버렸다

그리고 배열 비교를 == 로 했으나 이거는 좀 마음에 안든다 c스타일이였다면 이건 주소값 비교가 되서 무조건 false가 나오는거라 다르다는점은 인지하고 있고 오해를 방지하기위해 따로 다른걸로 비교하는게 좋지 않을까 하고있지만 귀찮아서 그냥 사용중이다 

그리고 타인답에 elementsEqual 라는게 사용되는걸 발견했다 이런 멋진게 있었다니 

+ Recent posts