분류 전체보기 171

[그리디] 볼링공 고르기

문제 A,B 두 사람이 볼링을 치고 있습니다. 두 사람은 서로 무게가 다른 볼링공을 고르려고 합니다. 볼링공은 총 N개가 있으며 각 볼링공마다 무게가 적혀 있고, 공의 번호는 1번부터 순서대로 부여됩니다. 또한 같은 무게의 공이 여러 개 있을 수 있지만, 서로 다른 공으로 간주합니다. 볼링공의 무게는 1부터 M까지의 자연수 형태로 존재합니다. 예를 들어 N이 5이고, M이 3이며 각각의 무게가 차례대로 1,3,2,3,2일 때 각 공의 번호가 차례대로 1번부터 5번까지 부여됩니다. 이때 두 사람이 고를 수 있는 볼링공 번호의 조합을 구하면 다음과 같습니다. (1번, 2번), (1번, 3번), (1번, 4번), (1번, 5번), (2번, 3번), (2번, 5번), (3번, 4번), (4번, 5번) 결과적으로..

[그리디] 만들 수 없는 금액

문제 동네 편의점의 주인인 동빈이는 N개의 동전을 가지고 있습니다. 이때 N개의 동전을 이용하여 만들 수 없는 양의 정수 금액 중 최솟값을 구하는 프로그램을 작성하세요. 예를 들어, N=5 이고, 각 동전이 각각 3원, 2원, 1원, 1원, 9원짜리(화폐 단위) 동전이라고 가정합시다. 이때 동빈이가 만들 수 없는 양의 정수 금액 중 최솟값은 8원입니다. 또 다른 예시로, N=3이고, 각 동전이 각각 3원, 5원, 7원 동전이라고 가정합시다. 이때 동빈이가 만들 수 없는 양의 정수 금액 중 최솟값은 1원입니다. [입력 조건] 첫 째줄에는 동전의 개수를 나타내는 양의 정수 N이 주어집니다. (1≤N≤1,000) 둘째 줄에는 각 동전의 화폐 단위를 나타내는 N개의 자연수가 주어지며, 각 자연수는 공백으로 구분..

[그리디] 문자열 뒤집기

문제 백준 1439 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모두 뒤집는 것이다. 뒤집는 것은 1을 0으로, 0을 1로 바꾸는 것을 의미한다. 예를 들어 S=0001100 일 때, 전체를 뒤집으면 1110011이 된다. 4번째 문자부터 5번째 문자까지 뒤집으면 1111111이 되어서 2번 만에 모두 같은 숫자로 만들 수 있다. 하지만, 처음부터 4번째 문자부터 5번째 문자까지 문자를 뒤집으면 한 번에 0000000이 되어서 1번 만에 모두 같은 숫자로 만들 수 있다. 문자열 S가 주어졌을 때, 다솜이가 해야하는 행동의 최소 횟수를 출력하시오. 코드 #문..

[그리디] 곱하기 혹은 더하기

문제 각 자리가 숫자(0부터 9)로만 이루어진 문자열 S가 주어졌을 때, 왼쪽부터 오른쪽으로 하나씩 모든 숫자를 확인하며 숫자 사이에 'x' 혹은 '+' 연산자를 넣어 결과적으로 만들어질 수 있는 가장 큰 수를 구하는 프로그램을 작성하세요. 단, +보다 x를 먼저 계산하는 일반적인 방식과는 달리, 모든 연산은 왼쪽에서부터 순서대로 이루어진다고 가정합니다. 예를 들어 02984라는 문자열이 주어지면, 만들어질 수 있는 가장 큰수는 ((((0 + 2) 9) 8) * 4) = 576 입니다. 코드 # 곱하기 혹은 더하기 # * + 연산자를 넣어 가장 큰 수를 구하는 프로그램 작성 # 왼쪽 부터 순서대로 s = input() #첫번째 문자를 숫자로 변경 result = int(s[0]) for i in rang..

[그리디] 모험가 길드

