본문 바로가기

JAVA

< (JAVA) 코드업 1051 ~ 1060 >

 

 

 

 

 

 

 

 

 

 

 

안녕하세요!

오늘은 지난번에 이어서 JAVA를 이용해서 코드업 문제 1051번 ~ 1060번 까지를 풀어볼 거예요

 

 

 

 

 

 

 

 

 

 

1051 : [기초-비교연산] 두 정수 입력받아 비교하기3

 

< 문제 설명 >

- 두 정수(a, b)를 입력받아 b가 a보다 크거나 같으면 1을, 그렇지 않으면 0을 출력하는 프로그램을 작성해보자.

 < 참고 >
- 어떤 값을 비교하기 위해 비교/관계연산자(comparison/relational)를 사용할 수 있다.

- 비교/관계연산자는 주어진 2개의 값을 비교하여 그 결과가 참인 경우 참(true)을 나타내는 정수값 1로 계산하고, 거짓인 경우 거짓(false)를 나타내는 정수값 0으로 계산한다.

- 비교/관계연산자도 일반적인 사칙연산자처럼 주어진 두 수를 이용해 계산을 수행하고, 그 결과를 1(참), 또는 0(거짓)으로 계산해 주는 연산자이다.

- 비교/관계연산자는 >, <, >=, <=, ==(같다), !=(다르다) 6개가 있다.

- >=, <= 연산자는 같음(==)을 포함한다. 따라서 “작다/크다” 또는 "같다”는 의미를 가진다.

 

 

- 입력 : 두 정수 a, b가 공백을 두고 입력된다. -2147483647 <= a, b <= +2147483648

ex ) 0 -1

- 출력 : b가 a보다 크거나 같은 경우 1을, 그렇지 않은 경우 0을 출력한다.

ex ) 1

 

package _CodeUp_;

import java.util.Scanner;

public class code2 {
    public static void main(String[] args) {
        
        Scanner sc = new Scanner(System.in);

        int a = sc.nextInt();
        int b = sc.nextInt();

        if (b >= a) {
            System.out.println("1");
        } else
            System.out.println("0");

    }
}

 

완성된 코드

 

 

 

 

 

 

 

 

1052 : [기초-비교연산] 두 정수 입력받아 비교하기4

 

< 문제 설명 >

- 두 정수(a, b)를 입력받아 a와 b가 서로 다르면 1을, 그렇지 않으면 0을 출력하는 프로그램을 작성해보자.

 < 참고 >
-  어떤 값을 비교하기 위해 비교/관계연산자(comparison/relational)를 사용할 수 있다.

- 비교/관계연산자는 주어진 2개의 값을 비교하여 그 결과가 참인 경우 참(true)을 나타내는 정수값 1로 계산하고, 거짓인 경우 거짓(false)를 나타내는 정수값 0으로 계산한다.

- 비교/관계연산자도 일반적인 사칙연산자처럼 주어진 두 수를 이용해 계산을 수행하고, 그 결과를 1(참), 또는 0(거짓)으로 계산해 주는 연산자이다.

- 비교/관계연산자는 >, <, >=, <=, ==(같다), !=(다르다) 6개가 있다.

 

< 예시 >

- printf("%d", 123!=123); //비교 연산자 !=의 계산 결과인 0(거짓)이 출력된다.

 

- 입력 : 두 정수 a, b가 공백을 두고 입력된다. -2147483647 <= a, b <= +2147483648

ex ) 0 1

- 출력 : a와 b가 다른 경우 1을, 그렇지 않은 경우 0을 출력한다.

ex ) 1

 

package _CodeUp_;

import java.util.Scanner;

public class code2 {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int a = sc.nextInt();
        int b = sc.nextInt();

        if (a != b) {
            System.out.println("1");
        } else
            System.out.println("0");
    }
}

 

완성된 코드

 

 

 

 

 

 

 

1053 : [기초-논리연산] 참 거짓 바꾸기

 

< 문제 설명 >

- 1(true, 참) 또는 0(false, 거짓) 이 입력되었을 때 반대로 출력하는 프로그램을 작성해보자.

 < 참고 >
-  C언어에서 비교/관계 연산(==, !=, >, <, >=, <=)이 수행될 때, 0은 거짓(false)으로 인식되고, 0이 아닌 모든 수는 참(true)으로 인식된다.

- 참 또는 거짓의 논리값을 역(반대)으로 바꾸기 위해서는 논리(logical)연산자 !를 사용할 수 있다.

- 이러한 논리연산을 NOT 연산이라고도 부르고, 프라임(기호 오른쪽에 따옴표) 이나 바(기호 위에 가로 막대)로 표시하고, 집합 기호로는 c (여집합, complement)를 의미한다. 모두 같은 의미이다.

