1038 : [기초-산술연산] 정수 두 개 입력받아 합 출력하기1 with Swift

35. 콘솔에서 두 개의 정수를 입력받아 합을 출력하라.

입력 : 한 줄에 공백으로 두개의 정수가 구분되어 입력된다. 입력되는 정수의 범위는 다음과 같다.

입력 범위 : -1073741824 ~ 1073741824

입력 예시

123 -123

출력 예시

0

JAVA

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int value0 = scan.nextInt();
		int value1 = scan.nextInt();
		scan.close();
		System.out.println(value0 + value1);
	}
}

 

 

Swift 4.2

import Foundation

let line = readLine()
if line != nil {
    let valueArray = line!.split(separator: " ")
    if valueArray.count == 2 {
        if let value0 = Int(valueArray[0]), let value1 = Int(valueArray[1]) {
            print((value0 + value1))
        }
    }
}

 

 

 

이번문제는 읽자마자 아! 많이 하는 실수인 계산시의 중간값이 범위를 오버하는걸 방지하는 문제이구나!

라고 생각했는데 밑의 단 범위는 이것이다 라고 바로 부정당했네요.

잠깐 이야기하자면

int 의 범위내의 입력값과

int의 범위 내의 출력값이 나온다고해도

그 중간값이 int의 범위내에 있다고 생각 할 수 없습니다.

중간식이 단순 연산이라면 금방 눈치를 채겠지만 막 복잡한 식이 들어가면 어느순간에 범위를 넘어서 버릴수도 있습니다.

물론 이러한 문제는 금방 디버깅시에 발견가능하지만 중간값을 생각안하면 디버깅툴에서 알려주는 라인의 오류를 이해를 못할 수 도 있기에

잠깐 이야기 해봤습니다.

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

 

[기초-산술연산] 정수 두 개 입력받아 합 출력하기1

정수 2개를 입력받아 합을 출력하는 프로그램을 작성해보자. (단, 입력되는 정수는 -1073741824 ~ 1073741824 이다.)

codeup.kr

 

 

 

 

 

 

 

 

1039 : [기초-산술연산] 정수 두 개 입력받아 합 출력하기2 with Swift

36.콘솔에서 정수 두 개를 입력받아 합을 출력하라. 단 입력 되는 정수의 범위는 다음과 같다.

입력 범위 : −2147483648 ∼ 2147483647

입력: 두 개의 정수가 공백으로 구분되어 한 줄에 입력된다.

입력 예시

2147483647 2147483647

출력 예시

4294967294

JAVA

import java.util.Scanner;

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

 

 

 

Swift 4.2

import Foundation

let line = readLine()
if line != nil {
    let valueArray = line!.split(separator: " ")
    if valueArray.count == 2 {
        if let value0 = Int(valueArray[0]), let value1 = Int(valueArray[1]) {
            print( value0 + value1 )
        }
    }
}

 

 

 

스위프트가 이전 모든 값이 int범위였을때랑 같은 소스다! 잘못한거 아니냐! 라고 말할수 있겠으나

사실 스위프트의 기본 Int 범위는 상당히 넓다.

Swift 4.2 값 범위 - 소스

print("Int       : \(Int.min) ~ \(Int.max)")
print("Int8      : \(Int8.min) ~ \(Int8.max)")
print("Int16     : \(Int16.min) ~ \(Int16.max)")
print("Int32     : \(Int32.min) ~ \(Int32.max)")
print("Int64     : \(Int64.min) ~ \(Int64.max)")
print("UInt      : \(UInt.min) ~ \(UInt.max)")
print("UInt8     : \(UInt8.min) ~ \(UInt8.max)")
print("UInt16    : \(UInt16.min) ~ \(UInt16.max)")
print("UInt32    : \(UInt32.min) ~ \(UInt32.max)")
print("UInt64    : \(UInt64.min) ~ \(UInt64.max)")
print("CLong     : \(CLong.min) ~ \(CLong.max)")
print("CLongLong : \(CLongLong.min) ~ \(CLongLong.max)")
print("ULONG     : \(ULONG.min) ~ \(ULONG.max)")

 

 

Swift 4.2 값 범위 - 결과

Int : -9223372036854775808 ~ 9223372036854775807

Int8 : -128 ~ 127

Int16 : -32768 ~ 32767

Int32 : -2147483648 ~ 2147483647

Int64 : -9223372036854775808 ~ 9223372036854775807

UInt : 0 ~ 18446744073709551615

UInt8 : 0 ~ 255

UInt16 : 0 ~ 65535

UInt32 : 0 ~ 4294967295

UInt64 : 0 ~ 18446744073709551615

CLong : -9223372036854775808 ~ 9223372036854775807

CLongLong : -9223372036854775808 ~ 9223372036854775807

ULONG : 0 ~ 4294967295

대부분 보면 결국 Int32 아니면 Int64 범위입니다.

Swift 4.2에선 기본Int 범위가 Int64범위라 이번 문제에선 결국 중간값에대한 형을 변환안해줘되 되요

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

 

[기초-산술연산] 정수 두 개 입력받아 합 출력하기2

+ 연산자를 사용하면 된다. 단, 계산된 결과가 int 데이터형의 표현 범위를 넘어가기 때문에 다른 데이터형을 사용해야 한다. [주의] int 데이터형은 %d로 입출력하고, long long int 데이터형은 %lld로 입출력한다.

codeup.kr

 

 

1040 : [기초-산술연산] 정수 한 개 입력받아 부호 바꿔 출력하기 with Swift

37. 콘솔에서 한 개의 정수를 입력받고 부호를 바꿔 출력 하라.

입력 범위: -2147483647 ~ 2147483647

입력 예시:

-1

출력 예시:

1

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();
		System.out.println(-value);
	}
}

 

 

Swift 4.2

import Foundation

let line = readLine()
if line != nil {
    if let value = Int(line!) {
        print(-value)
    }
}

 

 

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

 

[기초-산술연산] 정수 한 개 입력받아 부호 바꿔 출력하기

단항 연산자인 -(negative)를 변수 앞에 붙이면 부호가 반대로 바뀌어 계산된다. [예시] int a; scanf("%d", &a); printf("%d", -a);

codeup.kr

 

+ Recent posts