728x90

문제

연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오.

윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다.

예를 들어, 2012년은 4의 배수이면서 100의 배수가 아니라서 윤년이다. 1900년은 100의 배수이고 400의 배수는 아니기 때문에 윤년이 아니다. 하지만, 2000년은 400의 배수이기 때문에 윤년이다.

입력

첫째 줄에 연도가 주어진다. 연도는 1보다 크거나 같고, 4000보다 작거나 같은 자연수이다.

출력

첫째 줄에 윤년이면 1, 아니면 0을 출력한다.

예제 입력 1 복사

2000

예제 출력 1 복사

1

예제 입력 2 복사

1999

예제 출력 2 복사

0

year = int(input())

if year % 4 == 0 and (year %100 != 0 or year %400 == 0):
    print('1')
else:
    print("0")

풀이

문제에 나와있는 윤년의 조건을 그대로 썼다.

>> 윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다. <<

728x90
728x90

문제

시험 점수를 입력받아 90 ~ 100점은 A, 80 ~ 89점은 B, 70 ~ 79점은 C, 60 ~ 69점은 D, 나머지 점수는 F를 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 시험 점수가 주어진다. 시험 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.

출력

시험 성적을 출력한다.

예제 입력 1 복사

100

예제 출력 1 복사

A

score = int(input())

if score >= 90 :
    print('A')
elif score >= 80 :
    print('B')
elif score >= 70 :
    print('C')
elif score >= 60 :
    print('D')
else:
    print('F')

풀이

score = int(input())

우선 입력받는 숫자는 문자열로 입력되기 때문에 int 함수를 이용해서 정수로 변환하여 변수에 선언한다. 시험 점수이기 때문에 변수 이름은 score로 정해보았다.


삼항 연산자 풀이

if조건식은 삼항 연산자를 사용하여 한 줄로 표현하는 것이 가능한데 조건식이 여러 개인 경우 중첩된 삼항 연산자를 작성하여야 해서 가독성을 해치게 될 수가 있다. 이번 문제도 삼항 연산자를 작성해 보았는데 문장이 너무 길어져서 if - elif - else 조건식에 비해서 좋지 않다는 느낌을 받았다. 코드는 아래와 같다. 

print('A') if score >= 90 else print('B') if score >= 80 else print('C') if score >= 70 else print('D') if score >= 60 else print('F')
728x90
728x90

문제

두 정수 A와 B가 주어졌을 때, A와 B를 비교하는 프로그램을 작성하시오.

입력

첫째 줄에 A와 B가 주어진다. A와 B는 공백 한 칸으로 구분되어져 있다.

출력

첫째 줄에 다음 세 가지 중 하나를 출력한다.

  • A가 B보다 큰 경우에는 '>'를 출력한다.
  • A가 B보다 작은 경우에는 '<'를 출력한다.
  • A와 B가 같은 경우에는 '=='를 출력한다.

제한

  • -10,000 ≤ A, B ≤ 10,000

예제 입력 1 복사

1 2

예제 출력 1 복사

<

예제 입력 2 복사

10 2

예제 출력 2 복사

>

예제 입력 3 복사

5 5

예제 출력 3 복사

==

A,B = map(int,input().split())

if A > B:
    print('>')
elif A < B:
    print('<')
else:
    print('==')

풀이

1. 우선 두 수를 입력받는 코드를 작성한다.

A,B = map(int,input().split())

일단 두 개의 수를 입력받는다. 두 개의 수는 가운데에 공백을 포함한 하나의 문자열로 입력받게 된다. 이 문자열을 input 함수로 입력받고 split 함수로 나눌 때 괄호에 아무것도 입력하지 않으면 공백을 기준으로 문자를 나눌 수 있다. 그리고 map 함수를 이용해서 split 함수로 나눈 두 개의 문자를 int타입인 정수로 변환시켜 준다. 두 개의 정수는 튜플(tuple)의 성질을 이용하여 A, B 변수에 각각 선언한다. 

 

2. if - elif - else 조건식 코드를 작성한다.

if A > B:
    print('>')  # if 조건식이 참일 때 문장
elif A < B:
    print('<')  # if조건식이 참이 아닌경우 elif 조건식이 참일 때 문장
else:
    print('==')  # 위의 모든 조건이 거짓일 때 문장

if 조건식은 if 조건식만 작성할 수도 있고 if-else 조건식을 쓸 수도 있고 if - elif - else 조건식을 사용할 수도 있다. 이번 코드에선 if - elif - else 모두 사용한 조건식을 작성하였다. if 조건식 아래에는 if 조건식이 참일 때의 문장을 쓰고 elif조건식 아래에는 if 조건식이 참이 아닌 경우 elif 조건식이 참일 때의 문장을 써준다. 그리고 else 조건식에는 위의 모든 조건이 거짓일 때의 문장을 써주면 된다.  


삼항연산자를 이용한 풀이도 있다.

A,B = map(int,input().split())

print('>') if A > B else print('<') if A < B else print('==')

풀이

>> 삼항 연산자 코드로 작성하는 방법

print('>') if A > B else print('<') if A < B else print('==')

삼항 연산자 코드를 작성하면 if조건식을 한 줄로 간편하게 작성할 수 있어서 편리하다. 이번 문제는 elif 조건식이 들어가야 하기 때문에 중첩 삼항 연산자 코드로 작성했다. 중첩 삼항 연산자의 코드 작성법은 아래와 같다. 