문제: 한 마을에 모험가가 N명 있습니다. 모험가 길드에서는 N명의 모험가를 대상으로 '공포도'를 측정했는데,'공포도'가 높은 모험가는 쉽게 공포를 느껴 위험 상황에서 제대로 대처할 능력이 떨어집니다. 모험가 길드장인 동빈이는 모험가 그룹을 안전하게 구성하고자 공포도가 X인 모험가는 반드시 X명 이상으로구성한 모험가 그룹에 참여해야 여행을 떠날 수 있도록 규정했습니다. 동빈이는 최대 몇 개의 모험가 그룹을 만들 수 있는지 궁금합니다. N명의 모험가에 대한 정보가 주어졌을 때, 여행을 떠날 수 있는 그룹 수의 최댓값을 구하는 프로그램을 작성하세요. 예를 들어, N = 5이고, 각 모험가의 공포도가 다음과 같다고 가정합시다. 2 3 1 2 2 이 경우 그룹 1에 공포도가 1,2,3인 모험가를 한 명씩 넣고,..

(Python/파이썬) 백준 21760번 - 야구시즌

1. 문제출처 https://www.acmicpc.net/problem/21760 21760번: 야구 시즌 KOI 야구 리그에는 $N$개의 지역리그가 존재하고 각 지역리그에는 $M$개의 팀이 존재해서, 리그 전체로는 $N \times M$개의 팀으로 운영되고 있다. 한 시즌에 각 팀은 같은 지역리그 팀뿐만 아니라 다 www.acmicpc.net 2. 코드 1 2 3 4 5 6 7 for _ in range(int(input())): n,m,k,d = map(int,input().split()) b = 2*d//(k*n*m*(m-1) + m*m*n*(n-1)) if b: print(m*(m-1)*n*k*b//2 + m*m*n*(n-1)*b//2) else: print(-1) Colored by Color ..

(Python/파이썬) 백준 10804번 - 카드 역배치

문제출처 : https://www.acmicpc.net/problem/10804 10804번: 카드 역배치 1부터 20까지 오름차순으로 놓인 카드들에 대해, 입력으로 주어진 10개의 구간 순서대로 뒤집는 작업을 했을 때 마지막 카드들의 배치를 한 줄에 출력한다. www.acmicpc.net 1. 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #순서 바꾸기 -> 슬라이스 기능 #배열 순서 뒤집을 땐 [::-1] 이용 card = [i for i in range(1,21)] for _ in range(10): a,b = map(int,input().split()) #인덱스 0부터 시작하려고 a-=1 #리스트에서 index a부터 b까지 잘라서 리스트로 반환 #[::-1] -> 역으로 뒤집 ..

(Python/파이썬) 백준 2163번 - 초콜릿 자르기

문제출처 : https://www.acmicpc.net/problem/2163 2163번: 초콜릿 자르기 정화는 N×M 크기의 초콜릿을 하나 가지고 있다. 초콜릿은 금이 가 있는 모양을 하고 있으며, 그 금에 의해 N×M개의 조각으로 나눠질 수 있다. 초콜릿의 크기가 너무 크다고 생각한 그녀는 초콜릿 www.acmicpc.net 1. 코드 1 2 n, m = map(int,input().split()) print(n*m-1) cs 2. 해결과정 NXM 크기의 초콜릿을 가로방향으로 자르든 세로방향을 먼저 자르든 항상 결과가 같기 때문에 식을 구해주면 가로방향으로 먼저 자른다고 했을 경우 나올 수 있는 경우의 수는 (N-1) * M + (M-1) = N*M - M + M - 1 = N*M - 1 이다. 따라..

[SQL] 관계 데이터베이스

관계 데이터 모델 Relation Database란 - 관계형 데이터베이스는 현재 가장 많이 사용하고 있는 데이터베이스의 종류 중 하나이다. - 관계형 데이터베이스는 테이블로 이루어져 있고, 이 테이블은 키(key)와 값(value)의 관계로 나타낸다. - 데이터의 종속성을 관계로 표현하는 것이 관계형 데이터베이스의 특징이다. * 용어정리 - 열(column) : 필드라고 부르면, 항목의 속성(명칭)을 나타낸다. 필드마다 char, integer 처럼 데이터 유형을 정할 수 있다. - 행(row) : 레코드(record)라고 부르며, 각 데이터 항목을 저장한다. - 스키마(schema) : 필드는 데이터 유형 뿐만 아니라 제약사항도 지정할 수 있는데 , 이러한 제약사항을 스키마라고 부른다. 필드는 중복 ..

공부 자료/SQL 2021.10.05