- 참, 거짓의 논리값(boolean value)인 불 값을 다루어주는 논리연산자는 !(not), &&(and), ||(or) 이 있다.

- ** 불 대수(boolean algebra)는 수학자 불이 만들어낸 것으로 참/거짓만 가지는 논리값과 그 연산을 다룬다.

 

< 예시 >

- printf("%d", !0); //거짓의 반대, 즉 참인 1로 계산됨
  printf("%d", !1); //참의 반대, 즉 거짓인 0으로 계산됨
  printf("%d", !999); //참의 반대, 즉 거짓인 0으로 계산됨

  어떤 변수 a에, !a 와 같은 논리 연산이 가능하다.

 

- 입력 : 정수 1개가 입력된다.(단, 0 또는 1 만 입력된다.)

ex ) 1

- 출력 : 입력된 값이 0이면 1, 1이면 0을 출력한다.

ex ) 0

 

package _CodeUp_;

import java.util.Scanner;

public class code2 {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int a = sc.nextInt();

        if (a == 0) {
            System.out.println("1");
        } else if (a == 1)
            System.out.println("0");

    }
}

 

완성된 코드

 

 

 

 

 

 

1054 : [기초-논리연산] 둘 다 참일 경우만 참 출력하기

 

< 문제 설명 >

- 두 개의 참(1) 또는 거짓(0)이 입력될 때, 모두 참일 때에만 참을 출력하는 프로그램을 작성해보자.


 < 참고 >
-  논리연산자 && 는 주어진 2개의 논리값이 모두 참(1) 일 때에만 1(참)로 계산하고, 그 외의 경우에는 0(거짓) 으로 계산한다.

- 이러한 논리연산을 AND 연산이라고도 부르고, · 으로 표시하거나 생략하며, 집합 기호로는 ∩(교집합, intersection)을 의미한다. 모두 같은 의미이다.

- 참, 거짓의 논리값(boolean value)인 불 값을 다루어주는 논리연산자는 !(not), &&(and), ||(or) 이 있다.

- ** 불 대수(boolean algebra)는 수학자 불이 만들어낸 것으로 참/거짓만 가지는 논리값과 그 연산을 다룬다.

 

< 예시 >

- printf("%d", 1&&1); //둘 다 참을 의미하므로 1로 계산되어 출력된다.

 

- 입력 : 1 또는 0의 값만 가지는 2개의 정수가 공백을 두고 입력된다.

ex ) 1 1

- 출력 : 둘 다 참(1)일 경우에만 1을 출력하고, 그 외의 경우에는 0을 출력한다.

ex ) 1

 

package _CodeUp_;

import java.util.Scanner;

public class code2 {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int a = sc.nextInt();
        int b = sc.nextInt();

        if (a == 1 && b == 1) {
            System.out.println("1");
        } else
            System.out.println("0");

    }
}

 

완성된 코드

 

 

 

 

 

 

1054 : [기초-논리연산] 둘 다 참일 경우만 참 출력하기

 

< 문제 설명 >

- 두 개의 참(1) 또는 거짓(0)이 입력될 때, 하나라도 참이면 참을 출력하는 프로그램을 작성해보자.

 < 참고 >
- 논리연산자 || 는 주어진 2개의 논리값 중에 하나라도 참(1) 이면 1(참)로 계산하고, 그 외의 경우에는 0(거짓) 으로 계산한다.

- ** | 기호는 쉬프트를 누른 상태에서 백슬래시(\)를 누르면 나오는 기호로, 버티컬 바(vertical bar) 기호이다.

- 이러한 논리연산을 OR 연산이라고도 부르고, + 로 표시하며, 집합 기호로는 ∪(합집합, union)을 사용한다. 모두 같은 의미이다.

- 참, 거짓의 논리값(boolean value)인 불 값을 다루어주는 논리연산자는 !(not), &&(and), ||(or) 이 있다.

- ** 불 대수(boolean algebra)는 수학자 불이 만들어낸 것으로 참/거짓만 가지는 논리값과 그 연산을 다룬다.

 

< 예시 >

- printf("%d", 0||0); //둘 다 거짓을 의미하므로 0이 계산되어 출력된다.

 

- 입력 : 1 또는 0의 값만 가지는 2개의 정수가 공백을 두고 입력된다.

ex ) 1 1

- 출력 : 하나라도 참일 경우 1을 출력하고, 그 외의 경우에는 0을 출력한다.

ex ) 1

 

package _CodeUp_;

import java.util.Scanner;

public class code2 {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int a = sc.nextInt();
        int b = sc.nextInt();

        if (a == 1 || b == 1) {
            System.out.println("1");
        } else
            System.out.println("0");

    }
}

 

완성된 코드

 

 

 

 

 

 

