입력)

정수 1개가 입력된다.

-2147483648 ~ +2147483647, 단 0은 입력되지 않는다.

 

출력)

음수이면서 짝수이면, A

음수이면서 홀수이면, B

양수이면서 짝수이면, C

양수이면서 홀수이면, D

를 출력한다.

 

정답)

a = int(input())
if (a <0) and (a%2 == 0):
	print("A")
elif (a < 0) and (a%2 != 0):
	print("B")
elif (a > 0) and (a%2 == 0):
	print("C")
else:
	print("D")

 

설명)

0이 아닌 정수 1개가 입력되었을 때, 음(-)/양(+)과 짝(even)/홀(odd)을 구분해 분류해보자.

음수이면서 짝수이면, A

음수이면서 홀수이면, B

양수이면서 짝수이면, C

양수이면서 홀수이면, D

를 출력한다.

 

- 참고

조건/선택 실행구조 안에 다시 조건/선택 실행구조를 "중첩"할 수가 있다.

또한, 중첩된 조건은

if (n<0) and (n%2==0):

 print('A')

와 같이 논리연산자(not, and, or)를 이용해 합쳐 표현할 수도 있다.

비교연산(<, >, <=, >=, ==, !=)의 계산 결과는 True 또는 False 의 불(boolean) 값이고,

불 값들 사이의 논리연산(not, and, or)의 결과도 True 또는 False의 불 값이다.

입력)

3개의 정수(a, b, c)가 공백을 두고 입력된다.

0 <= a,b,c <= 2147483647

 

출력)

입력된 순서대로 짝(even)/홀(odd)을 줄을 바꿔 출력한다.

 

정답)

a, b, c = map(int, input().split())
d = [a, b, c]
for i in d:
 if i%2 == 0:
  print("even", sep="/n")
 else:
  print("odd", sep="/n")

입력)

3개의 정수(a, b, c)가 공백을 두고 입력된다.

0 ~ +2147483647 범위의 정수들이 입력되며 적어도 1개는 짝수이다.

 

출력)

짝수만 순서대로 줄을 바꿔 출력한다.

 

정답)

a, b, c = map(int, input().split())
d = [a, b, c]
for i in d:
	if i%2 == 0:
    	print(i, /n)

 

설명)

3개의 정수(a, b, c)가 입력되었을 때, 짝수만 출력해보자.

 

- 예시

a, b, c = input().split()

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

if a%2 == 0: # 논리적으로 한 단위로 처리해야하는 경우 콜론(:)을 찍고, 들여쓰기로 작성한다.
	print(a)
    
if b%2 == 0:
	print(b)

if c%2 == 0:
	print(c)

- 참고

if 조건식:

 실행1 # 조건식의 평가값이 True인 경우 실행시킬 명령을 들여쓰기를 이용해 순서대로 작성한다.

 실행2

 실행3 # 들여쓰기를 하지 않은 부분은 조건식에 상관이 없음

 

python에서는 실행단위인 코드블록(code block)을 표현하기 위해 들여쓰기를 사용한다.

들여쓰기 방법은 탭(tab), 공백(space) 4개 등 여러 가지 방법을 사용할 수 있지만 한 소스코드 내에서 들여쓰기 길이와 방법은 똑같아야 한다.

 

a%2 == 0은 (a%2)가 먼저 계산된 후 그 결과를 정수 0과 비교한 결과값이다.

a를 2로 나눈 나머지가 0, 즉 짝수이면 True가 되고, 아니면 False로 계산된다.

따라서, if a%2 == 0: #a가 짝수라면...

와 같은 의미가 된다. 짝수가 아니라면 들여쓰기로 작성된 부분들은 실행되지 않는다.

 

 

입력)

3개의 정수가 공백으로 구분되어 입력된다.

-2147483648 ~ +2147483648

 

출력)

가장 작은 값을 출력한다.

 

정답)

a, b, c = map(int, input().split())
d = (a if a < b else b) if ( (a if a <b else b) < c ) else c
print(int(d))

 

 

설명)

입력된 세 정수 a, b, c 중 가장 작은 값을 출력하는 프로그램을 작성해보자.

단, 3항 연산을 사용한다.

 

- 참고

프로그래밍언어 소스코드 작성시 모든 요소들은

"순서에 따라 한 단계씩 실행"

"미리 정해진 순서에 따라 하나씩 연산 수행"

"그 때까지 연산된 결과를 이용해 다시 순서에 따라 하나씩 연산"

등의 원리가 적용된다.

따라서 3항 연산을 중첩해(괄호로 묶는 등..) 이용하면 여러 값들을 순서대로 비교해 가장 큰/작은 값을 계산할 수 있다.

 

예를들어

(a if a>b else b) if ((a if a>b else b)>c) else c

 

잘 이해가 되지 않는다면 어떤 순서에 따라 계산될 지 생각해보고

여러 가지 연산자가 동시에 사용된 식이 있을 때, 어떤 우선순위에 따라 순서대로 계산이 되는지 찾아보도록 한다.

"연산자 우선순위"를 검색하면 우선순위와 결합방향이 나온다.

예를 들어 변수에 어떤 값을 대입하는 대입(assign) 연산자 =의 우선순위는 가장 낮고, 오른쪽에서 왼쪽의 결합방향을 가진다.

 

** 3항 연산은 자주 사용되지는 않지만, 복잡합 계산식이나 조건 처리, 비교 구조를 간단히 표현할 수 있게 해준다.

입력)

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

-2147483648 ~ +2147483647

 

출력)

두 정수 중 큰 값을 10진수로 출력한다.

 

정답)

a, b = map(int, input().split())
c = (a if (a > b) else b)
print(int(c))

 

설명)

 

입력된 두 정수(a, b) 중 큰 값을 출력하는 프로그램을 작성해보자.

단, 3항 연산을 사용한다.

 

- 예시

a, b  = input().split()

a = int(a) # 변수 a에 저장되어있는 값을 정수로 바꾸어 다시 변수 a에 저장

b = int(b)

c = (a if (a>=b) else b)

print(int(c))

 

- 참고

3개의 요소로 이루어지는 3항 연산은 

"x if C else y"의 형태로 작성이 된다.

* C : True 또는 False 를 평가할 조건식(conditional expression) 또는 값

* x : C의 평가 결과가 True일 때 사용할 값

* y : C의 평가 결과가 True가 아닐 때 사용할 값

입력)

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

-2147483648 ~ +2147483647

 

출력)

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

 

정답)

a, b = map(int, input().split())
print(a | b)

입력)

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

-2147483648 ~ +2147483647

 

출력)

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

 

정답)

a, b = map(int, input().split())
print(a & b)

입력)

정수 1개가 입력된다.

-2147483648 ~ +2147483647

 

출력)

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

 

정답)

a = int(input())
print(~a)

참고)

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

 

+ Recent posts