- 문제
서울의 오늘 날짜를 출력하는 프로그램을 작성하시오.- 입력
입력은 없다.- 출력
서울의 오늘 날짜를 "YYYY-MM-DD" 형식으로 출력한다.
from datetime import date
today = date.today()
print(today)
Python에서 현재의 날짜와 시간을 출력하기 위해서는
datetime이라는 라이브러리가 필요하다.
해당 라이브러리 사용 후 date.today() 메소드를 실행하면 현재의 날짜가 출력된다.
- 문제
자신이 백준 온라인 저지(BOJ)에서 맞은 문제의 수와 아이디를 그대로 출력하는 프로그램을 작성하시오.- 입력
이 문제는 입력이 없다.- 출력
첫 줄에 자신이 맞은 문제의 수, 둘째 줄에 아이디를 출력한다.
print('14\n')
print('tealcoral\n')
백준 사이트에서 내가 맞춘 문제의 수를 확인하고 그대로 출력하면 되는 문제이다.
첫 줄에는 문제의 수, 둘째 줄에는 아이디를 출력해야 하니
\n으로 줄바꿈을 해준다.
- 문제
아래 예제와 같이 새싹을 출력하시오.- 입력
입력은 없다.- 출력
새싹을 출력한다.
print(" ,r'\"7")
print("r`-_ ,' ,/")
print(" \\. \". L_r'")
print(" `~\\/")
print(" |")
print(" |")
Python에서 '와 "를 문자열 형태로 출력하기 위해서는
백슬래시\를 앞에 붙이면 문자 그대로 출력이 가능하다.
백슬래시를 문자열로 출력하기 위해서는
백슬래시를 두 번 쓰면 \ 출력이 가능하다.
따옴표 ', "를 활용해서 여러 줄 출력하면
print(""" ,r'"7
r`-_ ,' ,/
\. ". L_r'
`~\\/
|
|""")
와 같이 작성할 수 있다.
- 문제
두 정수 A와 B가 주어졌을 때, A와 B를 비교하는 프로그램을 작성하시오.- 입력
첫째 줄에 A와 B가 주어진다. A와 B는 공백 한 칸으로 구분되어져 있다.- 출력
첫째 줄에 다음 세 가지 중 하나를 출력한다.
A가 B보다 큰 경우에는 '>'를 출력한다.
A가 B보다 작은 경우에는 '<'를 출력한다.
A와 B가 같은 경우에는 '=='를 출력한다.- 제한
-10,000 ≤ A, B ≤ 10,000
A, B = map(int, input().split())
print('<' if A < B else '>' if A > B else '==')
첫째 줄에 입력받은 A와 B는 공백 한 칸으로 구분되어 있기 때문에,
map(int, input().split())을 통해, 공백을 기준으로 나누어서 리스트화하고 리스트의 문자열 요소를 map을 통해 정수로 변환.
삼항 연산자A if 조건 else B를 사용하여 한 줄로 작성 가능하지만 조건이 많아질 경우 일반적인 if-elif-else가 낫다는 점을 참고하자.
- 문제
시험 점수를 입력받아 90 ~ 100점은 A, 80 ~ 89점은 B, 70 ~ 79점은 C, 60 ~ 69점은 D, 나머지 점수는 F를 출력하는 프로그램을 작성하시오.- 입력
첫째 줄에 시험 점수가 주어진다. 시험 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.- 출력
시험 성적을 출력한다.
score = int(input())
if 100 >= score >= 90:
print('A')
elif 89 >= score >= 80:
print('B')
elif 79 >= score >= 70:
print('C')
elif 69 >= score >= 60:
print('D')
else:
print('F')
- 문제
흔한 수학 문제 중 하나는 주어진 점이 어느 사분면에 속하는지 알아내는 것이다. 사분면은 아래 그림처럼 1부터 4까지 번호를 갖는다. "Quadrant n"은 "제n사분면"이라는 뜻이다.
예를 들어, 좌표가 (12, 5)인 점 A는 x좌표와 y좌표가 모두 양수이므로 제1사분면에 속한다. 점 B는 x좌표가 음수이고 y좌표가 양수이므로 제2사분면에 속한다.
점의 좌표를 입력받아 그 점이 어느 사분면에 속하는지 알아내는 프로그램을 작성하시오. 단, x좌표와 y좌표는 모두 양수나 음수라고 가정한다.- 입력
첫 줄에는 정수 x가 주어진다. (−1000 ≤ x ≤ 1000; x ≠ 0) 다음 줄에는 정수 y가 주어진다. (−1000 ≤ y ≤ 1000; y ≠ 0)- 출력
점 (x, y)의 사분면 번호(1, 2, 3, 4 중 하나)를 출력한다.
x = int(input())
y = int(input())
if x > 0 and y > 0:
print('1')
elif x < 0 and y > 0:
print('2')
elif x < 0 and y < 0:
print('3')
else:
print('4')
(0,0)일 경우를 제외했기 때문에 else:로 4분면 표현 가능
- 문제
연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오.- 윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다.
- 예를 들어, 2012년은 4의 배수이면서 100의 배수가 아니라서 윤년이다. 1900년은 100의 배수이고 400의 배수는 아니기 때문에 윤년이 아니다. 하지만, 2000년은 400의 배수이기 때문에 윤년이다.
- 입력
첫째 줄에 연도가 주어진다. 연도는 1보다 크거나 같고, 4000보다 작거나 같은 자연수이다.- 출력
첫째 줄에 윤년이면 1, 아니면 0을 출력한다.
year = int(input())
if year % 4 == 0 and (year % 100 != 0 or year % 400 == 0):
print('1')
else:
print('0')
문제를 잘 안 읽어서 두 번이나 틀렸다. 문제 속에 답이 있다.
'윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때'이기 때문에 if문을 if year % 4 == 0 and (year % 100 != 0 or year % 400 == 0):으로 작성할 수 있다.
- 문제
사파리월드는 인터넷으로만 존재하는 미스테리한 나라이다. 사파리월드에는 2개의 서브도메인이 seunghwan.royal.gov.sw와 kyuhyun.royal.gov.sw 이 있는데, 이것이 couple.royal.gov.sw으로 합쳐질 것이다. 그러나 도메인 관리 센터 SWNIC(센터장: 김동규)에는 엄격한 룰이 있다. 두 서브도메인을 합칠 때, 유명도의 차이가 너무 차이나지 않을 경우에만 두 서브도메인을 결혼시키는 것이다. 서브도메인의 유명도는 정수이다. 두 서브도메인의 유명도가 주어졌을 때, 그 차이를 구하는 프로그램을 작성하시오.- 입력
첫째 줄에 두 도메인의 유명도 N과 M이 주어진다. (-2,000,000,000 ≤ N, M ≤ 2,000,000,000)- 출력
첫째 줄에 두 유명도의 차이 (|N-M|)을 출력한다.
N, M = map(int, input().split())
print(abs(N - M))
절댓값을 표현하는 함수 abs()를 기억해두자.
- 문제
자연수 N이 주어졌을 때, 1부터 N까지 한 줄에 하나씩 출력하는 프로그램을 작성하시오.- 입력
첫째 줄에 100,000보다 작거나 같은 자연수 N이 주어진다.- 출력
첫째 줄부터 N번째 줄 까지 차례대로 출력한다.
N = int(input())
number = list(range(1, N+1))
for i in number:
print(i)
처음에는 for문으로 출력할 때 줄바꿈이 되는 것을 놓쳐서 \n을 써야하나...싶었으나 일단 한번 실행해보니 바로 줄바꿈이 되어 안도했다.
- 문제
0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오.- 입력
첫째 줄에 정수 N(0 ≤ N ≤ 12)이 주어진다.- 출력
첫째 줄에 N!을 출력한다.
N = int(input())
factorial = 1
for i in range(1, N + 1):
factorial *= i
print(factorial)
정수 N을 입력받고, 1이라는 정수에 차례로 1부터 N까지의 숫자를 곱하여 출력하도록 만들었다.
ChatGPT에 물어보니, 당연하게도 math 라이브러리를 통해 팩토리얼 계산이 가능하다는 사실을 알게 되었다.
import math
print(math.factorial(int(input())))
위의 방법이 가장 간결하고 빠르며, 큰 숫자도 무리없이 계산가능하다고 한다!