72. 콘솔에서 정수 한개가 입력되었을때 카운트다운을 출력하라

입력 범위 : 1 ~ 100

입력 예시

5

출력 예시

4

3

2

1

​0

JAVA

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int maxCount = scan.nextInt();
		scan.close();
		while(maxCount > 0) {
			System.out.println(--maxCount);
		}
	}
}

swift 4.2

import Foundation

let line = readLine();
if line != nil,var maxCount = Int(line!) {
    while maxCount > 0 {
        maxCount-=1
        print(maxCount)
    }
}

 

이전문제와 다른거는 순서의 차이....

출력을 먼저하느냐 감소를 먼저하느냐 그것이 문제로다

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

71. 콘솔에서 정수 한개가 입력되었을때 카운트다운을 출력하라

입력 범위 : 1 ~ 100

입력 예시

5

출력 예시

5

4

3

2

1

JAVA

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int maxCount = scan.nextInt();
        scan.close();
		while(maxCount > 0) {
			System.out.println(maxCount--);
		}
	}
}

Swift 4.2

import Foundation

let line = readLine();
if line != nil,var maxCount = Int(line!) {
    while maxCount > 0 {
        print(maxCount)
        maxCount-=1
    }
}

 

JAVA쪽에 print와 감소를 같이 해줬는데

버전 별로 의도대로 안될수도 있습니다.

그냥 밑의 스위프트 처럼 출력과 감소를 줄을 나누는게 더 나을수도 있어요.

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

70. 콘솔에서 0이 입력 될 때 까지 계속 정수를 입력받고 출력하기

입력 범위 : -2147483648 ~ 2147483647

입력 예시

7 4 2 3 0 1 5 6 9 10 8

출력 예시

7

4

2

3

0

이전 이 문제를 goto문으로 풀라고해서

문제를 집어던지고 while문으로 풀었더니

이번엔 같은문제를 while문으로 풀어보기 문제가 나왔습니다 난감하네요;;;

그래서 이전 문제포스트 링크로 코드를 대신합니다.

https://blog.naver.com/carnelian34/221561892307

 

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

 

[기초-반복실행구조] 0 입력될 때까지 무한 출력하기2(설명)

C언어기초100제v1.2 : @컴퓨터과학사랑, 전국 정보(컴퓨터)교사 커뮤니티/연구회 - 학교 정보(컴퓨터)선생님들과 함께 수업/방과후학습/동아리활동 등을 통해 재미있게 배워보세요.  - 모든 내용

codeup.kr

 

69. 콘솔에서 입력규정에 맞게 정수를 입력받고 출력하라

입력 규정:

1Line에서 정수 한개가 입력된다. ( 1 ~ )

2Line에서 공백을 두고 1Line의 정수의 갯수 만큼 정수가 입력된다.

입력 범위 : -2147483648 ~ 2147483647

입력 예시

5

1 2 3 4 5

출력 예시

1

2

3

4

5

JAVA 

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int count = scan.nextInt();
		int [] numbers = new int[count];
		for (int i = 0; i < numbers.length; i++) {
			numbers[i] = scan.nextInt();
		}
		scan.close();
		
		for (int number : numbers) {
			System.out.println(number);
		}
		
	}
}

 

 

Swfit 4.2

import Foundation

let firstLine = readLine()
if firstLine != nil, let count = Int(firstLine!) {
    let secondLine = readLine()
    if secondLine != nil {
        var values = [Int]()
        for sub in secondLine!.split(separator: " ") {
            if let temp = Int(sub) { values.append(temp) }
        }
        if values.count == count {
            for value in values {
                print(value)
            }
        } else {
            print("ERROR : values.count")
        }
    }
}

 

 

 

이번 문제도 저번문제와 마찬가지로 goto문 사용에 대한 문제였습니다만

이를 제맘대로 배열의 갯수를 입력받아 배열만들기로 변경하고 풀었습니다.

이렇게 했더니 이전에 있던 입출력하는 문제랑 별 다르지 않네요;;

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

 

 

68. 콘솔에서 0이 입력 될 때 까지 계속 정수를 입력받고 출력하기

입력 범위 : -2147483648 ~ 2147483647

입력 예시

7 4 2 3 0 1 5 6 9 10 8

출력 예시

7

4

2

3

0

JAVA

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int value = -1;
		while(value != 0 ) {
			value = scan.nextInt();
			System.out.println(value);
		}
		scan.close();		
	}
}

Swift 4.2

import Foundation

func searchAndPrint(line:String) -> Bool{
    var flag = true //0 이 입력되면 false
    let valueArray = line.split(separator: " ")
    for value in valueArray {
        if let temp = Int(value) {
            print(temp)
            if temp == 0 {
                flag = false
                break;
            }
        }
    }
    return flag //true : 0 값이 존재, false : 0 값이 없음
}

var flag = true //0 이 입력되거나 nil이 입력됬을경우 false
while flag {
    let line = readLine()
    if line != nil {
        flag = searchAndPrint(line: line!)
    } else {
        flag = false
    }
}

이번문제는 스위프트쪽에서 조금 문제가 있습니다.

더 찾아보면 사실 있을지도 모릅니다만 표준 입력장치로 정수입력을 받는 함수가 따로 안보이네요.

readLine()으로는 그냥 입력받는다고 해도 이게 하나만 입력될지 여러개가 동시에 입력될지 모르기에

처리해주는걸 저렇게 해줘봤습니다.break문은 써진곳의 반복문을 탈출하는거에요 나중에 이걸쓰라는 문제자체가 나올거같긴한데

