내일배움캠프 7기 Day24 TIL

Daisy Kim·2023년 8월 10일
1

실수로 날려버린 프로젝트 재건을 하고 나니 벌써 저녁...😪

그래도 아직 과제제출까지는 약간의 시간이 남아있다!

  • 정예반 미션 : 오늘 목요일 자정까지
  • 개인과제 : 내일 금요일 오후 2시

주어진 미션은

reduce(), sort(), filter() 함수를 빌트된 함수를 쓰지 않고 직접 구현해보는 것

개인과제에서 시간을 많이 잡아먹어서 나는 reduce()와 sort() 함수만 작성해보았다. 제출마감인 자정까지 에너지가 남는다면 filter()도 도전해보자!

1. reduce()

let numbers = [3, 4, 5]

var sum = 0
for number in numbers{
    sum += number
}
print(sum) // 출력값: 12

var subtract = 0
for number in numbers {
    subtract -= number
}
print(subtract) 
/*
출력값: -12(X) ⇒ -6(O)
쟁점: -6 이 나와야 하는데 -12 값으로 출력된다.
그런것으로 보아 (-3)+(-4)+(-5) 로 연산되어지는게 분명하다.
*/

var multiply = 1
for number in numbers{
    multiply *= number
}
print(multiply) // 출력값: 60

  • 부딪힌 문제(쟁점) 1

    : -(뺄셈)연산이 올바른 값을 도출해내지 못함. 구현과정이 틀린 것일까?

  • 해결방안 1

    : 아직 찾는 중이다. 아버지 보고 있다면 정답을 알려조(!)

2. sort()

let unsorted = [9, 8, 67, 34, 6, 53]

func sort(numArray: [Int], symbol: String) -> Array<Int> {
var sortArray = numArray

if symbol == "<" {
	for i in 0 ..< sortArray.count {
    	for j in i+1 ..< sortArray.count {
        	if sortArray[i] > sortArray[j] {
            	let result = sortArray[i]
                sortArray[i] = sortArray[j]
                sortArray[j] = result
              }
            }
          }
        }
        else if symbol == ">" {
        	for i in 0 ..< sortArray.count {
            	for j in i+1 ..< sortArray.count {
                	if sortArray[i] < sortArray[j] {
                    	let result = sortArray[i]
                        sortArray[i] = sortArray[j]
                        sortArray[j] = resut
                      }
                    }
                  }
                }
              }
              else {
              	for i in 0 ..< sortArray.count {
                	for j in i+1 ..< sortArray.count {
                    	if sortArray[i] > sortArray[j] {
                        	let result = sortArray[i]
                            sortArray[i] = sortArray[j]
                            sortArray[j] = result
                          }
                        }
                      }
                    }
                    return sortArray
}

let cresendoArray = sort(numArray: unsorted, symbol: "<")
print(cresendoArray) // 출력값: [6, 8, 9, 34, 53, 67] (오름차순)

let decresendoArray = sort(numArray: unsorted, symbol: ">")
print(decresendoArray) // 출력값: [67, 53, 34, 9, 8, 6] (내림차순)

let defaultSortArray = sort(numArray: unsorted, symbol: "")
print(defaultSortArray) // 출력값: [6, 8, 9, 34, 53, 67] (기본정렬값: 오름차순)
  • 부딪힌 문제(쟁점) 2

    : if문의 조건을 오름차순, 내림차순 2가지만 쓰면 될 줄 알았는데, 기호를 제시하지 않더라도 적용되는 기본값에 대해서는 생각하지 못했다.

  • 해결방안 2

    : 기본정렬값인 조건을 마지막에 하나 더 추가해주었고,
    주어진 과제의 조건 및 요구사항은 항상 주의깊게 읽어 숙지하고 예외상황을 대비하도록 염두하자.


  • 새롭게 배운 것

    공식문서 참고하는 방법

    그전까지는 모르는 새로운 개념을 접했을때도 공식문서의 존재는 알고 있었지만 잘 이용하지 않았다.(영문이라 해석이 귀찮았다...) 검색시 나오는 한글로 정리된 수많은 블로그 포스트를 손쉽게 참고 했었는데 공식문서는 일단 영문이어서 거부감이 들어서 그렇지 짧고 간결하게 개념과 예시를 정리가 되어 있어 시간낭비 안하고 보다 효율적 학습이 가능한 것 같다.

  • 느낀점

    생각하는 바를 Swift 언어로 표현하는 능력이 부족

    이 부분에 대해서는 문법에 대해서 계속해서 공부하고 직접 사용해보고 익숙해지는 수 밖에 없다는 생각이다.

profile
Technology proderit homini

0개의 댓글