1056 : [기초-논리연산] 참/거짓이 서로 다를 때에만 참 출력하기

 

< 문제 설명 >

- 두 가지의 참(1) 또는 거짓(0)이 입력될 때, 참/거짓이 서로 다를 때에만 참을 출력하는 프로그램을 작성해보자.

 < 참고 >
-  이러한 논리연산을 XOR(exclusive or, 배타적 논리합)연산이라고도 부른다. 집합의 의미로는 합집합에서 교집합을 뺀 것을 의미한다. 모두 같은 의미이다.

- 논리연산자는 사칙연산자와 마찬가지로 여러 번 중복해서 사용할 수 있는데, 연산의 순서를 만들어주기 위해 괄호 ( )를 사용해 묶어 주면 된다.

- 수학에서는 괄호, 중괄호, 대괄호를 사용하지만 C언어에서는 소괄호 ( )만을 사용한다.

 

< 예시 >

- printf(“%d”, (a&&!b)||(!a&&b)); //참/거짓이 서로 다를 때에만 1로 계산

 

- 입력 : 1 또는 0의 값만 가지는 2개의 정수가 공백을 두고 입력된다.

ex ) 1 1

- 출력 : 참/거짓이 서로 다를 때에만 1을 출력하고, 그 외의 경우에는 0을 출력한다.

ex ) 0

 

package _CodeUp_;

import java.util.Scanner;

public class code2 {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int a = sc.nextInt();
        int b = sc.nextInt();

        if (a != b) {
            System.out.println("1");
        } else
            System.out.println("0");

    }
}

 

완성된 코드

 

 

 

 

 

 

 

1057 : [기초-논리연산] 참/거짓이 서로 같을 때에만 참 출력하기

 

< 문제 설명 >

- 두 개의 참(1) 또는 거짓(0)이 입력될 때, 참/거짓이 서로 같을 때에만 참이 계산되는 프로그램을 작성해보자.

 

 

- 입력 : 1 또는 0의 값만 가지는 2개의 정수가 공백을 두고 입력된다.

ex ) 0 0

- 출력 : 참/거짓이 서로 같을 때에만 1을 출력하고, 그 외의 경우에는 0을 출력한다.

ex ) 1

 

package _CodeUp_;

import java.util.Scanner;

public class code2 {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int a = sc.nextInt();
        int b = sc.nextInt();

        if (a == b) {
            System.out.println("1");
        } else
            System.out.println("0");

    }
}

 

완성된 코드

 

 

 

 

 

 

1058 : [기초-논리연산] 둘 다 거짓일 경우만 참 출력하기

 

< 문제 설명 >

- 두 개의 참(1) 또는 거짓(0)이 입력될 때, 모두 거짓일 때에만 참이 계산되는 프로그램을 작성해보자.

 

 

- 입력 : 1 또는 0의 값만 가지는 2개의 정수가 공백을 두고 입력된다.

ex ) 0 1

- 출력 : 둘 다 거짓일 경우에만 1을 출력하고, 그 외의 경우에는 0을 출력한다.

ex ) 0

package _CodeUp_;

import java.util.Scanner;

public class code2 {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int a = sc.nextInt();
        int b = sc.nextInt();

        if (a == 0 && b == 0) {
            System.out.println("1");
        } else
            System.out.println("0");
    }
}

 

완성된 코드

 

 

 

 

 

1059 : [기초-비트단위논리연산] 비트단위로 NOT 하여 출력하기

 

< 문제 설명 >

- 입력 된 정수를 비트단위로 참/거짓을 바꾼 후 정수로 출력해보자. 비트단위(bitwise)연산자 ~ 를 붙이면 된다.(~ : tilde, 틸드라고 읽는다.)

 

< 참고 >

- ** 비트단위(bitwise) 연산자는, ~(bitwise not), &(bitwise and), |(bitwise or), ^(bitwise xor), <<(bitwise left shift), >>(bitwise right shift) 가 있다.

 

- 예를 들어 1이 입력되었을 때 저장되는 1을 32비트 2진수로 표현하면 00000000 00000000 00000000 00000001 이고, 

~1은 11111111 11111111 11111111 11111110 가 되는데 이는 -2를 의미한다.

 

- 컴퓨터에 저장되는 모든 데이터들은 2진수 형태로 바뀌어 저장된다.

 

- 0과 1로만 구성되는 비트단위들로 변환되어 저장되는데, 양의 정수는 2진수 형태로 바뀌어 저장되고, 음의 정수는 "2의 보수 표현"방법으로 저장된다.

- 예를 들어 int형(4바이트(byte), 32비트)으로 선언된 변수에 양의 정수 5를 저장하면 5의 2진수 형태인 101이 32비트로 만들어져 00000000 00000000 00000000 00000101 로 저장된다.(공백은 보기 편하도록 임의로 분리)

 

