Python 33

[Softeer] 21년 재직자 대회 본선 - 비밀메뉴2

문제이전의 21년 재직자 대회 예선 - 비밀메뉴 문제의 심화 버전인 듯한 문제이다. 더보기회사 식당에는 전설처럼 전해 내려오는 비밀 메뉴에 대한 소문이 있다. 소문의 내용은 대강 이러하다. 식권 자판기의 버튼을 특정 순서대로 누르고 결제를 하면, 평소와는 다른 색깔의 식권이 나온다. 이 식권을 배식대에 제출하면, 어떤 비밀 메뉴를 받을 수 있다는 것이다. 물론 이를 실제로 본 사람은 아무도 없어서, 어떤 메뉴가 나오는지는 커녕 눌러야 하는 버튼의 순서조차 알려져 있지 않다.식당의 평범한 이용객인 당신은 이 소문을 들은 순간 비밀 메뉴에 호기심이 크게 동했다. 그 실체를 좇아 연구를 거듭한 지도 어언 몇 달째. 당신은 자판기의 버튼을 아무렇게나 두들기면서, 비밀 메뉴가 나오는 조작법을 두 가지 찾아냈다! ..

[Softeer] 21년 재직자 대회 예선 - 로드밸런서 트래픽 예측

문제자율주행 기술은 현대 컴퓨팅의 여러 최첨단 기술에 의존하지만, 이것이 가능하게 하려면 자동차에서 할 수 없는 복잡한 계산과 실시간 도로 정보 확인 등을 중앙 서버에서 빠르고 신속하게 처리할 수 있어야 한다.이를 위해서 흔히 사용되는 방법은 요청(request)을 처리하는 많은 워커 노드(worker node)를 두고, 로드 밸런서(load balancer)가 이들 워커 노드에 트래픽을 적절히 분산시키는 것이다. 현재 총 $N$개의 서버가 있다. 이 문제에서 서버는 로드 밸런서 또는 워커 노드를 의미하며,각각의 서버가 동시에 로드 밸런서이면서 워커 노드일 수는 없다. $i$번째 서버가 트래픽을 분산시키는 서버들은 중복을 포함하여 총 $r_i$개 있다. $r_i = 0$이면 $i$번째 서버는 워커 노드..

[Softeer] 21년 재직자 대회 예선 - 마이크로서버

문제각각의 테스트 케이스에 대해, 한 줄에 하나씩, 순서대로, 필요한 최소 마이크로서버의 수를 출력한다.풀이문제는 이해하기 쉬운데 막상 알고리즘을 찾으라면 어려운 문제이다. 먼저 입력 처리를 해준다.여기서 입력받은 서비스들의 메모리 요구량은 정렬을 해서 저장한다.t = int(input())for i in range(t): n = int(input()) task = list(map(int,input().split())) task.sort() start = 0 end = n-1 servers = 0리스트에서 앞부분부터 참조하는 start와 뒷부분부터 참조하는 end를 만들었다.그리고 서버의 개수를 저장할 변수 servers도 선언해줬다. 문제를 해결하기 위해,각 마이..

[Softeer] 21년 재직자 대회 예선 - 이미지 프로세싱

문제자율주행 자동차를 구현하는 데에 있어서 이미지 프로세싱은 아주 중요한 요소이다. 카메라를 통해 들어온 차량 전후의 모습을 파악해 차량 근처에 있는 장애물들을 빠른 속도로 파악하고, 이를 다른 센서로부터 들어온 데이터와 함께 분석해 차량에게 올바른 명령을 내려야 하기 때문이다. 이 문제에서는 간단한 이미지 프로세싱을 하고자 한다. $H \times W$크기의 2차원 비트맵 이미지가 있다. 이 이미지는 $H\cdot W$개의 픽셀들로 구성되어 있으며, 위에서부터 $i$번째에 있고 왼쪽에서부터 $j$번째에 있는 픽셀은 $(i,j)$로 표기할 수 있다. 각 픽셀에는 색상이 붙어 있으며, 이 색상은 $1$이상 $10^9$이하의 정수로 표기할 수 있다. 픽셀 $(i,j)$의 $C_{i,j}$색을 라고 ..

[도서관 관리 사이트] 6. 마이페이지, 모든서적 페이지, 인기차트 페이지

