47. 콘솔에서 두 정수(a,b)를 입력 받아 a와b가 같으면 1, 같지않으면 0 을 출력하라.

입력 : 1Line 으로 a,b가 공백을 두고 입력된다.

입력 범위 : -2147483648 ~ 2147483647

입력 예시

9 1

출력 예시

0

 

JAVA

import java.util.Scanner;

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

 

Swift 4.2

import Foundation

let line = readLine()
if line != nil {
    let split = line!.split(separator: " ")
    if split.count == 2, let a = Int(split[0]), let b = Int(split[1]) {
        print(String.init(format: "%d", (a==b)))
    }
}

 

 

이전 문제에서 부호만 바꾸었습니다.

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

 

[기초-비교연산] 두 정수 입력받아 비교하기2(설명)

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

codeup.kr

 

 

 

 

 

48. 콘솔에서 두 정수(a,b)를 입력 받아 b가 a보다 크거나 같으면1, b가 a보다 작으면 0을 추렭하라

입력 : 1Line 으로 a,b가 공백을 두고 입력된다.

입력 범위 : -2147483648 ~ 2147483647

입력 예시

0 -1

출력 예시

0

 

JAVA

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int flagValue = scan.nextInt();
		if(flagValue <= scan.nextInt()) {
			System.out.println(1);
		} else {
			System.out.println(0);
		}
        scan.close();
	}
}

 

 

Swift 4.2

import Foundation

let line = readLine()
if line != nil {
    let split = line!.split(separator: " ")
    if split.count == 2, let a = Int(split[0]), let b = Int(split[1]) {
        print(String.init(format: "%d", (a<=b)))
    }
}

 

 

 

이전 문제의 소스에서 부호만 변경했습니다.

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

 

[기초-비교연산] 두 정수 입력받아 비교하기3(설명)

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

codeup.kr

 

 

 

 

 

 

 

 

49. 콘솔에서 두 정수(a,b)를 입력 받아 두 값이 다르면 1 같으면 0을 출력하라.

입력 : 1Line 으로 a,b가 공백을 두고 입력된다.

입력 범위 : -2147483648 ~ 2147483647

입력 예시

0 1

출력 예시

1

 

Java

import java.util.Scanner;

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

 

 

Swift 4.2

import Foundation

let line = readLine()
if line != nil {
    let split = line!.split(separator: " ")
    if split.count == 2, let a = Int(split[0]), let b = Int(split[1]) {
        print(String.init(format: "%d", (a != b)))
    }
}

 

 

 

 

이전 문제에서 부호만 변경했습니다.

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

 

[기초-비교연산] 두 정수 입력받아 비교하기4(설명)

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

codeup.kr

 

 

44. 콘솔에서 정수 한 개를 입력받아 그 두배를 출력하라.

입력 범위 : -1073741824 ~ 1073741823

입력 예시

1024

출력 예시

2048

Java

import java.util.Scanner;

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

Swift 4.2

import Foundation

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

 

시프트 연산 오랜만에 하네요.

솔직히 잘 기억도 안납니다.

저는 국딩이 아닙니다. 제 나이때 주변 애들은 전부 정보교육?인가 해서 한참 교과목으로 컴퓨터를 배우던때가 있습니다.

아 그리운 플로피디스크여~

아무튼 그때 교산지 강산지, 선생님의 왈 " 컴퓨터는 덧셈밖에못하는 바보야! "

그리고 시간이 흘러

저의 왈 " 선생님! 바보! "

컴퓨터는 곱셈연산, 그러니까 2진수의 시프트 연산으로 사람이 하는 곱셈과 유사한일을 할 수 있습니다.

주의점은 나열된 1과 0을 그대로 오른쪽 왼쪽으로 움직이는거라 예상치 못한 동작을 하기도합니다.

뭐 이런건 따로 검색해보세요

꽤나 덧셈 뺄셈 곱셈 나눗셈 연산을 재미지게 합니다.

기본적으로 C를 기반으로 작성된 문제이기때문에 이대로 가다보면 매크로연산정의하는 문제도 나오지않을까합니다.

아 그런거 싫은데

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

 

[기초-비트시프트연산] 정수 1개 입력받아 2배 곱해 출력하기(설명)

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

codeup.kr

 

 

45. 콘솔에서 정수 두 개( a, b )를 입력받아 a 의 2^b 배를 출력하라