int 형의 정수 0은 00000000 00000000 00000000 00000000

그리고 -1은 0에서 1을 더 빼고 32비트만 표시하는 형태로 11111111 11111111 11111111 11111111 로 저장된다.

 

-2는 -1에서 1을 더 빼면 된다. 11111111 11111111 11111111 11111110 로 저장된다.

그래서 int 형으로 선언된 변수에는 최소 -2147483648 을 의미하는 10000000 00000000 00000000 00000000 부터

최대 +2147483647 을 의미하는 01111111 11111111 11111111 11111111 로 저장될 수 있는 것이다.

그렇다면 -2147483648 10000000 00000000 00000000 00000000 에서 1을 더 뺀다면? 01111111 11111111 11111111 11111111 이 된다. 즉 -2147483649 가 아닌 +2147483647 이 되는 것이다.

이러한 것을 오버플로우(overflow, 넘침)라고 한다.

- 이러한 내용을 간단히 표시하면, 정수 n이라고 할 때,
~n = -n - 1
-n = ~n + 1 과 같은 관계로 표현된다.

이 관계를 그림으로 그려보면 마치 원형으로 수들이 상대적으로 배치된 것과 같다.

 

< 예시 >

- int a=1;
  printf("%d", ~a); //-2가 출력된다.

 

- 입력 : 정수 1개가 입력된다. -2147483648 ~ +2147483647

ex ) 2

- 출력 : 비트 단위로 1 -> 0, 0 -> 1로 바꾼 후 그 값을 10진수로 출력한다.

ex ) - 3

 

package _CodeUp_;

import java.util.Scanner;

public class code2 {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int a = sc.nextInt();

        System.out.println(~a);
    }
}

 

완성된 코드

 

 

 

 

 

 

1060 : [기초-비트단위논리연산] 비트단위로 AND 하여 출력하기

 

< 문제 설명 >

- 입력된 정수 두 개를 비트단위로 and 연산한 후 그 결과를 정수로 출력해보자. 비트단위(bitwise)연산자 &를 사용하면 된다.(and, ampersand, 앰퍼센드라고 읽는다.)

 

< 참고 >

-  ** 비트단위(bitwise)연산자는, ~(bitwise not), &(bitwise and), |(bitwise or), ^(bitwise xor), <<(bitwise left shift), >>(bitwise right shift) 가 있다.

- 예를 들어 3과 5가 입력되었을 때를 살펴보면
3       : 00000000 00000000 00000000 00000011
5       : 00000000 00000000 00000000 00000101
3 & 5 : 00000000 00000000 00000000 00000001
이 된다.

- 비트단위 and 연산은 두 비트열이 주어졌을 때, 둘 다 1인 부분의 자리만 1로 만들어주는 것과 같다.

- 이 연산을 이용하면 어떤 비트열의 특정 부분만 모두 0으로도 만들 수 있는데
192.168.0.31   : 11000000.10101000.00000000.00011111
255.255.255.0 : 11111111.11111111.11111111.00000000

두 개의 ip 주소를 & 연산하면 192.168.0.0 : 110000000.10101000.0000000.00000000 을 계산할 수 있다.

- 실제로 이 계산은 네트워크에 연결되어 있는 두 개의 컴퓨터가 데이터를 주고받기 위해 같은 네트워크에 있는지 아닌지를 판단하는데 사용된다.

- 이러한 비트단위 연산은 빠른 계산이 필요한 그래픽처리에서 마스크연산(특정 부분을 가리고 출력하는)을 수행하는 데에도 효과적으로 사용된다.


 

- 입력 : 2개의 정수가 공백을 두고 입력된다. -2147483648 ~ +2147483647

ex ) 3 5

- 출력 : 두 정수를 비트단위(bitwise)로 and 계산을 수행한 결과를 10진수로 출력한다.

ex ) 1

 

package _CodeUp_;

import java.util.Scanner;

public class code2 {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int a = sc.nextInt();
        int b = sc.nextInt();

        System.out.println(a & b);
    }
}

 

완성된 코드

 

 

 

 

 

 

 

코드업 1051 ~ 1060번 까지 다 풀어보았습니다.

다들 항상 화이뚀 !!

 

 

 

 

 

 

 

'JAVA' 카테고리의 다른 글

< (JAVA) 코드업 1071 ~ 1080 >  (0) 2024.04.01
< (JAVA) 코드업 1061 ~ 1070 >  (0) 2024.03.29
< (JAVA) 코드업 1041 ~ 1050 >  (0) 2024.03.21
< 구구단 출력하기 (JAVA) >  (0) 2024.03.17
< (JAVA) 369 게임 만들기 >  (0) 2024.03.16