64. 콘솔에서 한 개의 정수를 입력받고, 음/양 수 판별과 홀/짝 판별을 출력하라.

입력 범위: -2147483648 ~ 2147483647​

입력 예시

-2147483648

출력 예시

minus

even

JAVA

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
	    int value = scan.nextInt();
	    if(value < 0) {
	    	System.out.println("minus");
	    	if(value % 2 == 0) {
	    		System.out.println("even");
	    	} else {
	    		System.out.println("odd");
	    	}
	    } else {
	    	System.out.println("plus");
	    	if(value % 2 == 0) {
	    		System.out.println("even");
	    	} else {
	    		System.out.println("odd");
	    	}
	    }
	}
}

 

 

Swift 4.2

import Foundation

let line = readLine()
if line != nil {
    if let value = Int(line!) {
        switch value < 0 {
        case true:
            print("minus")
            print(value%2 == 0 ? "even" : "odd")
        case false:
            print("plus")
            print(value%2 == 0 ? "even" : "odd")
        }
    }
}

이번은 어떻게 할까 고민하다 보니 중복if문을 써보는게 요점인거 같아서

굳이 if을 많이 겹쳐봤습니다.

자바에서는 안되지만 스위프트에서는 저렇게 불로도 키가 가능합니다.

애플에서는 성능때문인지 어쩐지는 모르겠지만 if문보단 스위치를 권장하고있는거 같더군요

참고로 나중에 스위치는 enum과 결합해서 깔끔! 하게 이곳저곳에서 사용가능해집니다.

JAVA는 솔직히 스위프트처럼 열심히 해본적이 없어서 모르겠네요.

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

 

 

63. 콘솔에서 세 개의 정수를 입력받고, even(짝)/odd(홀) 출력하기

입력 : 1line 으로 3개의 정수가 공백을 두고 입력

입력 범위: -2147483648 ~ 2147483647​

입력 예시

1 2 4

출력 예시

odd

even

even

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();
	    
	    for (int value : values) {
	    	if(value != 0 ) System.out.println(value % 2 == 0 ? "even" : "odd");
	    }
	}
}

 

 

Swift 4.2

import Foundation

let line = readLine()
if line != nil {
    let values = line!.split(separator: " ")
    if values.count == 3 {
        for i in 0 ..< values.count {
            if let value = Int(values[i]), value != 0 {
                print(value % 2 == 0 ? "even" : "odd")
            }
        }
    }
}

 

 

 

JAVA 의 출력단은 일부러 괄호를 생략해봤습니다.

사실 스위프트4 버전에선 지원하지 않습니다.

꽤나 유명? 한 생략인데 이게 한줄에 하나만 들어가면 헷갈리지않는데 여러개 깊이 들어가면 헷갈려서 코드를 읽는데 방해가 될거라 생각했는지

없더군요.

물론 뇌피셜입니다.

아 생략지원안하는건 공식이에요ㅎㅎ

전 이제 퇴근 준비해야겠네요.

내일도 시간이 남으면 조건/선택실행구조 시리즈를 이어서 포스트하겠습니다.

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

62. 콘솔에서 세 개의 정수를 입력받고, 짝수만 출력하라.

입력 : 1line 으로 3개의 정수가 공백을 두고 입력

입력 범위: 0 ~ 2147483647​

입력 예시

1 2 4

출력 예시

2

4

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();
	    
	    for (int value : values) {
			if(value % 2 == 0 && value != 0) {
				System.out.println(value);
			}
		}
	}
}

 

 

Swift 4.2

import Foundation

let line = readLine()
if line != nil {
    let values = line!.split(separator: " ")
    if values.count == 3 {
        for i in 0 ..< values.count {
            if let value = Int(values[i]), value % 2 == 0, value != 0 {
                print(value)
            }
        }
    }
}

 

 

JAVA부분에 입력과 출력 부문을 굳이 나눠봤습니다.

해보진않았지만 아마 입력 받는 동시에 0이 아니고 짝수일때 출력하라고 해도 코드업의 답안은 정답이라고 나올꺼에요.

ㅎㅎ 아니면 어떻하지...

윈도우에서 스위프트 문법 테스트하기 좋은 사이트가 없을까 뒤져봤는데 최신 xcode에서 제공하는 4이상 버전을 지원하는 사이트는 보이지않네요.

나중에 더 찾아봐야겠습니다.

참고로 스위프트는 버전별로 문법이 조금씩 다릅니다

특히 정수부분 숫자가 바뀔수록 문법이 확확 달라져요

1은 안봐봐서 모르겠고.. 2에서 3, 3에서 4 에서 많이 달라집니다.

5는 아직도 해보질않아서 모르겠지만 보기엔 4와 그닥 달라보이진 않았습니다.

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

61. 콘솔에서 세 개의 정수를 입력받고, 가장 작은 수를 출력하라.

입력 : 1line 으로 3개의 정수가 공백을 두고 입력

입력 범위: -2147483648 ~ 2147483647​

입력 예시

1 3 5