입력 : 정수 두 개가 공백을 두고 1line으로 입력된다. ( 입력 범위: a >= 0, b <= 10 )

입력 예시

2 3

출력 예시

16

Java

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int base = scan.nextInt();
		int exp = scan.nextInt();
        scan.close();
		if(base >= 0 && exp <= 10 ) {
			System.out.println(base << exp);
		}
	}
}

 

Swift

import Foundation

let line = readLine()
if line != nil {
    let split = line!.split(separator: " ")
    if split.count == 2, let base = Int(split[0]), let exp = Int(split[1]) {
        if base >= 0 , exp <= 10 {
            print(base << exp)
        }
    }
}

 

 

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

 

[기초-비트시프트연산] 한 번에 2의 거듭제곱 배로 출력하기(설명)

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

codeup.kr

 

 

 

46. 콘솔에서 두 정수(a,b)를 입력 받아 a가 b보다 크면 1, 그외 라면 0 을 출력하라.

입력 : 1Line 으로 a,b가 공백을 두고 입력된다.

입력 범위 : -2147483648 ~ 2147483647

입력 예시

9 1

출력 예시

1

JAVA

import java.util.Scanner;

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

Swift 4.2

import Foundation

let line = readLine()
if line != nil {
    let split = line!.split(separator: " ")
    if split.count == 2, let a = Int(split[0]), let b = Int(split[1]) {
        print(String.init(format: "%d", (a>b)))
    }
}

 

 

 

bool형 변수는 사실 0 과 1 이다! 라는걸 보여주려는 문제인거같은데

JAVA에서 bool을 바로 정수형으로 보여주기가 어찌해야할지 모르겠어서 결국그냥 1,0을 써서 출력했네요.

swift 는 c베이스로 만들어진거라 바로 bool을 int로 변형이 가능했습니다.

 

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

 

[기초-비교연산] 두 정수 입력받아 비교하기1(설명)

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

codeup.kr

 

 

 

 

 

 

 

 

기존 네이버 블로그에 있던내용을 옴기는 작업은 가장 먼저 하려고하다가 중간에 멈추고 미루고 미뤄

어느새 20년도 초여름에 다가왔습니다.;;

 

새롭게 시작했던 키보드만드는것도 어느정도 완결이 보여 뭐할까 고민하다가 

 

다시금 포스트 옴기기의 진행도를 늘려보려합니다.

1044 : [기초-산술연산] 정수 한 개 입력받아 1 더해 출력하기 with Swift

41. 콘솔에서 정수를 한 개 입력 받아 1을 더해 출력하라.

입력 범위: -2147483648 ~ 2147483647

입력 예시

2147483647

출력 에시

2147483648

JAVA

import java.util.Scanner;

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

 

 

Swift 4.2

import Foundation

extension Int {
    static prefix func ++(_ x: inout Int) -> Int {
        x += 1
        return x
    }
}
let line = readLine()
if line != nil {
    if var value = Int(line!) {
        print(++value)
    }
}

 

 

이번 문제는 증감연산자를 사용해보는게 목적인 문제인듯하여

굳이 ++을 사용해봤습니다.

switf 4.2에선 해당 연사자가 디폴트로 존재하지 않기때문에 전위 증감 연산자로 Int에 한해서 사용하도록 추가해봤습니다.

솔직히 필요한가 싶기도 해요

사용후 증가 사용전 증가 뭐그런거 헷갈리기도하고...

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

 

[기초-산술연산] 정수 한 개 입력받아 1 더해 출력하기

어떤 변수(a)에 값을 저장한 후  a+1 의 값을 출력할 수도 있고, ++a 후 출력할 수도 있다. ++a, --a, a++, a-- 와 같이 어떤 변수의 앞이나 뒤에 붙여 변수에 저장되어 있는 값을 1씩 더하거나 빼주는 연산자를 증감연산자라고 한다. 증감연산자를 변수 앞에 붙이면 그 변수를 사용하기 전에 증감을 먼저 수행하고, 증감연산자를 변수 뒤에 붙이면 일단 변수에 저장되어 있는 값을 먼저 사용하고 난 후에 증감을 수행한다.

codeup.kr

 

 

 

 

1045 : [기초-산술연산] 정수 두 개 입력받아 자동 계산하기 with Swift

42. 콘솔에서 정수 두 개(a,b)를 입력 받아 합,차,곱, 나머지, 나눈값을 출력하라.

