Tech for good

[파이썬/Python] CodeUp 파이썬 기초 100제 6046 - 6058 본문

IT/Computer Science

[파이썬/Python] CodeUp 파이썬 기초 100제 6046 - 6058

Diana Kang 2022. 2. 20. 21:50

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

  • 정수 1개를 입력받아 2배 곱해 출력해보자.

    참고
    *2 를 계산한 값을 출력해도 되지만,
    정수를 2배로 곱하거나 나누어 계산해 주는 비트단위시프트연산자 <<, >>를 이용할 수 있다.
    컴퓨터 내부에는 2진수 형태로 값들이 저장되기 때문에,
    2진수 형태로 저장되어 있는 값들을 왼쪽(<<)이나 오른쪽(>>)으로
    지정한 비트 수만큼 밀어주면 2배씩 늘어나거나 1/2로 줄어드는데,

    왼쪽 비트시프트(<<)가 될 때에는 오른쪽에 0이 주어진 개수만큼 추가되고,
    오른쪽 비트시프트(>>)가 될 때에는 왼쪽에 0(0 또는 양의 정수인 경우)이나 1(음의 정수인 경우)이 개수만큼 추가되고,
    가장 오른쪽에 있는 1비트는 사라진다.

    예시
    n = 10
    print(n<<1)  #10을 2배 한 값인 20 이 출력된다.
    print(n>>1)  #10을 반으로 나눈 값인 5 가 출력된다.
    print(n<<2)  #10을 4배 한 값인 40 이 출력된다.
    print(n>>2)  #10을 반으로 나눈 후 다시 반으로 나눈 값인 2 가 출력된다.

    정수 10의 2진수 표현은 ... 1010 이다.
    10 << 1 을 계산하면 ... 10100 이 된다 이 값은 10진수로 20이다.
    10 >> 1 을 계산하면 ... 101 이 된다. 이 값은 10진수로 5이다.

    n = 10 과 같이 키보드로 입력받지 않고 직접 작성해 넣은 코드에서, 숫자로 시작하는 단어(식별자, identifier)는 자동으로 수로 인식된다.  

    n = 10 에서 10 은 10진수 정수 값으로 인식된다.
    변수 n 에 문자열을 저장하고 싶다면, n = "10" 또는 n = '10'으로 작성해 넣으면 되고,
     
    n = 10.0 으로 작성해 넣으면 자동으로 실수 값으로 저장된다.
    n = 0o10 으로 작성해 넣으면 8진수(octal) 10으로 인식되어 10진수 8값이 저장되고,
    n = 0xf 나 n = 0XF 으로 작성해 넣으면 16진수(hexadecimal) F로 인식되어 10진수 15값으로 저장된다.

    ** python에서 실수 값에 대한 비트시프트 연산은 허용되지 않고 오류가 발생한다.
    (실수 값도 컴퓨터 내부적으로는 2진수 형태로 저장되고 비트시프트 처리가 될 수 있지만, python 에서는 허용하지 않는다.)

입력
정수 한 개가 입력된다.
단, -1073741824 ~ +1073741823

출력
2배 곱한 정수를 출력한다.

입력 예시
1024

출력 예시
2048
# 정수 1개를 입력받아 2배 곱해 출력하기
num = int(input())
print(num<<1)

 

6047 : [기초-비트시프트연산] 2의 거듭제곱 배로 곱해 출력하기

  • 정수 2개(a, b)를 입력받아 a를 2b배 곱한 값으로 출력해보자.
    0 <= a <= 10, 0 <= b <= 10

    예시
    a = 2
    b = 10
    print(a << b)  #210 = 1024 가 출력된다.

    참고
    예를 들어 1 3 이 입력되면 1을 23(8)배 하여 출력한다.

입력
정수 2개(a, b)가 공백을 두고 입력된다.
0 <= a, b <= 10

출력
a 를 2b배 만큼 곱한 값을 출력한다.

입력 예시
1 3

출력 예시
8
a, b = input().split(' ')
a = int(a)
b = int(b)
print(a<<b)

 

6048 : [기초-비교연산] 정수 2개 입력받아 비교하기

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

    예시
    print(123<456)  #비교 연산자 < 의 계산 결과인 True(참)가 출력된다.
    (123, 456 은 숫자로 작성된 단어이기 때문에 10진수로 인식된다.)

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

    비교/관계연산자 < (less than sign) 는
    왼쪽의 값이 오른쪽 값 보다 작은 경우 True(참)로 계산하고,
    그 외의 경우에는 False(거짓)로 계산한다.

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

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

    True(참) 또는 False(거짓) 값으로만 표현하고 저장하는 값을 불(bool)/불리언(boolean) 값이라고 한다.
    정수, 실수, 문자, 문자열과 마찬가지로 또 다른 형태의 데이터형(data type)이다.

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

