비가 계속해서 내려서 눅눅함이 사라지지 않는 밤, 사라지지 않는 빗소리 때문인지 머리가 아파서 잊고있었다

자기전에 생각해내어서 다행.

오늘치는 19,20일치인데 20일은 이미 끝나있고 19일치에 두문제가 남았다

어서 두문제만 끝내고 게임이나 해야지

 

1. 배열 만들기 6

배열 순환해서 조건에 맞는 요소만 뽑아내는 문제

  // i의 초기값을 0으로 설정하고 i가 arr의 길이보다 작으면 다음을 반복
  var i = 0
  var stk: [Int] = []
  
  while i < arr.count {
    if stk.isEmpty {
      stk.append(arr[i])
      i += 1
      continue
    }
    
    if stk.last! == arr[i] {
      _ = stk.popLast()
      i += 1
      continue
    }
    
    stk.append(arr[i])
    i += 1
  }
  
  guard !stk.isEmpty else { return [-1]}
          
  return stk
 

눅눅해서 찝찝하고 머리가 지끈지끈 거려서 아무 생각없이 그냥 문제 그대로를 코드로 바꿨더니 하는일에 비해 좀 길어보인다.

그냥 forEach로 돌리거나 filter로 돌려도 될거같기도하고?

 

2. 무작위로 K개의 수 뽑기

제목은 무작위지만 무작위가 아니라 뭐가 랜덤으로 나왔는지 주어진다. 랜덤도 아니였겠지만...

//  var copyArr: [Int] = Set(arr).map {$0}
  var copyArr: [Int] = []
  for num in arr {
    if copyArr.contains(num) {
      continue
    }
    copyArr.append(num)
    if copyArr.count >= k {
      break
    }
  }
  
  while copyArr.count < k {
    copyArr.append(-1)
  }
  
  return copyArr[..<k].map { $0 }

처음엔 그냥 Set으로 중복제거한후 k개수만큼 보내면 되겠다 싶었는데

이게 처음 주어진 배열에서 순서가 변경되면 아웃처리시켜버린다 "저장된 순서대로 주어질 예정이라고 했을 때," 라는 정의를 또 제대로 안읽고 넘겨버려서 그만 또 틀렸다

레벨0문제인데 뭐이리 자주 틀리는지

아무튼 그렇게 오늘치도 끝!

이제 남은 문제는 6문제!

물론 미리 문제를 풀지 않을거기에 이번주내내 할거같다

+ Recent posts