본문 바로가기
모바일앱/Swift

[알고리즘] 연, 월, 일 을 입력하여 요일을 영문으로 출력하는 코드만들기

by GeekCode 2021. 12. 12.
반응형

import Foundation

 

 

 

//#2 연, 월, 일 을 입력하여 요일을 영문으로 출력하는 코드

 

/**

 - Parameters:

    - year: 입력된 해의 값을 할당받은 매개변수

    - month: 입력된 달의 값을 할당받은 매개변수

    - day: 입력된 날의 값을 할당받은 매개변수

**/

func calDayOfWeek(_ year: Int, _ month: Int, _ day: Int) -> String {

    let weekArray = ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"] // 요일 배열

    

    // date 포맷 선언

    let date = DateFormatter()

    date.locale = Locale(identifier: "ko_kr")

    date.dateFormat = "yyyy-MM-dd"

 

    let inputDate = date.date(from: "\(year)-\(month)-\(day)") // 입력받은 날짜 date 설정

    let cal = Calendar(identifier: .gregorian)         // 그레고리 캘린더 선언

    let comps = cal.dateComponents([.weekday], from: inputDate!) // 입력 받은 날짜 캘린더 형식으로 변환

 

    return weekArray[comps.weekday! - 1] // 요일 반환

}

 

//print("날짜를 입력하세요. ex)2019년 8월 14일 -> 2019 8 14")

 

// 입력값에서 " "로 분할해 inputDay라는 Array생성

//let inputDay = readLine()!.split(separator: " ").map {

//    Int(String($0))!

//}

//print(calDayOfWeek(inputDay[0], inputDay[1], inputDay[2]))

//----------------------------------------------------- 정상코드

 

 

// 반복문을 위해 inputDay를 따로 분리 해서 ArrayDate라는 Array 생성

//    let ArrayDate = inputDay!.split(separator: " ").map {

//        Int(String($0))!

//    }

 

func Input() {

    print("날짜를 입력하세요. ex)2019년 8월 14일 -> 2019 8 14")

    let inputDay = readLine()

    let convertSplitString = inputDay!.split(separator: " ")

 

        //띄어쓰기를 형식에 맞지 않게입력했을 때, 에러처리

        if convertSplitString.count != 3 {

            print("잘못된 입력입니다. 숫자 \"YYYY MM DD\" 형태로 다시 입력해주세요")

            Input()

        } else {

            // 연월일을 숫자로 입력하지 않았을 때, 에러처리

            let ye: Int? = Int(convertSplitString[0])

                guard let year = ye else {

                    print("잘못된 입력입니다. 다시 입력해주세요")

                    return Input()

                }

            let mo: Int? = Int(convertSplitString[1])

                guard let month = mo else {

                    print("잘못된 입력입니다. 다시 입력해주세요")

                    return Input()

                }

            let da: Int? = Int(convertSplitString[2])

                guard let day = da else {

                    print("잘못된 입력입니다. 다시 입력해주세요")

                    return Input()

                }

        //변환된 문자열 배열을 숫자 배열로 전환

            let ArrayDate = convertSplitString.map {

                            Int(String($0))!

                            }

            print(calDayOfWeek(ArrayDate[0], ArrayDate[1], ArrayDate[2]))

            Input()

            }

}

 

Input()

 

//inputDay 배열의 번호를 지정해서 calDayOfWeek 함수에 넣어 출력하기

// 생성되는 Array의 형태 "YYYY MM DD" -> [2023, 12, 5]

//

 

 

 

//

//- Parameters:

//    - inputDay: 사용자로부터 입력받은 날짜를 담은 상수

//    - getInputDay: 옵셔널 String값을 일반 String으로 변환할 상수

//    - divDayArr: 공백으로 날짜를 나누어 저장할 String타입의 배열

//    - divDayArrInt: String배열의 값을 Int타입으로 저장할 상수

//*/

//print("날짜를 입력하세요. ex)2019년 8월 22일 -> 2019 8 22")

//let inputDay = readLine()

//

//if isValidInputDate(inputDay!) == false {

//    print("숫자만 입력해 주세요")

//} else {

//    if let getInputDay = inputDay {

//

//        // 공백으로 나누어 String 형태의 배열에 저장

//        let divDayArr = getInputDay.components(separatedBy: " ")

//

//        // 값이 하나만 입력 될 경우

//        if divDayArr.count != 3 {

//            print("YYYY MM DD 과 같은 형태로 입력해 주세요.")

//        } else {

//            // map메소드 이용하여 String값을 Int로