그냥 이야기해봤습니다.

이 글들이 스위프트 입문하시는 분들께 도움이 됐으면 좋겠네요.

한국자료는 그렇게 많이 안보여서;;;

추가 -

원래부터가 c언어 학습용으로 만들어진 문제라 c언어 문법 문제들입니다.

이번은 문제는 goto문 사용에 대한 문제인데

이걸 while문으로 대체했습니다.

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

67. 콘솔에서 한 개의 정수를 입력받고, 정수에 따른 문자열을 출력하라.

입력 범위 : 1~12

월 : 계절​

12,1,2 : winter

3,4,5 : spring

6,7,8 : summer

9,10,11 : fall

입력 예시

1

출력 예시

winter

JAVA

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int value = scan.nextInt();
		scan.close();
		
		switch (value) {
		case 12: case 1: case 2:
			System.out.println("winter");
			break;
		case 3:
		case 4:
		case 5:
			System.out.println("spring");
			break;
		case 6: case 7: case 8:
			System.out.println("summer");
			break;
		case 9: case 10: case 11:
			System.out.println("fall");
			break;
		default:
			System.out.println("what?");
			break;
		}
	}
}

Swift 4.2

import Foundation

let line = readLine()
if line != nil {
    if let value = Int(line!) {
        switch value {
        case 12,1,2: print("winter")
        case 3,4,5: print("spring")
        case 6,7,8: print("summer")
        case 9,10,11: print("fall")
        default : print("what?")
        }
    }
}

이전문제였나, 스위치문에 break;를 넣지않으면 안되요! 라고 한게

사실 저렇게 이어서 동작을 하기에(범위지정 처럼 동작) 그런말을 했었습니다.

추가로

문제에서 JAVA 쪽을

case 3:

case 4:

case 5:

~~솰랴솰랴 break;

라고 써서 할슁ㅆ어염! 라고 써있어서 사실 이건 한줄로 쓰는것과 같다 라는걸 보여주려고 저렇게 해봤습니다

한줄로쓰는게 더 보기좋잖아요?

스위프트에서는 저렇게 하나하나 지정할수 있습니다

스위프트 짱짱!

break는 또 뭐냐 귀찮게 라고 하시는 우리 쿨한 스위프트누님

아 선택 실행구조의 마지막 문제였네요.

오늘은 한가하니 쭉쭉 진도를 나아가서 100제를 빨리 끝내고 다른거 포스팅하고싶네요

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

66. 콘솔에서 한 개의 문자를 입력받고, 문자에 따른 문자열을 출력하라.

입력 범위: a ~ Z

​평가: 내용

D : slowly~

C : run!

B : good!!

A : best!!!

나머지문자들 : what?

입력 예시

A

출력 예시

best!!!

JAVA

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
	    char value = scan.next().charAt(0);
	    switch (value) {
		case 'A':
			System.out.println("best!!!");
			break;
		case 'B':
			System.out.println("good!!");
			break;
		case 'C':
			System.out.println("run!");
			break;
		case 'D':
			System.out.println("slowly~");
			break;
		default:
			System.out.println("what?");
			break;
		}
	}
}

 

Swift 4.2

import Foundation

let line = readLine()
if line != nil {
    if let value = line!.first {
        switch value {
        case "A": print("best!!!")
        case "B": print("good!!")
        case "C": print("run!")
        case "D": print("slowly~")
        default : print("what?")
        }
    }
}

 

이번엔 스위치문을 써보는게 문제입니다.

자바에서는 break를 잊지않아야합니다.

스위프트는 편하지만요.

추가로 문자하나만 입력받는걸 한줄로

scan.next().charAt(0);

이렇게 할 수 있었네요 .

이전엔 받은 라인을 문자배열로 바꾸고 그곳이 0를 반환받아서 문제풀었던거같은데 ㅋㅋㅋ

아 의미는 같습니다.

깔끔하게 할 수 있으면 되도록 깔끔하게 적고싶네요

이만 퇴근준비를 해야겠습니다.

아쉽게도 선택실행구조 시리즈 마지막이 아니군요.

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

65. 콘솔에서 한 개의 정수를 입력받고, 점수 평가를 출력하라

입력 범위: 0~100

점수범위 : 평가

90 ~ 100 : A

70 ~ 89 : B

40 ~ 69 : C

0 ~ 39 : D

입력 예시

90

출력 예시

A

JAVA

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int value = scan.nextInt();
		char result = 'D';
		if (value >= 90) {
			result = 'A';
		} else if (value >= 70) {
			result = 'B';
		} else if (value >= 40) {
			result = 'C';
		} else {
			result = 'D';
		}
		System.out.println(result);
	}
}

 

Swift 4.2

import Foundation

let line = readLine()
if line != nil {
    if let value = Int(line!) {
        switch value {
        case 90...100 : print("A")
        case 70...89  : print("B")
        case 40...69  : print("C")
        case 0...39   : print("D")
        default:break
        }
    }
}

문제 의도는 else if 의 사용이지만

자바에서 했기에 스위프트에서는 의도고 나발이고 하고싶은데로 해봤습니다.

스위프트4.2에선 무려! 저런식으로! 범위가! 케이스문으로! 들어가기도합니다.

실 성능은 어떻게 나오지는 체크안해봐서 모릅니다.

참고로 두 수 사이의 ... 는 이상 이하, 를 나타냅니다.

..< 는 이상 미만

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

 

 

+ Recent posts