출력 예시

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();
	    int value2 = scan.nextInt();
		scan.close();
		//System.out.println((value0 < value1 ? value0 : value1) < value2 ? (value0 < value1 ? value0 : value1) : value2);
		System.out.println(value0 < value1 ? (value0 < value2 ? value0 : value2) : (value1 < value2 ? value1 : value2));
	}
}

 

 

 

Swift 4.2

import Foundation

let line = readLine()
if line != nil {
    let values = line!.split(separator: " ")
    if values.count == 3 {
        if let value0 = Int(values[0]), let value1 = Int(values[1]), let value2 = Int(values[2]){
            print(value0 < value1 ? (value0 < value2 ? value0 : value2) : (value1 < value2 ? value1 : value2))
        }
    }
}

 

JAVA 쪽 소스에서 10라인, 주석친 출력구문이 문제에서 권장? 도움말로 제공되는 답인데 전 그냥 두 부문으로 나눠서 푸는게 더 보기 좋더라고요

그래서 JAVA의 11라인, 스위프트의 8라인 구문처럼 출력했습니다.

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

60. 콘솔에서 두 개의 정수를 입력받고, 큰 수를 출력하라.

입력 : 1line 으로 2개의 정수가 공백을 두고 입력

입력 범위: -2147483648 ~ 2147483647​

입력 예시

3 5

출력 예시

5

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 ? value0 : value1);
	}
}

 

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 ? value0 : value1)
        }
    }
}



이전 소스에서 출력부분만 바뀌었습니다.

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

59. 콘솔에서 두 개의 정수를 입력받고, 비트단위로 or 연산을 한 값을 출력하라.

입력 : 1line 으로 2개의 정수가 공백을 두고 입력

입력 범위: -2147483648 ~ 2147483647​

입력 예시

3 5

출력 예시

7

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 values = line!.split(separator: " ")
    if values.count == 2 {
        if let value0 = Int(values[0]), let value1 = Int(values[1]) {
            print(value0|value1)
        }
    }
}

 

이전 소스에서 연산자만 바꿨습니다.

이번 or 연산자는 | 로

둘중하나만 1이면 1이 출력되는 연산자입니다.

0 | 0 = 0

0 | 1 = 1

1 | 0 = 1

1 | 1 = 1

가 이번 진리표? 아니 진리식? 뭐가 됐든 연산 결과의 전부입니다.

배우는 순서가 미묘하네요

not 연산먼저 배우는건 뭐 단일연산자라 그런다 쳐도 and 다음에 xor 다음에 or 음

그냥 제가 어색하단거지 문제가 있다는건 아닙니다.

비트단위논리연산 시리즈가 이걸로 끝나고 다음 문제는 이제 삼항 연산자 시리즈로 들어가니

내일 일하고 시간이 남는다면 하고 오늘은 이만 퇴근준비를 해야겠습니다.

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

58. 콘솔에서 두 개의 정수를 입력받고, 비트단위로 xor 연산을 한 값을 출력하라.

입력 : 1line 으로 2개의 정수가 공백을 두고 입력

입력 범위: -2147483648 ~ 2147483647​

입력 예시

3 5

출력 예시

6

JAVA 

import java.util.Scanner;

public class XOR {

    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 values = line!.split(separator: " ")
    if values.count == 2 {
        if let value0 = Int(values[0]), let value1 = Int(values[1]) {
            print(value0^value1)
        }
    }
}

 

이전 소스에서 연산자만 바꾸었습니다.

그냥 적자면 xor은

두 비트가 하나만 1 일때 1이 나오는 연산입니다. ^기호를 쓰면 불편해 ㅁ로 대체합니다.

0 ㅁ 0 = 0

0 ㅁ 1 = 1

1 ㅁ 0 = 1

1 ㅁ 1 = 0

다양하게 편하게 보고싶으시면 xor 진리표를 검색하시면 빠릅니다.

계속 논리게이트 관련 문제만 나오네요.

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

 

 

 

 

/////

옴기면서 이전 포스팅에 자바 소스가 누락되어있는걸 확인해서 지금 넣었습니다.

하는 프로젝트 자체는 스위프트로 해당 기초 문제 풀기이기에 그닥 상관은 없습니다만 간단한 문제라 바로 넣어봤습니다.

57. 콘솔에서 두 개의 정수를 입력받고, 비트단위로 and연산을 한 값을 출력하라.

입력 : 1line 으로 2개의 정수가 공백을 두고 입력

입력 범위: -2147483648 ~ 2147483647

입력 예시

3 5

출력 예시

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

 

 

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)
        }
    }
}

 

 

이전에는 불값의 연산에 대해 하더니 이번엔 비트의 연산에대해 쭉 이어서 하는군요.

논리연산 시리즈? 에 대해 공부하고싶으신분은 그냥 논리 게이트를 공부하시는게 빠르실거같습니다.

코드업 기초100제 에서는 코드로 빙 둘러서 문제가 나오니 그냥 이게 프로그래밍 공부에 효과가 있나 싶네요

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

+ Recent posts