입력 :

0 ~ 2147483647, b != 0

출력 :

1line : 두 수의 합

2line: 두 수의 차 (a - b)

3line: 두 수 의 곱

4line: a를 b로 나눈 몫

5line: a를 b로 나눈 나머지

6line: a를 b로 나눈 값( 실수, 소수점 셋째 자리에서 반올림해 둘째 자리까지 출력)

입력 예시

10 3

출력 예시

13

7

30

3

1

3.33

Java

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		long value0 = scan.nextInt();
		long value1 = scan.nextInt();
        scan.close();
		System.out.println(value0 + value1);
		System.out.println(value0 - value1);
		System.out.println(value0 * value1);
		System.out.println(value0 / value1);
		System.out.println(value0 % value1);
		double printValue = ((double) value0) / value1;
		System.out.println(String.format("%.2f", printValue));
	}
}

 

 

Swift 4.2

import Foundation

let line = readLine()
if line != nil {
    let values = line!.split(separator: " ")
    if values.count == 2 {
        if let value0 = Int(values[0]), let value1 = Int(values[1]) {
            print(value0 + value1)
            print(value0 - value1)
            print(value0 * value1)
            print(value0 / value1)
            print(value0 % value1)
            let floatValue = Float(value0) / Float(value1)
            print(String.init(format: "%.2f", floatValue))
        }
    }
}

 

 

 

휴일에 사무실에서 이게 뭐하는짓인지..

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

 

[기초-산술연산] 정수 두 개 입력받아 자동 계산하기

정수 두 개(a, b)를 입력받아 합, 차, 곱, 몫, 나머지, 나눈값을 자동으로 계산해보자. (단 입력되는 정수 a, b의 범위는 0 ~ 2147483647이고, b는 0이 아니다.)

codeup.kr

 

 

 

1046 : [기초-산술연산] 정수 세 개 입력받아 합과 평균 출력하기 with Swift

43.콘솔에서 세 개의 정수를 입력받아 합과 평균을 출력하라.

입력 : 1line으로 공백으로 구분되어 3개의 정수가 입력됨 (입력 범위 : -2147483648 ~ -2147483647)

출력:

1line : 세 정수의 합

2line : 세 정수의 평균( 실수, 소수점 둘째 자리에서 반올림하여 첫째 자리까지 출력 )

입력 예시

1 2 3

출력 예시

6

2.0

JAVA

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int [] values = new int [3];
		for (int i = 0; i < values.length; i++) {
			values[i] = scan.nextInt();
		}
        scan.close();
		if(values.length > 2) {
			long total = values[0] + values[1] + values[2];
			
			double avg = total / 3.0;
			System.out.println(total);
			System.out.println(String.format("%.1f", avg));
		}
	}
}

 

 

Swift 4.2

import Foundation

let line = readLine()
if line != nil {
    let split = line!.split(separator: " ")
    if split.count == 3 {
        var values = [Int]()
        for s in split {
            if let value = Int(s) {
                values.append(value)
            }
        }
        if values.count == 3 {
            let total = values[0] + values[1] + values[2]
            let avg = Float(total) / 3.0
            print(total)
            print(String.init(format: "%.1f", avg))
        }
    }
}

 

 

뭐.. 이런곳에서는 의미는 없습니다만

보통 배열이라던가 반복이라던가 할때 직접적으로 숫자를 써서 위치를 입력받는건 위험한 일입니다.

최대한 자동으로되게 혹은 그값이 정말로 존재하는지에대해 검사를 해야합니다만

이런문제에선 의미가 없지요.

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

 

[기초-산술연산] 정수 세 개 입력받아 합과 평균 출력하기

정수 세 개를 입력받아 합과 평균을 출력하는 프로그램을 작성해보자. (단, -2147483648 ~ 2147483647)

codeup.kr

 

1041 : [기초-산술연산] 문자 한 개 입력받아 다음 문자 출력하기 with Swift

38. 콘솔에서 영문자 한 개를 입력받아, 입력된 문자의 아스키코드값의 다음에 해당하는 문자를 출력하라.

입력 예시

a

출력 예시

b

JAVA

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		String line = scan.nextLine();
        scan.close();
		char [] charArray = line.toCharArray();
		if(charArray.length > 0) {
			System.out.println((char) (charArray[0] + 1));
		}
	}
}

 

 

Swift 4.2

