SQL
SELECT c.first_name, c.last_name, DATEDIFF(r.return_date, r.rental_date) as rental_period, r.return_date, r.rental_date
FROM sakila.customer c
JOIN sakila.rental r ON c.customer_id = r.customer_id
WHERE DATEDIFF(r.return_date, r.rental_date) >= 10;
SELECT first_name, last_name
FROM sakila.customer
WHERE first_name LIKE '%a%';
SELECT f.title, f.release_year
FROM sakila.film f
INNER JOIN sakila.film_category fc ON f.film_id = fc.film_id
WHERE fc.category_id = 1
GROUP BY title, release_year
HAVING f.release_year = '2006';
SELECT f.title, f.release_year, f.rating
FROM sakila.film f
INNER JOIN sakila.film_category fc ON f.film_id = fc.film_id
WHERE fc.category_id = 5 AND f.rating = 'PG';
SELECT * FROM sakila.rental;
SELECT * FROM sakila.inventory;
SELECT * FROM sakila.customer;
SELECT * FROM sakila.film_category;
SELECT * FROM sakila.category;
SELECT * FROM sakila.film;
Python
"""
문제 5 : 문자열 속 단어 수 세기
목표: 사용자가 입력한 문자열에서 단어의 개수를 세는 프로그램을 작성합니다.
게임 규칙:
1. 사용자는 한 줄의 문자열을 입력합니다.
2. 프로그램은 그 문자열에서 공백을 기준으로 단어를 분리하고, 단어의 개수를 출력
합니다.
3. 공백만 있는 문자열이나, 앞뒤 공백이 있을 경우에도 올바르게 처리해야 합니다.
"""
a = str(input())
b = a.split()
print("단어의 개수는 : %d" %(len(b)))
print(b)
"""
문제 6 : 숫자 추측 게임
목표: 컴퓨터가 1부터 주어진 범위 내에서 무작위로 숫자를 선택하고, 사용자는 그 숫자
를 추측해야 합니다. 사용자가 추측할 때마다 컴퓨터는 힌트를 제공합니다. 힌트는 "더
작은 숫자입니다." 또는 "더 큰 숫자입니다."로 제공되며, 정답을 맞출 때까지 계속 반복
됩니다.
게임 규칙:
1. 컴퓨터가 범위 내에서 무작위로 숫자를 선택합니다.
2. 사용자는 숫자를 입력하여 추측합니다.
3. 매번 추측 후, 컴퓨터는 힌트를 제공합니다:
o "더 작은 숫자입니다." 또는 "더 큰 숫자입니다."
o 정답을 맞추면 게임이 종료됩니다.
4. 사용자가 정답을 맞출 때까지 계속 추측하며 점수를 받습니다.
5. 점수는 100점으로 시작하고, 틀릴 때마다 10점씩 차감됩니다
입력:
• 게임이 시작되면, 사용자는 추측할 숫자를 입력합니다.
출력:
• 각 추측마다 "더 작은 숫자입니다." 또는 "더 큰 숫자입니다."와 같은 힌트를 출력합니다.
• 정답을 맞추면 "정답입니다!"와 함께 최종 점수를 출력합니다.
• 점수가 0이 되면 게임이 종료됩니다.
제약 사항:
• 범위는 1부터 100까지 주어집니다.
"""
import random
def func():
true_value = random.randint(1, 100)
score = 100
while score != 0:
input_value = int(input())
if input_value == true_value:
print("정답입니다. 입력한 숫자 : %d" %input_value)
break
elif input_value < true_value:
print("더 큰 숫자입니다. (-10)")
score -= 10
else:
print("더 작은 숫자입니다. (-10)")
score -= 10
print("점수: %d점" %score)
func()
"""
문제 7. 십진수 a와 b가 주어집니다.
주어진 십진수 a와 b를 이진수로 변환하고, 그 후 다음 연산을 수행하세요:
a와 b를 더한 결과를 이진수로 출력하세요.
a에서 b를 뺀 결과를 이진수로 출력하세요.
a와 b의 AND 연산 결과를 이진수로 출력하세요.
a와 b의 OR 연산 결과를 이진수로 출력하세요.
a와 b의 XOR 연산 결과를 이진수로 출력하세요.
"""
def to_binary(num):
binary = []
while num:
remain = num % 2
binary = [remain] + binary
num //= 2
if not binary:
binary = [0]
return binary
def binary_length(a, b):
max_len = len(a) if len(a) > len(b) else len(b)
a_length = [0] * (max_len - len(a)) + a
b_length = [0] * (max_len - len(b)) + b
return a_length, b_length
def add(x, y):
sum_result = x + y
return sum_result % 2
def subtract(x, y):
if x > y:
return 1
else:
return 0
def and_op(x, y):
if x and y:
return 1
else:
return 0
def or_op(x, y):
if x or y:
return 1
else:
return 0
def xor_op(x, y):
if x != y:
return 1
else:
return 0
def binary_op(a, b, op):
a, b = binary_length(a, b)
result = []
for i in range(len(a)):
result.append(op(a[i], b[i]))
return result
a = 10
b = 20
a_bin = to_binary(a)
b_bin = to_binary(b)
result_add = binary_op(a_bin, b_bin, add)
print(f"{a} + {b}: {result_add}")
result_subtract = binary_op(a_bin, b_bin, subtract)
print(f"{a} - {b}: {result_subtract}")
result_and = binary_op(a_bin, b_bin, and_op)
print(f"{a} AND {b}: {result_and}")
result_or = binary_op(a_bin, b_bin, or_op)
print(f"{a} OR {b}: {result_or}")
result_xor = binary_op(a_bin, b_bin, xor_op)
print(f"{a} XOR {b}: {result_xor}")
"""
문제 8. 2진수를 5진수와 10진수로 바꾸는 함수를 작성하시오.
10진수가 주어지면 2진수와 5진수로 바꿀수 있는 한꺼번에 작동할 수 있는 함수를 작성하시오.
2진수를 10진수와 5진수로 변환하는 함수
"""
def func(ten):
def ten_to_two(ten):
result = []
while ten > 0:
remain = ten % 2
result.append(str(remain))
ten = ten // 2
if not result:
result.append('0')
return result
def ten_to_five(ten):
result = []
while ten > 0:
remain = ten % 5
result.append(str(remain))
ten = ten // 5
if not result:
result.append('0')
return result
two = ten_to_two(ten)
five = ten_to_five(ten)
print(f"10진수 {ten} -> 2진수: {two}, 5진수: {five}")
func(10)