본문으로 바로가기
728x90

 

#1051

 

 

문제 설명  

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


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

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

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

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

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

입력

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


출력

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

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.util.Scanner;
 
public class Main {
    
    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);
 
    //방법 2: System.out.println(b>=a?1:0);
 
    }
}
 
 

 

 

 

#1052

 

 

문제 설명   

두 정수(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


출력

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

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.Scanner;
 
public class Main {
    
    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 만 입력된다.)


출력

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

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.util.Scanner;
 
public class Main {
    
    public static void main(String[] args) {
        
        Scanner sc=new Scanner(System.in);
        
        int a= sc.nextInt();
        
        if(a==0)
            System.out.println(1);
        else
            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개의 정수가 공백을 두고 입력된다.


출력

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

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.Scanner;
 
public class Main {
    
    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);
    }
}
 
 
 

 

 

#1055

 

 

문제 설명   

두 개의 참(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개의 정수가 공백을 두고 입력된다.


출력

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

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.Scanner;
 
public class Main {
    
    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개의 정수가 공백을 두고 입력된다.


출력

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

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.Scanner;
 
public class Main {
    
    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개의 정수가 공백을 두고 입력된다.


출력

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

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.Scanner;
 
public class Main {
    
    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개의 정수가 공백을 두고 입력된다.


출력

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

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.Scanner;
 
public class Main {
    
    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

 

 

문제 설명   

입력 된 정수를 비트단위로 참/거짓을 바꾼 후 정수로 출력해보자.
비트단위(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를 의미한다.


예시
int a=1;
printf("%d", ~a); //-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 과 같은 관계로 표현된다.

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

입력

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


출력

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

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import java.util.Scanner;
 
public class Main {
    
    public static void main(String[] args) {
        
        Scanner sc=new Scanner(System.in);
        
        int a= sc.nextInt();
        
        System.out.println(~a);
    }
}
 
 
 

 

 

#1060

 

 

문제 설명   

입력된 정수 두 개를 비트단위로 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


출력

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

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import java.util.Scanner;
 
public class Main {
    
    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);
    }
}
 
 

 

 

 

 

 

 

 

 

 

 

 

728x90