//            let divDayArrInt: [Int] = divDayArr.map{ Int($0)! }

//

//            // 입력받은 값으로 요일 구하는 함수 호출

//            print(getDayWithInputs(divDayArrInt[0], divDayArrInt[1], divDayArrInt[2]))

//        }

//    }

//}

 

 

 

 

 

//

////#2 연, 월, 일 을 입력하여 요일을 영문으로 출력하는 코드

//

///**

// - Parameters:

//    - year: 입력된 해의 값을 할당받은 매개변수

//    - month: 입력된 달의 값을 할당받은 매개변수

//    - day: 입력된 날의 값을 할당받은 매개변수

//**/

//func calDayOfWeek(_ year: Int, _ month: Int, _ day: Int) -> String {

//    let weekArray = ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"] // 요일 배열

//

//    // date 포맷 선언

//    let date = DateFormatter()

//    date.locale = Locale(identifier: "ko_kr")

//    date.dateFormat = "yyyy-MM-dd"

//

//    let inputDay = date.date(from: "\(year)-\(month)-\(day)") // 입력받은 날짜 date 설정

//    let cal = Calendar(identifier: .gregorian)         // 그레고리 캘린더 선언

//    let comps = cal.dateComponents([.weekday], from: inputDay!) // 입력 받은 날짜 캘린더 형식으로 변환

//

//    return weekArray[comps.weekday! - 1] // 요일 반환

//}

//

//

//print("날짜를 입력하세요. ex)2019년 8월 14일 -> 2019 8 14")

//

//// 입력값에서 " "로 분할해 inputDay라는 Array생성

//let inputDay = readLine()!.split(separator: " ").map {

//    Int(String($0))!

//}

//

////inputDay 배열의 번호를 지정해서 calDayOfWeek 함수에 넣어 출력하기

//print(calDayOfWeek(inputDay[0], inputDay[1], inputDay[2]))

//

 

 

 

 

////#1 2019년 고정값으로 월, 일 을 입력하여 요일을 영문으로 출력하는 코드

//func calDayOfWeek(_ a:Int, _ b:Int) -> String {

//    let weekArray = ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"] // 요일 배열

//

//    // date 포맷 선언

//    let date = DateFormatter()

//    date.locale = Locale(identifier: "ko_kr")

//    date.dateFormat = "yyyy-MM-dd"

//

//    // 2019년 고정

//    let inputDay = date.date(from: "2019-\(a)-\(b)") // 입력받은 날짜 date 설정

//    let cal = Calendar(identifier: .gregorian)         // 그레고리 캘린더 선언

//    let comps = cal.dateComponents([.weekday], from: inputDay!) // 입력 받은 날짜 캘린더 형식으로 변환

//

//    return weekArray[comps.weekday! - 1] // 요일 반환

//

//}

//

////테스트용 고정값

////print(solution(12, 9))

////"THU"

//

//

//print("날짜를 입력하세요. ex)2019년 8월 14일 -> 8 14")

//

//let inputDay = readLine()!.split(separator: " ").map {

//    Int(String($0))!

//}

//

////inputDay 배열의 번호를 지정해서 calDayOfWeek 함수에 넣어 출력하기

//print(calDayOfWeek(inputDay[0], inputDay[1])) //

 

 

 

 

 

 

// 윤년 계산하는 함수

 

// 윤년 : 아래의 조건 2가지를 모두 만족해야함

// 조건1: 4로 나누어 떨어짐

// 조건2: 400으로 나누어 떨어짐

// 조건3: 100으로 나누어 떨어지지 않아야함.

//

 

//윤년계산 함수 작성

//func checkLeap(year: Int) -> Bool {

//    var checkValue: Bool = false

//    if ((year % 4 == 0 && year % 100 != 0) && year % 400 == 0){ //

//        checkValue = true

//        print("\(year)년은 윤년이다")

//    }else {

//        checkValue = false

//        print("\(year)년은 평년이다")

//

//    }

//    return checkValue

//}

//

//print(checkLeap(year: 2000))

반응형

'모바일앱 > Swift' 카테고리의 다른 글

for 문에서의 제어전달문 보충  (0) 2021.12.16
중첩함수 보충  (0) 2021.12.16
옵셔널 바인딩 보충  (0) 2021.12.16
[알고리즘] 최대공약수와 최소공배수 구하기  (0) 2021.12.16
날짜 계산하기  (0) 2021.12.11
structures and Classes (+ enum)  (0) 2021.12.09
Loops (반복문)  (0) 2021.12.08
조건문(IF, Switch)  (0) 2021.12.08