import Foundation

let line = readLine()
if line != nil {
    if let printValue = line!.first {
        let unicodes = printValue.unicodeScalars
        for uni in unicodes {
            if let printValue = Unicode.Scalar(uni.value + 1) {
                print(printValue)
            }
        }
    }
}

 

 

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

 

[기초-산술연산] 문자 한 개 입력받아 다음 문자 출력하기

영문자 한 개를 입력받아, 그 다음 문자를 출력하는 프로그램을 작성해보자. 영문자 '$A$'의 다음 문자는 '$B$'이고, 문자 '$0$'의 다음 문자는 '$1$'이다.

codeup.kr

 

 

 

 

 

 

 

1042 : [기초-산술연산] 정수 두 개 입력받아 나눈 몫 출력하기 with Swift

39. 콘솔에서 정수 두 개(a,b)를 입력 받아 a를 b로 나눈 몫을 출력하라.

입력 범위: 0 ~ 2147483647

입력 예시

1 3

출력 예시

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();
		if(value1 > 0) {
			System.out.println(value0/value1);
		}
	}
}

 

 

Swift 4.2

import Foundation

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

 

 

 

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

 

[기초-산술연산] 정수 두 개 입력받아 나눈 몫 출력하기

C언어에서 a/b 연산의 결과는 a를 b로 나눈 몫이 계산된다. 실수/정수,  정수/실수,  (float)정수/정수,  정수/(float)정수  의 연산은 나눈 결과가 실수로 계산된다. (float)(정수/정수)는 정수/정수의 결과인 정수를 실수형(float)로 바꾸는 것으로, 정수가 실수 형태로 변환되는 것이니 주의한다. 정수/실수... 에서 계산 결과가 실수형으로 바뀌는 것과 같이 계산 결과의 데이터형이 자동으로 바뀌는 것을 묵시적 (데이터)형 변환이

codeup.kr

 

 

 

 

 

 

1043 : [기초-산술연산] 정수 두 개 입력받아 나눈 나머지 출력하기 with Swift

40. 콘솔에서 정수 두개(a,b)를 입력 받아 a를 b로 나눈 나머지를 출력하라.

입력범위: 0 ~ 2147483647

입력 예시

1 3

출력 예시

1

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();
		if(value1 > 0) {
			System.out.println(value0%value1);
		}
	}
}

 

 

Swift 4.2

import Foundation

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

 

 

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

 

[기초-산술연산] 정수 두 개 입력받아 나눈 나머지 출력하기

정수 두 개(a, b) 를 입력받아 a를 b로 나눈 나머지를 출력하는 프로그램을 작성해보자. (단, 두 개의 정수 a, b의 범위는 0 ~ 2147483647이고, b는 0이 아니다.)

codeup.kr

 

 

 

 

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

 

1034 : [기초-출력변환] 8진 정수 한 개 입력받아 10진수로 출력하기 with Swift

31. 콘솔에서 8진수를 한 개 입력받아 10진수로 출력하라.

입력 예시

13

출력 예시

11

JAVA

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		String line = scan.nextLine();
		scan.close();
		String clean = line.trim();
		System.out.println(trans8to10(clean));
	}
	
	static public int trans8to10(String str8Value) {
		if(str8Value.length() < 1) {return -1; }
		if(!valueCheck(str8Value)) {
			return -1;
		} else {
			char [] numberArray = str8Value.toCharArray();
			int p = numberArray.length - 1;
			
			int result = 0;
			for (char number : numberArray) {
				int val = Integer.valueOf(String.valueOf(number));
				result += val * ((int) Math.pow(8, p));
				p--;
			}
			return result;
		}	
	}
	
	static public boolean valueCheck(String target) {
		try {
			Integer.valueOf(target);
			return true;
		} catch (Exception e) {
			System.out.println("Error : Main.valueCheck() ->" + e.getLocalizedMessage());
			return false;
		}
	}
}

 

 

Swift 4.2 

import Foundation

func trans8to10(strValue:String) -> Int{
    guard Int(strValue) != nil else { return -1 }
    
    var result = 0;
    var p:Double = Double(strValue.count - 1)
    for number in strValue {
        if let val = Int(String(number)) {
            result += val * Int(pow(Double(8), p))
        }
        p -= 1;
    }
    return result
}

let line = readLine()
if line != nil {
    print(trans8to10(strValue: line!))
}

