1017 : [기초-입출력] 정수 한 개 입력받아 세 번 출력하기  with Swift

14. 콘솔에서 정수를 한 개 입력 받고 이를 3번 출력하라.

입력 예시

125

출력 예시

125 125 125

JAVA

1

2

3

4

5

6

7

8

9

10

import java.util.Scanner;

 

public class Main {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        int value1 = scanner.nextInt();

        scanner.close();

        System.out.println(value1 + " " + value1 + " " + value1);

    }

}

Colored by Color Scripter

cs

 

Swift 4.2

1

2

3

4

5

6

7

import Foundation

let line = readLine()

if line != nil {

    if let value = Int(line!) {

        print("\(value) \(value) \(value)")

    }

}

Colored by Color Scripter

cs

 

 

앞으로 대략 85문제 남았는데 계속 이런것만 하진 않을까 걱정됩니다..

알고리즘 문제는 언제 나오려나

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

 

[기초-입출력] 정수 한 개 입력받아 세 번 출력하기

printf("%d %d %d", a, a, a); 와 같은 방법으로 한 변수의 값을 여러 번 출력할 수 있다.

codeup.kr

 

 

 

 

 

1018 : [기초-입출력] 시간 입력받아 그대로 출력하기 with Swift

 

15. 콘솔에서 시간이 특정 형식에 맞추어 입력될때 그대로 출력하시오.

입력 - 시와분 이  :  으로 구분되어 입력됨.

입력 예시

3:16

출력 예시

3:16

JAVA

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

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]*$";

        

        String line = scanner.nextLine();

        scanner.close();

        if(Pattern.matches(pattern, line)) {

            System.out.println(line);

        }

    }

}

Colored by Color Scripter

cs

 

Swift 4.2

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

import Foundation

//print("입력: ")

let line = readLine()

//var line:String? = "adsf1:30asdf"

if line != nil {

    let p = "[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

            return String(line![Range(cheking.range, in: line!)!])

        }

        if arry.count > 0 {

            print(arry.first!)

        }

    }catch let err {

        print("ERROR: \(err.localizedDescription)")

    }

}

Colored by Color Scripter

cs

이번건 쪼....금 이것저것 벗어나버렸습니다. 그냥 문자열에서 "숫자:숫자" 형식을 가진녀석 을 뽑아내는 코드가 되버렸네요.

원래 문제의 의미는 형식을 갖춘 입력받기! 뭐 그런거 같아서 자바쪽도 그러한 형식 아니면 출력하지마! 라고 막아놨지만

스위프트 쪽은 약간 다르게 문자열에서 해당 형식을 뽑아내는식으로 해봤습니다.

혹시나 몇개 더있을경우 첫번째꺼만 출력해라 라고 적었네요.

정규식 사용에 대해 공부해본 좋은 문제였습니다.

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

 

[기초-입출력] 시간 입력받아 그대로 출력하기

scanf( ) 함수는 형식(format)에 맞추어 입력 받는 함수이기 때문에 입력 받고자 하는 형식에 맞게 적어주면 된다. [예시] scanf("%d:%d", &h, &m); //h와 m에 값이 10진수로 저장된다.

codeup.kr

 

 

 

 

 

1019 : [기초-입출력] 년월일 입력받아 형식에 맞게 출력하기 with Swift

16. 콘솔에서 년,월, 일을 입력받아 형식에 맞게 출력하라.

입력 - 년.월.일

출력 - yyyy.mm.dd

입력 예시

2012.1.1

2012.01.01

출력 예시

2012.01.01

2012.01.01

JAVA

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

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("\\.");

            System.out.println(dotPars.length);

            int year = Integer.parseInt(dotPars[0]);

            int month = Integer.parseInt(dotPars[1]);

            int day = Integer.parseInt(dotPars[2]);

            System.out.println(String.format("%04d.%02d.%02d", year,month,day));

        }

        

    }

}

Colored by Color Scripter

cs

 

Swift 4.2

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

import Foundation

let line = readLine()

//var line:String? = "2012.1.1"

if line != nil {

    let p = "^[0-9]*.[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:"%04d.%02d.%02d",arguments:[y!,m!,d!])

            } else {

                return ""

            }

        }

        if arry.count > 0 {

            print(arry.first!)

        }

    }catch let err {

        print("ERROR: \(err.localizedDescription)")

    }

}

Colored by Color Scripter

cs

 

이번에는 지난문제 코드에서 단순히 패턴과 출력 형식만 바꿔줬습니다....

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

 

[기초-입출력] 년월일 입력받아 형식에 맞게 출력하기

입력받은 년, 월, 일을 출력한다. 단, 자릿수는 yyyy.mm.dd형태로 출력한다. (입출력 예시 참고, %02d를 사용하면 2칸을 사용해 출력하는데, 1자리 수인 경우 앞에 0이 붙어 출력된다.)

codeup.kr

 

+ Recent posts