전체 글

· 알고리즘
[문제] 연세대학교 수강신청이 얼마 전부터 바뀌어, 마일리지 제도로 바뀌었다. 이 제도는 각각의 학생들에게 마일리지를 주어 듣고 싶은 과목에 마일리지를 과목당 1~36을 분배한다. 그리고 모두 분배가 끝이 나면 과목에 대해서 마일리지를 많이 투자한 순으로 그 과목의 수강인원만큼 신청되는 방식이다. 성준이는 연세대학교 재학 중인 학생이다. 성준이는 저번 수강신청에서 실패하여 휴학을 했기 때문에 이번 수강신청만은 필사적으로 성공하려고 한다. 그래서 성준이는 학교 홈페이지를 뚫어버렸다. 그 덕분에 다른 사람들이 신청한 마일리지를 볼 수 있게 되었다. 성준이는 주어진 마일리지로 최대한 많은 과목을 신청하고 싶어 한다. (내가 마일리지를 넣고 이후에 과목을 신청하는 사람은 없다) 마일리지는 한 과목에 1에서 36..
· SQL
20강 행 개수 구하기 - COUNT 집계함수 COUNT() SUM() AVG() MIN() MAX() COUNT 로 행 개수 구하기 인수로 집합을 지정한다. COUNT의 인수는 * 이고 이는 '모든 열=테이블 전체' 라는 의미로 사용된다. (* 를 인수로 사용할 수 있는 것은 COUNT 함수 뿐이다.) 집계함수는 집합에서 하나의 값을 계산해낸다 -> 집계 SELECT 가 WHERE 보다 나중에 지정되기 때문에, 검색된 행이 COUNT 로 넘겨진다. WHERE 구 조건에 맞는 행의 개수를 구할 수 있다. 집계함수와 NULL 값 집계함수는 집합 안에 NULL 값이 있는 경우 이를 제외하고 처리한다. no 열에는 NULL 값이 없어 5 가 나오지만, name 열에는 NULL 값이 1개 존재하므로 4 가 나온..
· SQL
16강 행 추가하기 - INSERT no : Int, NOT NULL 제약, Default 값은 NULL a : 최대 길이가 30인 가변 길이 문자열, Default 값은 NULL b : 날짜, Default 값은 NULL INSERT로 행 추가하기 INSERT 명령은 클라이언트에서 서버로 보내진다. (SELECT 명령과 반대) 값을 저장할 열 지정하기 b열엔 기본값(Default 인 NULL) 이 저장된다. NOT NULL 제약 NOT NULL 제약이 걸려 있는 no 열에 NULL 값을 삽입하려 하면 오류가 난다. no 열을 제외하고 NULL 값을 삽입하면 정상적으로 실행된다. DEFAULT 값을 지정하지 않았을 경우 초깃값을 말한다. sample411 엔 d 열의 Dedault 값이 0 으로 지정되어..
· SQL
09강 정렬 - ORDER BY ORDER BY 로 검색 결과 정렬 ORDER BY 구로 정렬하고 싶은 열 지정 -> 행이 정렬된다. ORDER BY DESC로 내림차순 정렬 ORDER BY 열명 일 때, default로 오름차순 정렬된다. -> ORDER BT 열명 ASC 와 같다. 대소관계 문자열형 데이터는 알파벳, 한글 순이고 한글은 자음, 모음 순이다. -> 문자열형 데이터의 대소관계는 사전식 순서에 의해 결정된다. ORDER BY는 테이블에 영향을 주지 않는다. 참조만 할 뿐, 물리적인 영향을 주지 않는다. 10강 복수의 열을 지정해 정렬하기 ex ) 상품코드와 해당 상품의 하위번호를 고려하여 정렬하라. 복수 열로 정렬 지정 언제나 같은 순서로 결과를 얻고 싶다면 반드시 ORDER BY 구로 순..
· 알고리즘
Project Teams(20044) [문제] 코딩 프로젝트 수업을 가르치는 수찬이는 프로젝트 팀을 가능하면 공정하게 구성하려고 한다. 프로젝트 팀 하나는 두 명의 학생으로 구성되는데, 각 학생들의 코딩 역량은 모두 다르다. 각 학생은 한 팀의 팀원이어야 한다. 공정성을 높이기 위해 수찬이는 팀원 코딩 역량의 합을 최대한 일정하게 유지하려고 한다. 학생들이 코딩 역량이 주어졌을 때 수찬이가 팀을 구성하는데 도움이 되는 프로그램을 작성하라. 문제를 간단하게 하기 위해, 학생 수는 2n이라 가정하자 (n은 양의 정수). 각 학생 si의 코딩 역량은 양의 정수 w(si)로 나타내면 한 i번째 팀 Gi의 코딩 역량은 w(Gi) = ∑s∈Giw(s)로 나타낼 수 있다. 작성할 프로그램 목적은 Sm = min{w(..
· 알고리즘
걷기(1459) [문제] 세준이는 학교에서 집으로 가려고 한다. 도시의 크기는 무한대이고, 도시의 세로 도로는 모든 정수 x좌표마다 있고, 가로 도로는 모든 정수 y좌표마다 있다. 세준이는 현재 (0, 0)에 있다. 그리고 (X, Y)에 위치한 집으로 가려고 한다. 세준이가 걸을 수 있는 방법은 두가지 인데, 하나는 도로를 따라서 가로나 세로로 한 블록 움직여서 이번 사거리에서 저 사거리로 움직이는 방법이고, 블록을 대각선으로 가로지르는 방법이 있다. 세준이가 집으로 가는데 걸리는 최소시간을 구하는 프로그램을 작성하시오. [입력] 첫째 줄에 집의 위치 X Y와 걸어서 한 블록 가는데 걸리는 시간 W와 대각선으로 한 블록을 가로지르는 시간 S가 주어진다. X와 Y는 1,000,000,000보다 작거나 같은..
· 알고리즘
카약과 강풍(2891) [문제] 2890번을 보면 알겠지만, 상근이는 카약 대회를 개최했다. 그런데, 갑자기 엄청난 강풍이 경기장에 불었고, 일부 카약이 부서졌다. 경기는 5분 안에 시작해야 하는 상황이다. 다행히 일부 팀은 혹시 모를 사태에 대비해서 카약을 하나 더 경기장에 들고 왔다. 카약은 매우 무겁고 운반하기 어렵다. 따라서, 자신의 바로 다음이나 전에 경기하는 팀에게만 카약을 빌려주려고 한다. 즉, 팀 4는 여분의 카약을 3이나 5에게만 빌려줄 수 있다. 다른 팀에게서 받은 카약은 또 다른 팀에게 빌려줄 수 없다. 또, 카약을 하나 더 가져온 팀의 카약이 손상되었다면, 여분의 카약으로 경기에 출전하게되고, 이 카약은 다른 팀에게 빌려줄 수 없다. 카약이 부서진 팀과 하나 더 가져온 팀이 주어진다..
· 알고리즘
거스름돈(5585) [문제] 타로는 자주 JOI잡화점에서 물건을 산다. JOI잡화점에는 잔돈으로 500엔, 100엔, 50엔, 10엔, 5엔, 1엔이 충분히 있고, 언제나 거스름돈 개수가 가장 적게 잔돈을 준다. 타로가 JOI잡화점에서 물건을 사고 카운터에서 1000엔 지폐를 한장 냈을 때, 받을 잔돈에 포함된 잔돈의 개수를 구하는 프로그램을 작성하시오. [입력] 입력은 한줄로 이루어져있고, 타로가 지불할 돈(1 이상 1000미만의 정수) 1개가 쓰여져있다. [출력] 제출할 출력 파일은 1행으로만 되어 있다. 잔돈에 포함된 매수를 출력하시오. [입력 예시] 380 [출력 예시] 4 [내 풀이] change=1000-int(input()) #거스름돈 money=[500, 100, 50, 10, 5, 1] ..
· 알고리즘
✔️ 문제 설명 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요. ✔️ code def solution(x): answer = True #x를 자릿수로 분리한다. arr=[int(a) for a in str(x)] #자릿수를 더한다. tmp=0 for i in arr: tmp+=i #자릿수 합으로 x가 나누어지는지 확인한다. if x%tmp==0: answer=True else: answer=False return answer
· SQL
04강 Hello World 실행하기 SELECT SQL 문에서 print("Hello World") 같은 존재. SELECT * FROM 테이블명 SELECT 명령(질의, 쿼리)으로 테이블을 읽어올 수 있다. 여기서 SELECT 는 명령 종류, * 는 모든 열, sample21 은 테이블명이다. - 애스터리스크 (*) 는 '모든 열' 을 의미하는 메타문자이다. - FROM은 처리 대상 테이블을 지정하는 키워드이다. 예약어와 데이터베이스 객체명 SELECT, FROM, WHERE ... 등은 구를 결정하는 키워드이자 예약어이다. 테이블 외에 다양한 데이터를 저장하거나 관리하는 '어떤 것' 을 데이터베이스 객체라고 하고 이름을 붙여 관리한다. - SELECT 예제에서 조회한 테이블도 sample21 이름을..