좀 쓸모없는게 들어간거같고 비효율적으로 느껴집니다.

그렇지만 더 생각하기 귀찮아서 넘어가렵니다.

요즘 딱히 일이없어 잔심부름 같은일 외에 기초100문제 포스팅하다보니 어느새 1/3 지점에 도착해버렸습니다.

이번에도 하다가 그만두고 먼 미래로 남겨두겠지 했는데 페이스를 보니 다음 프로젝트가 저한테 할당되기전까지 놀랍게도 100문제까지 갈지도 모르겠다는 생각이 드네요.

ios13 발표되고 공부해야할게 늘었는데 공부하기 싫어서 이런거난 하고있으니

멀리서 저를 내려다보면 엄청 한심해 보일거같습니다.

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

 

[기초-출력변환] 8진 정수 한 개 입력받아 10진수로 출력하기

int n; scanf("%o", &n); printf("%d", n); (한편, C언어에서 소스 코드 작성시 0으로 시작하는 수는 8진수로 인식된다.)

codeup.kr

 

 

 

 

1035 : [기초-출력변환] 16진 정수 한 개 입력받아 8진수로 출력하기 with Swift

32. 콘솔에서 16진수 정수 한 개를 입력받고 8진수로 바꾸어 출력하라.

입력 예시

f

출력 예시

17

JAVA

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		String line = scan.nextLine();
		scan.close();
		String clean = line.trim();
		System.out.println(trans16to8(clean));
	}
	
	static public String trans16to8(String str16Value) {
		try {
			int converted = Integer.valueOf(str16Value, 16);
			return String.format("%o", converted);
		} catch (Exception e) {
			System.out.println("Err : trans16to8 -> " + e.getLocalizedMessage());
			return "";
		}
	}
}

 

Swift 4.2

 

import Foundation

func octalTrans(value:Int) -> [Int] {
    var flag = value
    var result = [Int]()
    
    while flag >= 8 {
        result.append(flag % 8)
        flag = flag / 8
        if flag < 8 { result.append(flag) }
    }
    
    result.reverse()
    return result
}

func alpaTransNumber(alpa:Character) -> Int? {
    switch alpa {
    case "a": return 10
    case "b": return 11
    case "c": return 12
    case "d": return 13
    case "e": return 14
    case "f": return 15
    default: return nil
    }
}

func trans16to10(strValue:String) -> Int?{
    let letters = CharacterSet.letters
    var result = 0;
    var p:Double = Double(strValue.count - 1)
    for number in strValue.unicodeScalars {
        if letters.contains(number) {
            if let val = alpaTransNumber(alpa: Character(number)) {
                result += val * Int(pow(Double(16), p))
            } else {
                print("Err : trans16to10 -> 잘못된 값이 입력됨")
                return nil
            }
        } else {
            if let val = Int(String(number)) {
                result += val * Int(pow(Double(16), p))
            } else {
                print("Err : trans16to10 -> 잘못된 값이 입력됨")
                return nil
            }
        }
        p -= 1;
    }
    return result
}

let line = readLine()
if line != nil {
    if let value = trans16to10(strValue: line!) {
        var printValue = String()
        for number in octalTrans(value: value) {
            printValue += String(number)
        }
        print(printValue)
    }
}

자바는 Integer.valueOf()에 저렇게 변환하는 기능이 있는지 몰랐네요 ㅋㅋㅋ

이전 소스도 다 수정하고싶지만 귀찮으니 그냥 남겨둡니다.

놀다가 우연하게 발견했네요. ㅎㅎ

그렇게 자바쪽은 코드가 확 줄었습니다.

valueOf에 진수 변환기능이 있는지 모르는분들을 위해 잠깐 끄적여 보자면

위 코드에서

int converted = Integer.valueOf(str16Value, 16);

에서 사용했는데,

str16Value라는 문자열이 사실 16진수야! 그러니 10진수로 바꿔주렴

라는 기능이 있다고하네요.

지금도 좀 헷갈려서 쓸날이 올지는 모르겠습니다.

자바를 잘 안만지기도 하니까요.

스위프트 코드는 이전 문제들 코드를 긁어와서 짜집기했습니다.

다시 짜기 귀찮아서요.

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

 

[기초-출력변환] 16진 정수 한 개 입력받아 8진수로 출력하기