1. 마이페이지이전 글에서 만들었던 관리자 페이지보다 요구되는 기능이 적기에 쉽게 만들 수 있다.1-1. templates/mypage/mypage.html이 페이지에서는 관리자페이지에서 처럼 table을 사용했다.하지만 관리자 페이지는 옆으로 테이블 두 개를 배치했고, 이 페이지는 위 아래로 배치했다.대여기록 부분은 대여일을 기준으로 정렬해 보여주게끔 했고, 따라서 연체 등의 특별한 경우가 아니라면 일반적으로 아직 대여중인 책이 위에 있게 된다.그래서 반납할 때 밑으로 스크롤을 할 필요 없게 편의성을 고려했다. 1-2. mypage/routes.py이 페이지는 routes.py에서 크게 추가로 해야하는 동작은 없다. 간단히 쿼리 함수를 호출해주기만 하면 된다.@mypage_bp.route('/', me..

[도서관 관리 사이트] 5. 회원가입, 관리자페이지, 책/카테고리 수정

이전 글에서 홈페이지와 로그인 페이지를 만들었다.이번 글은 로그인에 이어 회원가입과 관리자페이지를 구현한다.1. 회원가입 페이지 (signup.html)1-1. templates/auth/signup.htmlhtml코드는 아래 그림에서 보듯이 로그인 페이지의 코드와 거의 똑같다.다만 계정 유형이 관리자로 클릭된다면 아래 그림처럼 추가 코드를 입력 받는 칸이 나오게끔 js를 사용했다.해당 부분에 대한 코드이다. 계정 유형 ..

[도서관 관리 사이트] 4. 동작 흐름, 파일 간 데이터 연결

이번 글은 추가적인 구현에 대한 얘기는 하지 않고 프로젝트 전체의 흐름과 데이터의 전달에 대해 설명할 예정이다.이전 글들과 설명이 중복 되는 내용도 있겠지만 자료형까지 조금 더 원리를 자세히 설명할 예정이다. 0. flask 앱flask는 기본적으로 create_app()을 통해 application 객체를 만드는 것에서 시작한다.이 프로젝트의 경우 __init__.py 파일에서 create_app()을 정의했다.1. DB처리'메인홈페이지의 새 책 데이터를 가져오기'를 예시로 설명한다. 1-1. .env 파일먼저 .env 파일에 DB_USER=rootDB_PASSWORD=DB_HOST=localhostDB_NAME=library_dbSECRET_KEY=이런 식으로 SQL 서버에 들어가기 위해 필요한 값들..

[도서관 관리 사이트] 3. DB 입력, 메인페이지, 로그인 페이지

1. DB구성1-1. sql파일 작성첫번째 글에서 구상했던 아래 사진의 DB의 구조에 따라 sql코드를 작성했다. 1-2. DB구조 수정다만 위 사진의 내용에서 몇가지를 수정했다. 1) user_name 이라는 속성 추가user_id는 DB에서 이용자를 관리하는 목적으로만 사용하기로 했고,로그인 등에서 실제로 이용자가 사용할 user_name 속성을 만들었다. 2) 예약 관련 속성 추가reservation 테이블에서 book_code와 user_id만 있었지만,reservation_id, reservation_date를 추가해 내부적으로 관리가 편해지고 예약의 우선순위를 따질 수 있게 바꾸었다.drop database if exists library_db;create database library_db;..

[도서관 관리 사이트] 2. 웹페이지 설계, 프로젝트 폴더 구성

이전 글에서 이 프로젝트가 어떤 내용인지 간단히 설명했었다. [Flask + mySQL] 도서관 관리 사이트 만들기 1학교 데이터베이스 수업의 과제로 '도서관 관리 사이트 만들기'를 하게 되었다. 1. 기능과제에서 요구한 필수 기능은 아래와 같다.로그인기능 • ID와 비밀번호를 이용해 로그인이 가능해야 한다april2901.tistory.com 대략적인 table 구조는 이전 글에서 정했으니 웹페이지를 어떻게 구성할지, 대략적인 디자인은 어떻게 할지를 그려보았다. 이제 이번 글부터는 실제로 개발을 시작한다.0. 필수 패키지 설치먼저 프로젝트에 쓰일 모듈들을 프로젝트 폴더의 가장 상위 경로에서 pip를 사용해 다운받아야 한다.pip3 install flask pip3 install mysql-conne..

[도서관 관리 사이트] 1. 기능 확인, DB구조 설계, 프레임워크 선택

학교 데이터베이스 수업의 과제로 '도서관 관리 사이트 만들기'를 하게 되었다. 1. 기능과제에서 요구한 필수 기능은 아래와 같다.로그인기능 • ID와 비밀번호를 이용해 로그인이 가능해야 한다. • 계정은 사용자계정과 관리자계정으로 구분할 수 있다. • 관리자계정으로 로그인할 경우 더 많은기능을 사용할 수 있다. • 사용자가 직접 회원가입을 할 수 있어야한다. • 관리자계정으로 가입시 아무나 가입할 수 없도록 추가코드를 요구해야한다. • 추가코드는 자신의 10자리 학번으로 한다. 서적검색 및 열람서비스 • 모든 서적목록을 확인할 수 있는 페이지가 있다. • 서적목록 페이지에서는 • 책제목,저자,카테고리,수량,대출가능 여부 등의 정보를 확인할 수 있다. • 책제목, 저자, 카테고리등으로 ..