-- 1. Create a table
CREATE TABLE examples (
-- 컬럼명 데이터타입 제약조건
ExamId INTEGER PRIMARY KEY AUTOINCREMENT,
LastName VARCHAR(50) NOT NULL,
FirstName VARCHAR(50) NOT NULL
)
-- 2.1 ADD COLUMN
ALTER TABLE
examples
ADD COLUMN
Country VARCHAR(100) NOT NULL DEFAULT 'default value';
-- sqlite는 단일 문을 사용하여 한번에 여러 열을 추가하는 것을 지원하지 않음
ALTER Table
examples
ADD COLUMN
Age INTEGER NOT NULL DEFAULT 0,
Address VARCHAR(100) NOT NULL DEFAULT 'default value';
--수정해줘야 한다.
ALTER Table
examples
ADD COLUMN
Age INTEGER NOT NULL DEFAULT 0;
ALTER Table
examples
ADD COLUMN
Address VARCHAR(100) NOT NULL DEFAULT 'default value';
-- 2.2 RENAME COLUMN, Address컬럼을 Postcode로 수정하기
ALTER Table
examples
RENAME COLUMN
Address TO Postcode;
-- 2.3 DROP COLUMN
ALTER Table
examples
DROP COLUMN
Postcode;
-- 2.4 RENAME TO
ALTER Table
examples
RENAME TO
new_examples;
-- 3. Delete a table
DROP Table new_examples;
-- 실습 테이블 생성
CREATE TABLE articles (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title VARCHAR(100) NOT NULL,
content VARCHAR(200) NOT NULL,
createdAt DATE NOT NULL
);
-- 1. Insert data into table
INSERT INTO
articles (title, content, createdAt)
VALUES
('hello', 'world', '2000-01-01');
-- 한번에 여러 데이터 추가하기
INSERT INTO
articles (title, content, createdAt)
VALUES
('title1', 'content1', '1900-01-01'),
('title2', 'content2', '1800-01-01'),
('title3', 'content3', '1700-01-01');
-- DATE 함수로 날짜 입력하기
INSERT INTO
articles (title, content, createdAt)
VALUES
('제목', '내용', DATE());
UPDATE
articles
SET
title = 'update Title';
--> 이렇게 조건문 where 없이 수정하면 모든 레코드가 수정됨
UPDATE
articles
SET
title = 'update Title'
WHERE
id = 1;
--> 여러 내용 수정하기
UPDATE
articles
SET
title = 'update Title',
content = 'update Content'
WHERE
id = 2;
DELETE FROM
articles
WHERE
id = 1;
DELETE FROM articles
WHERE id IN (
SELECT id
FROM articles
ORDER BY createdAt ASC
LIMIT 2
);
-- INNER JOIN
SELECT articles.title, users.name
FROM articles
INNER JOIN users
ON articles.userId = users.id
WHERE users.id = 1-- LEFT JOIN
SELECT users.name
FROM users
LEFT JOIN articles
ON articles.userId = users.id
WHERE articles.userId IS NULL;제약 조건 : N은 4의 배수이고, 8이상 28이하의 정수이다. (8 ≤ N ≤ 28)
N개의 숫자는 각각 0이상 F이하로 주어진다. (A~F는 알파벳 대문자로만 주어진다.)
K는 생성 가능한 수의 개수보다 크게 주어지지 않는다.
구현 및 시뮬레이션
N // 4 만큼 회전을 진행하면 그 뒤는 계속 반복된다.
중복되는 숫자를 세지 않기 위해 set을 사용.
k번째로 큰 수를 찾아야 하기에 내림차순 정렬을 하여야 한다.
O(N^2) (바깥 루프 N // 4) * (nums = turn(nums), 에 N 소요)
def turn(word):
return word[-1] + word[:-1]
T = int(input())
for tc in range(1, T+1):
N, K = map(int, input().split()) # N은 4의 배수로 주어질 숫자 개수, K는 몇번 돌릴지
nums = input()
term = N // 4
num_set = set()
for i in range(term):
for j in range(4):
start = j * term
end = (j+1) * term
res = nums[start:end]
num_set.add(int(res, 16))
nums = turn(nums)
num_list = list(num_set)
num_list.sort(reverse=True)
ans = num_list[K-1]
print(f"#{tc} {ans}")