조건식 1이 참일 때 값 if 조건식 1 else [ 조건식2가 참일 때 값 if 조건식2 else 조건식이 모두 거짓일 때 

 

728x90
728x90

문제

아래 예제와 같이 개를 출력하시오.

입력

없음.

출력

개를 출력한다.

예제 입력 1 복사

예제 출력 1 복사

|\_/|
|q p|   /}
( 0 )"""\
|"^"`    |
||_/=\\__|

print("|\_/|")
print("|q p|   /}")
print('( 0 )"""\\')
print('|"^"`    |')
print("||_/=\\\__|")

풀이

1. 백슬러시(\) 뒤 큰따옴표("") or 작은 따옴표('')가 있는 경우 

# 출력해야 하는 모양
( 0 )"""\

# 코드작성
print('( 0 )"""\\')  # \'앞에 \을 붙여준다.

백 슬러시(\)와 따옴표를 붙여 사용하면\뒤 따옴표가 문자열을 만드는 기호로 인식되지 못한다. 이스케이프로 인식되기 때문이다. 이것을 방지하기 위해서 앞에 백 슬래시를 한번 더 붙여준 것이다.

 

2 백 슬러시(\) 두 개

# 출력해야 하는 모양
||_/=\\__|

# 코드작성
print("||_/=\\\__|")  # \\ 앞에 \을 하나 더 붙여준다.

이번엔 이스케이프 문자 중에서 백 슬러시(\) 두 개가 있으면 하나의 백 슬러시만 출력되는 성질을 유의하여 작성하였다. 백 슬래시를 두 개 출력하기 위해선 백 슬래시를 하나 더 붙여주게 되면 백 슬래시가 두 개가 출력된다. 

 

728x90
728x90

문제

아래 예제와 같이 고양이를 출력하시오.

입력

없음.

출력

고양이를 출력한다.

예제 입력 1 복사

예제 출력 1 복사

\    /\
 )  ( ')
(  /  )
 \(__)|

print("\\    /\\")
print(" )  ( ')")
print("(  /  )")
print(" \\(__)|")

이번 문제는 예제 출력칸에 있는 고양이를 그대로 출력하면 되는 문제다.

print문 안에 고양이모습을 넣어 출력하면 된다.

 

다만 역슬래시(\)를 쓸때는 \\ 이렇게 두개를 연속해서 적어야 역슬래시가 인식된다.

728x90
728x90

문제

꼬마 정민이는 이제 A + B 정도는 쉽게 계산할 수 있다. 이제 A + B + C를 계산할 차례이다!

입력

첫 번째 줄에 A, B, C (1 ≤ A, B, C ≤ 1012)이 공백을 사이에 두고 주어진다.

출력

A+B+C의 값을 출력한다.

예제 입력 1 복사

77 77 7777

예제 출력 1 복사

7931

A,B,C = input().split()
A=int(A)
B=int(B)
C=int(C)

print(A+B+C)
728x90
728x90

문제

(세 자리 수) × (세 자리 수)는 다음과 같은 과정을 통하여 이루어진다.

(1)과 (2)위치에 들어갈 세 자리 자연수가 주어질 때 (3), (4), (5), (6)위치에 들어갈 값을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 (1)의 위치에 들어갈 세 자리 자연수가, 둘째 줄에 (2)의 위치에 들어갈 세자리 자연수가 주어진다.

출력

첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다.

예제 입력 1 복사

472
385

예제 출력 1 복사

2360
3776
1416
181720

A = int(input())
B = input()

print(A*int(B[2]))
print(A*int(B[1]))
print(A*int(B[0]))
print(A*int(B))

(1) (2)

문자열 입력 함수 input()으로 A와 B에 저장할 정수값을 (문자열로) 입력받아 A만 정수형으로 변환해주었고 B는 문자열 형태로 남겨둔다.

 

왜냐, 문자열은 문자열을 구성하는 문자에 접근할 수 있다. 따라서 세자리 곱셈의 중간과정에서 B의 각 자리수를 곱하여 더하는 과정을 표현할 수 있다.

 

(3) (4) (5)

따라서 int(B[2])는 세자리 정수 B의 일의 자리 숫자,

int(B[1])는 세자리 정수 B의 십의 자리 숫자,

int(B[0])은 세자리 정수 B의 백의 자리 숫자가 된다.

 

(6)

최종 결과값

728x90
728x90

문제

(A+B)%C는 ((A%C) + (B%C))%C 와 같을까?

(A×B)%C는 ((A%C) × (B%C))%C 와 같을까?

세 수 A, B, C가 주어졌을 때, 위의 네 가지 값을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 A, B, C가 순서대로 주어진다. (2 ≤ A, B, C ≤ 10000)

출력

첫째 줄에 (A+B)%C, 둘째 줄에 ((A%C) + (B%C))%C, 셋째 줄에 (A×B)%C, 넷째 줄에 ((A%C) × (B%C))%C를 출력한다.

예제 입력 1 복사

5 8 4

예제 출력 1 복사

1
1
0
0

A,B,C = input().split()
A=int(A)
B=int(B)
C=int(C)

print((A+B)%C)
print(((A%C) + (B%C))%C)
print((A*B)%C)
print(((A%C) * (B%C))%C)
728x90

+ Recent posts