출력
a가 b보다 작은 경우 True를, 그렇지 않은 경우 False를 출력한다.

입력 예시
1  9

출력 예시
True
a, b = input().split()

a = int(a)
b = int(b)

if a < b:
    print(True)
else:
    print(False)

 

6049 : [기초-비교연산] 정수 2개 입력받아 비교하기

  • 두 정수(a, b)를 입력받아
    a와 b의 값이 같으면 True 를, 같지 않으면 False 를 출력하는 프로그램을 작성해보자.

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

    비교/관계연산자 == (equal sign 2개) 는
    왼쪽의 계산 결과값과 오른쪽의 계산 결과값이 같은 경우 True(참)로 계산하고,
    그 외의 경우에는 False(거짓)로 계산한다.

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

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

    ** 수학에서 왼쪽과 오른쪽의 계산 결과가 같음(동치)을 나타내는 기호 =(equal sign) 1개는
    프로그래밍언어에서는 전혀 다른 의미로 사용된다.

    a = 1 와 같은 표현은 a와 1의 값이 같다는 의미가 아니라
    오른쪽의 계산 결과값인 1을 왼쪽의 변수 a에 저장하라는 의미이다.

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

출력
a와 b의 값이 같은 경우 True 를, 그렇지 않은 경우 False 를 출력한다.

입력 예시
0 0

출력 예시
True
a,b = input().split()

a = int(a)
b = int(b)

if a == b:
    print(True)
else:
    print(False)

 

6050 : (생략)

 

6051 : [기초-비교연산] 정수 2개 입력받아 비교하기

  • 두 정수(a, b)를 입력받아
    a의 값이 b의 값과 서로 다르면 True 를, 같으면 False 를 출력하는 프로그램을 작성해보자.

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

출력
a와 b가 다른 경우 True 를, 그렇지 않은 경우 False 를 출력한다.

입력 예시
0 1

출력 예시
True
a,b = input().split()

a = int(a)
b = int(b)

if a!=b:
    print(True)
else:
    print(False)

 

6052 : [기초-논리연산] 정수 입력받아 참 거짓 평가하기

  • 정수가 입력되었을 때, True/False 로 평가해주는 프로그램을 작성해보자.

    예시
    n = int(input())
    print(bool(n))

    참고
    bool( ) 을 이용하면 입력된 식이나 값을 평가해 불 형의 값(True 또는 False)을 출력해준다.
    식이나 값을 계산해서 결과값이 만들어지는 것을 평가(evaluate)라고 한다. 

    python 언어에서 정수값 0은 False(거짓)로 평가되고, 그 외의 값들은 모두 True(참)로 평가된다.
    ** 불 대수(boolean algebra)는 수학자 불이 만들어낸 것으로 True(참)/False(거짓) 값만 가지는 논리값과 그 값들 사이의 연산을 다룬다.

입력
정수 1개가 입력된다.

출력
입력된 값이 0이면 False, 0이 아니면 True 를 출력한다.

입력 예시
0

출력 예시
False
n = int(input())
print(bool(n))

 

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

  • 정수값이 입력될 때,
    그 불 값을 반대로 출력하는 프로그램을 작성해보자.

    예시
    a = bool(int(input()))
    print(not a)

    참고
    a = bool(int(input()))
    와 같은 형태로 겹쳐 작성하면, 한 번에 한 단계씩 계산/처리/평가된다.
    위와 같은 명령문의 경우 input( ), int( ), bool( ) 순서로 한 번에 한 단계씩 계산/처리/평가된다.

    어떤 불 값이나 변수에 not True, not False, not a 와 같은 계산이 가능하다.

    참 또는 거짓의 논리값을 역(반대)으로 바꾸기 위해서 not 예약어(reserved word, keyword)를 사용할 수 있다.

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

    참, 거짓의 논리값 인 불(boolean) 값을 다루어주는 예약어는 not, and, or 이 있고,
    불 값들 사이의 논리(not, and, or) 연산 결과도 마찬가지로 True 또는 False 의 불 값으로 계산 된다.

    정수값 0은 False 이고, 나머지 정수 값들은 True 로 평가된다.
    빈 문자열 "" 나 ''는 False 이고, 나머지 문자열들은 True 로 평가된다.

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

입력
정수 1개가 입력된다.

출력
입력된 정수의 불 값이 False 이면 True, True 이면 False 를 출력한다.

입력 예시
1

