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); } } |
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)") } } |
cs |
앞으로 대략 85문제 남았는데 계속 이런것만 하진 않을까 걱정됩니다..
알고리즘 문제는 언제 나오려나
https://codeup.kr/problem.php?id=1017
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); } } } |
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)") } } |
cs |
이번건 쪼....금 이것저것 벗어나버렸습니다. 그냥 문자열에서 "숫자:숫자" 형식을 가진녀석 을 뽑아내는 코드가 되버렸네요.
원래 문제의 의미는 형식을 갖춘 입력받기! 뭐 그런거 같아서 자바쪽도 그러한 형식 아니면 출력하지마! 라고 막아놨지만
스위프트 쪽은 약간 다르게 문자열에서 해당 형식을 뽑아내는식으로 해봤습니다.
혹시나 몇개 더있을경우 첫번째꺼만 출력해라 라고 적었네요.
정규식 사용에 대해 공부해본 좋은 문제였습니다.
https://codeup.kr/problem.php?id=1018
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)); }
} } |
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)") } } |
cs |
이번에는 지난문제 코드에서 단순히 패턴과 출력 형식만 바꿔줬습니다....
https://codeup.kr/problem.php?id=1019
'iOS > CodeUP - 기초100 With Swift' 카테고리의 다른 글
1023,1024,1025 [기초-입출력] 입력받아 출력하기 with Swift (0) | 2019.07.08 |
---|---|
1020,1021,1022 [기초-입출력] 입력받아 출력하기 with Swift (0) | 2019.07.08 |
1013,1014,1015 [기초-입출력] 입력받아 출력하기 with Swift (0) | 2019.07.08 |
1010,1011,1012 [기초-입출력] 입력받아 출력하기 with Swift (0) | 2019.07.08 |
1005,1007 [기초-출력] 출력하기 05 - 07 with Swift (0) | 2019.07.08 |