int n; scanf("%x", &n); //소문자로 16진수 입력 printf("%o", n); 한편, C언어에서 소스 코드 작성시 0x으로 시작하는 수는 16진수로 인식된다. 또한 소스코드 내에서 //로 시작하면 1줄 설명을 넣을 수 있다. 여러 줄을 설명(주석) 처리할 경우 /* 로 시작해 */로 끝나는 사이에 작성할 수 있다.

codeup.kr

 

 

 

 

1036 : [기초-출력변환] 영문자 한 개 입력받아 10진수로 출력하기 with Swift

33. 콘솔에서 영문자 한 개 를 입력받아 영문자의 아스키 코드 값을 출력해라.

입력 예시

A

출력 예시

65

JAVA

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		String line = scan.nextLine();
		scan.close();
		byte[] bytes = line.getBytes();
		for (byte b : bytes) {
			System.out.println(b);
		}
	}
}

 

 

Swift 4.2

import Foundation

let line = readLine()
if line != nil {
    for scalar in line!.trimmingCharacters(in: .whitespacesAndNewlines).unicodeScalars {
        print(scalar.value)
    }
}

 

 

https://codeup.kr/problem.php?id=1036\

 

[기초-출력변환] 영문자 한 개 입력받아 10진수로 출력하기

아스키(ASCII, 미국표준코드, American Standard Code for Information Interchange) 코드표는 영문자, 특수문자 등을 사용할 때 사용하는 표준 코드이다. 컴퓨터로 저장되는 모든 데이터는 2진 정수화되어 저장되는데, 영문자와 특수기호 등을 저장하는 방법으로 아스키코드를 일반적으로 사용한다. 예를 들어 영문 대문자 'A'는 10진수 65에 해당하는 2진수 값으로 저장된다.

codeup.kr

 

 

 

 

1037 : [기초-출력변환] 정수 한 개 입력받아 아스키 문자로 출력하기 with Swift

34. 콘솔에서 10진 정수 한 개(0~255)를 입력 받아 아스키 문자로 출력해보라.

입력 예시

65

출력 예시

A

JAVA

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int ascii_num = scan.nextInt();
		scan.close();
		System.out.println(String.format("%c", ascii_num));
	}
}

 

Swift 4.2

import Foundation

let line = readLine()
if line != nil {
    if let value = Int(line!){
        if let uni = Unicode.Scalar(value) {
            print(Character.init(uni))
        }
    }
}

 

문뜩 기초100제를 swift로 할만한 이유가 있을까? 라는 의문이 들었습니다.

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

 

[기초-출력변환] 정수 한 개 입력받아 아스키 문자로 출력하기

10진 정수 한 개를 입력받아 아스키문자로 출력하는 프로그램을 작성해보자. (단, 0 ~ 255 범위의 정수만 입력된다.)

codeup.kr

 

 

1031 : [기초-출력변환] 10진수 한 개 입력받아 8진수로 출력하기 with Swift

28. 콘솔에서 10진수를 입력받아 8진수로 출력하시오. ( 입력 범위 int )

입력 예시

10

출력 예시

12

JAVA

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int value = scan.nextInt();
		System.out.println(Integer.toOctalString(value));
	}
}

 

 

Swift 4.2

import Foundation

func octalTrans(value:Int) -> [Int] {
    var flag = value
    var result = [Int]()
    
    while flag >= 8 {
        result.append(flag % 8)
        flag = flag / 8
        if flag < 8 { result.append(flag) }
    }
    
    result.reverse()
    return result
}

let line = readLine()
//let testValue = [124,235,65767,453,434365,57,24]

if line != nil {
    if let value = Int(line!){
        let octalArray = octalTrans(value: value)
        var printValue = String()
        for o in octalArray {
            printValue += "\(o)"
        }
        print(printValue)
    }
}

 

 

java에서는 손쉽게 진수 변환하는게 있는데 swift는 잘안보이네요.

아마 있을거라 생각하는데 찾아도 잘안나와서 그냥 만들어봤습니다.

테스트는 몇개해봤는데 되긴하는데 안될지도 뭔가 안되는게 있을지도 몰라요...

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

 

[기초-출력변환] 10진수 한 개 입력받아 8진수로 출력하기

%d(10진수 형태)로 입력받고, %o 를 사용하여 출력하면 8진수(octal)로 출력할 수 있다.

codeup.kr

 

 

 

1032 : [기초-출력변환] 10진 정수 한 개 입력받아 16진수로 출력하기1 with Swift