출력 예시
False
a = bool(int(input()))
print(not a)

 

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

  • 2개의 정수값이 입력될 때, 그 불 값이 모두 True 일 때에만 True 를 출력하는 프로그램을 작성해보자.

    예시
    a, b = input().split()
    print(bool(int(a)) and bool(int(b)))

    참고
    and 예약어는 주어진 두 불 값이 모두 True 일 때에만 True 로 계산하고, 나머지 경우는 False 로 계산한다.
    이러한 논리연산을 AND 연산(boolean AND)이라고도 부르고, · 으로 표시하거나 생략하며, 집합 기호 ∩(교집합, intersection)로 표시하기도 한다. 
    모두 같은 의미이다.

    참, 거짓의 논리값 인 불(boolean) 값을 다루어주는 예약어는 not, and, or 이 있고,
    불 값들 사이의 논리(not, and, or) 연산 결과도 마찬가지로 True 또는 False 의 불 값으로 계산된다.

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

입력
2개의 정수가 공백을 두고 입력된다.

출력
둘 다 True 일 경우에만 True 를 출력하고, 그 외의 경우에는 False 를 출력한다.

입력 예시
1 1

출력 예시
True
a,b = input().split()

print(bool(int(a)) and bool(int(b)))

 

6055 : [기초-논리연산] 하나라도 참이면 참 출력하기

  • 2개의 정수값이 입력될 때,
    그 불 값이 하나라도 True 일 때에만 True 를 출력하는 프로그램을 작성해보자.

    참고
    or 예약어는 주어진 두 불 값 중에서 하나라도 True 이면 True 로 계산하고, 나머지 경우는 False 로 계산한다.
    이러한 논리연산을 OR 연산(boolean OR)이라고도 부르고, + 로 표시하거나, 집합 기호 ∪(합집합, union)로 표시하기도 한다.
    모두 같은 의미이다.

    참, 거짓의 논리값 인 불(boolean) 값을 다루어주는 예약어는 not, and, or 이 있고,
    불 값들 사이의 논리(not, and, or) 연산 결과도 마찬가지로 True 또는 False 의 불 값으로 계산된다.

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

입력
2개의 정수가 공백을 두고 입력된다.

출력
하나라도 참일 경우 True 를 출력하고, 그 외의 경우에는 False 를 출력한다.

입력 예시
1 1

출력 예시
True
a,b = input().split()
print(bool(int(a)) or bool(int(b)))

 

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

  • 2개의 정수값이 입력될 때, 그 불 값(True/False) 이 서로 다를 때에만 True 를 출력하는 프로그램을 작성해보자.

    예시
    ...
    c = bool(int(a))
    d = bool(int(b))
    print((c and (not d)) or ((not c) and d))

    참고
    참 거짓이 서로 다를 때에만 True 로 계산하는 논리연산을 XOR(exclusive or, 배타적 논리합) 연산이라고도 부른다.

    논리연산자는 사칙(+, -, *, /) 연산자와 마찬가지로 여러 번 중복해서 사용할 수 있는데, 
    사칙 연산자와 마찬가지로 계산 순서를 표시하기 위해 괄호 ( )를 사용할 수 있다.
    괄호를 사용하면 계산 순서를 명확하게 표현할 수 있다.

    수학 식에서는 소괄호 (), 중괄호 {}, 대괄호 []를 사용하기도 하지만, 프로그래밍언어에서는 소괄호 ( ) 만 사용한다.

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

입력
2개의 정수가 공백을 두고 입력된다.

출력
두 값의 True / False 값이 서로 다를 경우만 True 를 출력하고, 그 외의 경우에는 False 를 출력한다.

입력 예시
1 1

출력 예시
False
a,b = input().split()

a = bool(int(a))
b = bool(int(b))

print((a and (not b)) or ((not a) and b))

 

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

  • 2개의 정수값이 입력될 때, 그 불 값(True/False) 이 서로 같을 때에만 True 를 출력하는 프로그램을 작성해보자.

입력
2개의 정수가 공백을 두고 입력된다.

출력
두 값의 True / False 값이 서로 다를 경우만 True 를 출력하고, 그 외의 경우에는 False 를 출력한다.

입력 예시
0 0

출력 예시
True
a,b = input().split()

a = bool(int(a))
b = bool(int(b))

if a == b:
    print(True)
else:
    print(False)

 

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

  • 2개의 정수값이 입력될 때, 그 불 값(True/False) 이 서로 같을 때에만 True 를 출력하는 프로그램을 작성해보자.

입력
2개의 정수가 공백을 두고 입력된다.

출력
두 값의 True / False 값이 서로 다를 경우만 True 를 출력하고, 그 외의 경우에는 False 를 출력한다.

입력 예시
0 0

출력 예시
True
# 첫번째 방법

a,b = input().split()

a = bool(int(a))
b = bool(int(b))

print(not(a or b))
# 두번째 방법

a,b = input().split()

a = bool(int(a))
b = bool(int(b))

if a == False and b == False:
    print(True)
else:
    print(False)

 


출처: CodeUP

https://codeup.kr/problemsetsol.php?psid=33