1026 : [기초-입출력] 시분초 입력받아 분 만 출력하기 with Swift

 

23. 콘솔에서 시간을 시:분:초 형태로 입력받아 분 만 출력해보시오.

입력 예시

12:9:50

출력 예시

9

JAVA

 

import java.util.Scanner;
import java.util.regex.Pattern;

public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		String pattern = "^[0-9]*:[0-9]*:[0-9]*$";
		
		String line = scanner.nextLine();
		scanner.close();
		
		if(Pattern.matches(pattern, line)) {
			String[] dotPars = line.split(":");
			if(dotPars.length > 2) {
				int hour = Integer.parseInt(dotPars[0]);
				int minute = Integer.parseInt(dotPars[1]);
				int second = Integer.parseInt(dotPars[2]);
				System.out.println(minute);
 
			}
		}
	}
}

 

Swift 4.2

import Foundation
let line = readLine()
//var line:String? = "2012.1.1"
if line != nil {
    let p = "^[0-9]*:[0-9]*:[0-9]*$"
    do {
        let regex = try NSRegularExpression(pattern: p)
        let results = regex.matches(in: line!, options: [], range: NSRange(line!.startIndex..., in: line!))
        let arry = results.map { (cheking) -> String in
            let str = String(line![Range(cheking.range, in: line!)!])
            let arry = str.split(separator: ":")
            if arry.count > 2 {
                let h = Int(arry[0])
                let m = Int(arry[1])
                let s = Int(arry[2])
                guard h != nil, m != nil, s != nil else {
                    return ""
                }
                return "\(m!)"
            } else {
                return ""
            }
        }
        if arry.count > 0 {
            print(arry.first!)
        }
    }catch let err {
        print("ERROR: \(err.localizedDescription)")
    }
}

이번 문제는 1019번 년월일 소스를 변경해서 돌렸습니다.

패턴 매칭은 앞으로도 소스를 우려먹을수 있겠네요~

https://codeup.kr/problem.php?id=1026

 

[기초-입출력] 시분초 입력받아 분 만 출력하기

 int h, m, s; scanf("%d:%d:%d", &h, &m, &s);

codeup.kr

 

 

 

 

 

1027 : [기초-입출력] 년월일 입력받아 형태 바꿔 출력하기 with Swift

24. 콘솔에서 년.월.일을 입력받아 일-월-년 형태로 출력하라.

입력 예시

2014.07.15

출력 예시

15-07-2014

Java

import java.util.Scanner;
import java.util.regex.Pattern;

public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		String pattern = "^[0-9]*.[0-9]*.[0-9]*$";
		
		String line = scanner.nextLine();
		scanner.close();
		
		if(Pattern.matches(pattern, line)) {
			String[] dotPars = line.split("\\.");
			if(dotPars.length > 2) {
				int year = Integer.parseInt(dotPars[0]);
				int month = Integer.parseInt(dotPars[1]);
				int day = Integer.parseInt(dotPars[2]);
				System.out.println(String.format("%02d-%02d-%04d", day,month,year));
			}
		}
	}
}

 

swift 4.2

import Foundation
let line = readLine()
//var line:String? = "2012.1.1"
if line != nil {
    let p = "^[0-9]*.[0-9]*.[0-9]*$"
    do {
        let regex = try NSRegularExpression(pattern: p)
        let results = regex.matches(in: line!, options: [], range: NSRange(line!.startIndex..., in: line!))
        let arry = results.map { (cheking) -> String in
            let str = String(line![Range(cheking.range, in: line!)!])
            let arry = str.split(separator: ".")
            if arry.count > 2 {
                let y = Int(arry[0])
                let m = Int(arry[1])
                let d = Int(arry[2])
                guard y != nil, m != nil, d != nil else {
                    return ""
                }
                return String.init(format: "%02d-%02d-%04d", arguments:[d!,m!,y!])
            } else {
                return ""
            }
        }
        if arry.count > 0 {
            print(arry.first!)
        }
    }catch let err {
        
        print("ERROR: \(err.localizedDescription)")
    }
}

이번에도 역시 소스를 우려먹었습니다. 패턴이랑 출력만 바꿔주면되서 편하네요~

https://codeup.kr/problem.php?id=1027

 

[기초-입출력] 년월일 입력받아 형태 바꿔 출력하기

년월일을 출력하는 방법은 나라마다, 형식마다 조금씩 다르다. 날짜를 년월일(yyyy.mm.dd)의 형태로 입력받아, 일월년(dd-mm-yyyy)의 형태로 출력하는 프로그램을 작성해보자. (단, 한 자리 일/월은 0을 붙여 두 자리로, 년도는 0을 붙여 네 자리로 출력한다.)

codeup.kr

 

 

 

+ Recent posts