29. 콘솔에서 10진수를 입력받아 16진수로 출력하라.

입력 예시

255

출력 예시

ff

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(Integer.toHexString(value));
	}
}

Swift 4.2

import Foundation
func trans9over(target:Int) -> String {
    var result:String
    switch target {
    case 10: result = "a"
    case 11: result = "b"
    case 12: result = "c"
    case 13: result = "d"
    case 14: result = "e"
    case 15: result = "f"
    default: result = ""
    }
    return result
}

func hexTrans(value:Int) -> [String] {
    var flag = value
    var result = [String]()
    
    while flag >= 16 {
        let mod = flag % 16
        if mod > 9 {
            result.append(trans9over(target: mod))
        } else { result.append("\(flag % 16)") }
        
        flag = flag / 16
        if flag < 16 {
            if flag > 9 {
                result.append(trans9over(target: flag))
            } else { result.append("\(flag)") }
        }
    }
    result.reverse()
    return result
}

let line = readLine()
if line != nil {
    if let value = Int(line!){
        let hexArray = hexTrans(value: value)
        var printValue = String()
        for h in hexArray {
            printValue += "\(h)"
        }
        print(printValue)
    }
}

;;;

뭔가 더 예쁘고 깔끔하게 하는 방법이 있을것 같으나 머리가 멍하네요...

특시 10이상을 문자로 표현하려고할때의 부분이 맘에 걸립니다

스위프트는 완전히 처음부터 독학이고 서적으로 차근차근 시작한게 아니라 솔직히 부족한 부분을 많이 느끼고 있습니다.

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

 

[기초-출력변환] 10진 정수 한 개 입력받아 16진수로 출력하기1

%d(10진수 형태)로 입력 받고 %x로 출력하면 16진수(hexadecimal) 형태로 소문자로 출력된다. 10진법은 한 자리에 10개(0 1 2 3 4 5 6 7 8 9) 문자 중 한 개를 사용한다. 16진법은 한 자리에 16개(0 1 2 3 4 5 6 7 8 9 a b c d e f) 문자 중 한 개를 사용한다. 16진법의 a는 10진법의 10, b는 11, c는 12 ... 와 같다.

codeup.kr

 

 

 

 

1033 : [기초-출력변환] 10진 정수 한 개 입력받아 16진수로 출력하기2 with Swift

30. 콘솔에서 10진수를 입력받아 16진수로 출력하라.

입력 예시

255

출력 예시

FF

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();
		String printValue = String.format("%X", value);
		System.out.println(printValue);
	}
}

 

Swift 4.2

import Foundation
func trans9over(target:Int,isLowercase:Bool) -> String {
    var result:String
    switch target {
    case 10: result = "a"
    case 11: result = "b"
    case 12: result = "c"
    case 13: result = "d"
    case 14: result = "e"
    case 15: result = "f"
    default: result = ""
    }
    if isLowercase {
        return result
    } else {
        return result.uppercased()
    }
}

func hexTrans(value:Int,isLowercase:Bool) -> [String] {
    var flag = value
    var result = [String]()
    
    while flag >= 16 {
        let mod = flag % 16
        if mod > 9 {
            result.append(trans9over(target: mod, isLowercase: isLowercase))
        } else { result.append("\(flag % 16)") }
        
        flag = flag / 16
        if flag < 16 {
            if flag > 9 {
                result.append(trans9over(target: flag, isLowercase: isLowercase))
            } else { result.append("\(flag)") }
        }
    }
    result.reverse()
    return result
}

let line = readLine()
if line != nil {
    if let value = Int(line!){
        let hexArray = hexTrans(value: value, isLowercase: false)
        var printValue = String()
        for h in hexArray {
            printValue += "\(h)"
        }
        print(printValue)
    }
}

 

이전이랑 다른건 딱히 없습니다...

1032항 문제 소스에서 isLowercase라는 변수하나 추가했을뿐입니다.

문자열 클래스에선 lowercased , uppercased 라는게 있어서 그걸 써봤습니다.

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

 

[기초-출력변환] 10진 정수 한 개 입력받아 16진수로 출력하기2

%d(10진수 형태)로 입력 받고 %X로 출력하면 16진수(hexadecimal) 형태로 대문자로 출력된다.

codeup.kr

 

1028 : [기초-데이터형] 정수 한 개 입력받아 그대로 출력하기2 with Swift

 

