총 124문제가 기초 트레이닝 문제로 주어졌고 이 문제를 미리 다 풀어버리면 그날짜가 되서 체크가 완료되는거같다.

우선 다 채우지 않아 바로 day3,4가 완료되지 않아서 아쉽.

다채워진 날짜도 있으나 날짜가 되지 않아서 그런가 "마지막문제를 푼날이 체크됩니다!" 라고 써진것과 다르게 날짜가 체크되어 있지 않다

아무튼 프로그래머스의 기초 트레이닝 도전과제를 계속 이어 나가자.

기존에 다 풀지 않은 부분만 쭉 써나갈것이다.

기초 라는 단어가 들어가서인지 대부분 문법문제였다.

현재 62 문제가 남았으나 3,4일차 도전과제는 3개뿐이라 이글에서 끝내버릴거다. 그리고 오늘 남은 60개정도의 문제를 끝내고 다음 5번글은 같은 사이트의 다른 서비스를 찾아볼까한다.

 

1. 문자열 섞기

두 문자열의 각 문자가 앞에서부터 서로 번갈아가면서 한 번씩 등장하는 문자열을 만들어 return

  //  1 ≤ str1의 길이 = str2의 길이 ≤ 10
  guard str1.count > 0, str2.count > 0, str1.count < 11, str2.count < 11, str1.count == str2.count else { return "" }
  //  return (0..<str1.count).map { i in
  //    let index = str1.index(str1.startIndex, offsetBy: i)
  //    return "\(str1[index])\(str2[index])"
  //  }.joined()
  
  let resultArry: [String] = Array<Int>( 0..<str1.count ).map { i in
      let index = str1.index(str1.startIndex, offsetBy: i)
      return "\(str1[index])\(str2[index])"
  }
  return resultArry.joined()

같은 길이라 그냥 맵으로 반복 돌려서 합치면 끝 인데 이상하게 런타임 에러가 발생해서 joined 하는 부분을 나눠주고 타입추론이 생략을 해주려고 타입을 지정해줌.

 

2. 문자 리스트를 문자열로 변환하기

return arr.joined()

joined를 아느냐 또는 문자열 병합을 아는가를 묻는 문제

 

3. 조건문자열

">", "=" : n >= m

"<", "=" : n <= m

">", "!" : n > m

"<", "!" : n < m

앞 두개 부호가 주어지고 n과 m을 비교한 값을 반환하는 문제

enum으로 부호를 나눠서 해볼까 생각했더니 라인이 너무 많아졌다

  enum CalcStr {
    // <, > ,<=, >=
    case left, right, leftEqual, rightEqual
  }
  
  func boolToInt(_ b: Bool) -> Int {b ? 1 : 0}
  
  //  1 ≤ n, m ≤ 100
  guard n >= 1, n <= 100, m >= 1, m <= 100 else { return -1 }
  guard ineq == ">" || ineq == "<", eq == "=" || eq == "!" else { return -1 }
  /**
   ">", "=" : n >= m
   "<", "=" : n <= m
   ">", "!" : n > m
   "<", "!" : n < m
   */
  var calcStr: CalcStr
  if ineq == ">" {
    calcStr = eq == "!" ? .right : .rightEqual
  } else {
    calcStr = eq == "!" ? .left : .leftEqual
  }
  
  switch calcStr {
  case .left: return boolToInt(n < m)
  case .right: return boolToInt(n > m)
  case .leftEqual: return boolToInt(n <= m)
  case .rightEqual: return boolToInt(n >= m)
  }

사실은 ineq 와 eq를 문자열로 합해서 그대로 case문으로 돌리면 10라인도 안되서 끝날 문제....

 

뭐 아무튼 이거로 day4일치까지 끝이 났다

 

day5~25까지 있는데 남은 문제가 59문제라 오늘 좀 하면 대부분 끝나지 않을까 싶다 기한이 넘으면 day5,6에 대한 포스트를하겠다.

'iOS > 프로그래머스 - 코딩테스트 문제' 카테고리의 다른 글

6. day7 반복문, day8 조건문, 문자열  (0) 2024.06.27
5. day5 조건문, day6 조건문 반복문  (0) 2024.06.26
3. day2 출력,연산  (0) 2024.06.24
2. day1 출력  (0) 2024.06.24
1-1. 잡담  (0) 2024.06.24

+ Recent posts