25. 콘솔에서 정수 한 개를 입력 받아 그대로 출력하라. ( 입력 되는 정수 범위 0 ~ 4294967295)

입력 예시

2147483648

출력예시

2147483648

JAVA

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		long line = scanner.nextLong();
		scanner.close();
		System.out.println(line);
	}
}

 

 

Swift4.2

import Foundation

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

 

할까 말까하다가... 합니다

int 는 범위가 -2147483648 ~ 2147483647 라고합니다.

그런데 0 ~ 4294967295 까지 입력이 된다고했으니 타입을 다른걸로 해줘라 라는 문제였슴다

앞에 자바쪽 의도는 unsigned int 사용을 권하겠지만 하다보니 귀찮아서 long을 사용했습니다.

왠만한 수는 롱으로 다들어갑니다만... 메모리 낭비일거같네요

참고로 언어별로 표현이 다를수도 범위가 다를수 있습니다 특히 long같은경우는요.

 

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

 

[기초-데이터형] 정수 한 개 입력받아 그대로 출력하기2

정수 한 개를 입력받아 그대로 출력해보자. (단, 입력되는 정수의 범위는 0 ~ 4,294,967,295 이다.)

codeup.kr

 

 

 

 

1029 : [기초-데이터형] 실수 한 개 입력받아 그대로 출력하기2 with swift

26. 콘솔에서 실수 한 개를 입력받아 그대로 출력하라. ( 입력범위 : +- 1.7*10^-308 ~ 1.7*10^308)

출력 - 소수점 11번째 짜리 까지 출력

입력 예시

3.14159265359

출력 예시

3.14159265359

이번 문제는 이전 문제랑 그닥 다르지않으니 넘어갈래요.

수정 --

갑자기 마음이 바뀌어 일일이 다 소스 적을려고합니다.

JAVA

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		double line = scanner.nextDouble();
		scanner.close();
		System.out.println(String.format("%.11f", line));
	}
}

 

 

Swift 4.2

import Foundation

let line = readLine()
//let line:String? = "3.14159265359"
if line != nil {
    if let value = CDouble(line!){
        print(String.init(format:  "%.11lf", value))
    }
}

 

 

 

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

 

[기초-데이터형] 실수 한 개 입력받아 그대로 출력하기2

float 데이터형을 사용하면 3.4*10^-38 ~ 3.4*10^38 범위의 실수를 저장할 수 있다. (float 로 선언하고 %f로 입력 받거나 출력하면 된다.) 하지만 이 범위를 넘는(더 작거나 더 큰) 실수를 저장하기 위해서는  보다 큰 범위를 저장할 수 있는 다른 데이터형을 사용해야 정상적으로 저장시킬 수 있다. 쉽게 생각하면, float 를 사용하는 것보다 double 을 사용하는 것이 좀더 정확하게 저장할 수 있다.  단, 실수 1개를 저장하

codeup.kr

 

 

 

 

 

1030 : [기초-데이터형] 정수 한 개 입력받아 그대로 출력하기3 with swift

27. 콘솔에서 정수 한 개를 입력받아 그대로 출력하라. ( 입력범위 : –9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807)

입력 예시

-2147483649

출력 예시

-2147483649

JAVA

 

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		long line = scanner.nextLong();
		scanner.close();
		System.out.println(line);
	}
}

 

 

Swift 4.2

import Foundation

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

 

 

대는 소를 겸한다고... 1028번이랑 겹쳐버렸습니다.

설마 long을 써서 입출력하라는 문제가 나올줄은 몰랐네요

다시 한번 말씀드리자면 타입은 언어별로 범위가 다르거나 표현이 다를수 있습니다.

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

 

[기초-데이터형] 정수 한 개 입력받아 그대로 출력하기3

-2147483648 ~ +2147483647 범위의 정수를 저장하고 처리하기 위해서는 int 데이터형을 사용해 변수를 선언하면된다. (int 로 선언하고 %d나 %i 로 입력 받거나 출력하면 된다.) 하지만 이 범위를 넘어가는 정수를 저장하기 위해서는 보다 큰 범위를 저장할 수 있는 다른 데이터형을 사용해야 정상적으로 저장시킬 수 있다. long long int 데이터형을 사용하면 –9,223,372,036,854,775,808 ~ 9,223,372,0

codeup.kr

 

+ Recent posts