전체 글108 [SQL] 평균 일일 대여 요금 구하기 문제 설명 다음은 어느 자동차 대여 회사에서 대여중인 자동차들의 정보를 담은 CAR_RENTAL_COMPANY_CAR 테이블입니다. CAR_RENTAL_COMPANY_CAR 테이블은 아래와 같은 구조로 되어있으며, CAR_ID, CAR_TYPE, DAILY_FEE, OPTIONS 는 각각 자동차 ID, 자동차 종류, 일일 대여 요금(원), 자동차 옵션 리스트를 나타냅니다. Column name Type Nullable CAR_ID INTEGER FALSE CAR_TYPE VARCHAR(255) FALSE DAILY_FEE INTEGER FALSE OPTIONS VARCHAR(255) FALSE 자동차 종류는 '세단', 'SUV', '승합차', '트럭', '리무진' 이 있습니다. 자동차 옵션 리스트는 콤마.. 코딩테스트 2024. 3. 20. [SQL] 흉부외과 또는 일반외과 의사 목록 출력하기 문제 설명 다음은 종합병원에 속한 의사 정보를 담은DOCTOR 테이블입니다. DOCTOR 테이블은 다음과 같으며 DR_NAME, DR_ID, LCNS_NO, HIRE_YMD, MCDP_CD, TLNO는 각각 의사이름, 의사ID, 면허번호, 고용일자, 진료과코드, 전화번호를 나타냅니다. Column name Type Nullable DR_NAME VARCHAR(20) FALSE DR_ID VARCHAR(10) FALSE LCNS_NO VARCHAR(30) FALSE HIRE_YMD DATE FALSE MCDP_CD VARCHAR(6) TRUE TLNO VARCHAR(50) TRUE 문제 DOCTOR 테이블에서 진료과가 흉부외과(CS)이거나 일반외과(GS)인 의사의 이름, 의사ID, 진료과, 고용일자를 조회.. 코딩테스트 2024. 3. 20. [DFS/BFS] 타겟 넘버 문제 설명 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3 사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 주어지는 숫자의 개수는 2개 이상 20개 이하입니다. 각 숫자는 1 이상 50 이하인 자연수입니다. 타겟 넘버는 1 이상 100.. 코딩테스트 2024. 3. 20. [1758] 알바생 경호 1758번: 알바생 강호 첫째 줄에 스타박스 앞에 서 있는 사람의 수 N이 주어진다. N은 100,000보다 작거나 같은 자연수이다. 둘째 줄부터 총 N개의 줄에 각 사람이 주려고 하는 팁이 주어진다. 팁은 100,000보다 작거나 같 www.acmicpc.net 팁을 가장 적게 주려는 사람이 후순위여야 0으로 상쇄되어 팁을 더 많이 받을 수 있다. # 알바생 강호 n = int(input()) tips = [] for _ in range(n) : tips.append(int(input())) tips.sort() result = 0 #제일 작은 수에 팁을 ㄱㄱ for tip in tips : money = tip - (n - 1) if money > 0 : result += money n -= 1 pr.. 코딩테스트 2024. 2. 22. [11508] 2 + 1세일 11508번: 2+1 세일 KSG 편의점에서는 과일우유, 드링킹요구르트 등의 유제품을 '2+1 세일'하는 행사를 하고 있습니다. KSG 편의점에서 유제품 3개를 한 번에 산다면 그중에서 가장 싼 것은 무료로 지불하고 나머지 두 www.acmicpc.net 내림차순으로 정렬된 price 배열에 3으로 나누어 떨어지는 수(0부터 배열이 시작하므로 나머지가 2여야 한다)를 제외한 합이 최대이다. 가격이 큰 물건이 3묶음에 들어가야 하며 묶음되지 않은 물건들을 제외했을 때 가격이 가장 커지려면 내림차순으로 이동하며 묶여야 한다. # 2 + 1 세일 n = int(input()) price = [] for _ in range(n) : price.append(int(input())) price.sort(revers.. 코딩테스트 2024. 2. 22. [18121] 문자열 압축 문제 알파벳 소문자로만 이루어진 문자열 S가 주어진다. 사전에는 K개의 단어가 사전 순으로 등재되어 있다. 또한, 사전의 각 단어에는 ‘단어 번호’가 있다. 사전에서 i번째로 등장하는 단어의 번호는 i이다. 우리가 사용할 압축 방법은, 문자열을 사전에 등재된 단어들로 쪼개어, 각 단어를 해당하는 단어 번호로 바꾸는 것이다. 같은 단어를 여러 번 사용해도 된다. 주어진 문자열을 압축했을 때, 결과적으로 나오는 수열의 길이가 가장 짧게 되도록 압축하라. 입력 첫째 줄에 K가 주어진다. (1 ≤ K ≤ 104) 둘째 줄부터 K개의 줄에 걸쳐 1번부터 사전 순으로 사전의 단어가 주어진다. 각 단어는 알파벳 소문자로만 이루어져 있고, 길이는 1자 이상 103자 이하이다. 중복된 단어는 주어지지 않는다. 마지막 줄.. 코딩테스트 2024. 2. 22. 미로 탈출 문제 N x M 크기의 직사각형 형태의 미로에 여러 마리의 괴물이 있어 이를 피해 탈출해야 한다. 현재 위치는 (1, 1)이고 미로의 출구는 (N,M)의 위치에 존재하며 한 번에 한 칸씩 이동할 수 있다. 괴물이 있는 부분은 0으로, 괴물이 없는 부분은 1로 표시되어 있다. 미로는 반드시 탈출할 수 있는 형태로 제시된다. 탈출하기 위해 움직여야 하는 최소 칸의 개수를 구하라. 칸을 셀 때는 시작 칸과 마지막 칸을 모두 포함해서 계산한다. 입력 첫째 줄에 두 정수 N, M (4= m : continue # 이미 방문한 경우 / 갈 수 없는 경우 무시 if graphs[nx][ny] != 1 : continue graphs[nx][ny] = graphs[x][y] + 1 queue.append((nx,ny).. 코딩테스트 2024. 2. 22. 특정 거리의 도시 찾기 문제 어떤 나라에는 1번부터 N번까지의 도시와 M개의 단방향 도로가 존재한다. 모든 도로의 거리는 1이다. 이 때 특정한 도시 X로부터 출발하여 도달할 수 있는 모든 도시 중에서, 최단 거리가 정확히 K인 모든 도시들의 번호를 출력하는 프로그램을 작성하시오. 또한 출발 도시 X에서 출발 도시 X로 가는 최단 거리는 항상 0이라고 가정한다. 예를 들어 N=4, K=2, X=1일 때 다음과 같이 그래프가 구성되어 있다고 가정하자. 이 때 1번 도시에서 출발하여 도달할 수 있는 도시 중에서, 최단 거리가 2인 도시는 4번 도시 뿐이다. 2번과 3번 도시의 경우, 최단 거리가 1이기 때문에 출력하지 않는다. 입력 첫째 줄에 도시의 개수 N, 도로의 개수 M, 거리 정보 K, 출발 도시의 번호 X가 주어진다. (.. 코딩테스트 2024. 2. 22. [5347] LCM 5347번: LCM 첫째 줄에 테스트 케이스의 개수 n이 주어진다. 다음 n개 줄에는 a와 b가 주어진다. a와 b사이에는 공백이 하나 이상 있다. 두 수는 백만보다 작거나 같은 자연수이다. www.acmicpc.net 최소공약수를 구하는 유클리드 호제법은 할 때마다 까먹기 때문에 가끔 이렇게 복기해줄 필요가 있다고 생각한다. 유클리드 호제법 이때 최대공배수는 a와 b의 곱을 최대 공약수로 나눈 값이다. 유클리드 호제법으로 재귀를 이용해 최대 공약수를 구하는 코드는 다음과 같다. #include using namespace std; int main() { int n; cin >> n; while(n--){ int a, b; cin >> a >> b; int temp = a * b; while( b != .. 코딩테스트 2024. 2. 20. [11725] 트리의 부모 찾기 11725번: 트리의 부모 찾기 루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오. www.acmicpc.net 양방향 리스트로 주어진 두 노드 사이의 관계를 벡터로 표시한 뒤, 현재 노드를 기준으로 DFS를 진행하여 현재 노드와 연결되어 있는 노드의 ROOT를 DFS로 찾는 것이다. 예제 1번의 코드를 살펴보면, 트리의 루트를 1이라고 했으므로 시작은 1부터 시작한다. 연결된 노드를 발견할 때마다 발견된 노드가 현재 노드의 자식 노드(현재노드가 부모 노드)라는 걸 알 수 있다. 이후 발견된 노드를 부모로 하는 다른 노드를 찾기 위해 DFS를 진행한다. 연결 리스트 순서대로 부모 노드를 확인하지 않는 이유는 트리 구조이기 때문에 DFS로.. 카테고리 없음 2024. 2. 20. [백준 20436] ZOAC3 https://www.acmicpc.net/problem/20436 20436번: ZOAC 3 첫 번째 줄에는 두 알파벳 소문자 sL, sR이 주어진다. sL, sR은 각각 왼손 검지손가락, 오른손 검지손가락의 처음 위치이다. 그 다음 줄에는 알파벳 소문자로 구성된 문자열이 주어진다. 문자열의 www.acmicpc.net #include using namespace std; int map[3][10]; string top = "qwertyuiop"; string middle = "asdfghjkl"; string bottom = "zxcvbnm"; struct Info{ int r; int c; char hand; }; Info l, r; Info find_coor(char key){ int _r = 0.. 카테고리 없음 2024. 2. 12. [이코테] 왕실 나이트 #include using namespace std; string inputData; // 나이트가 이동할 수 있는 8가지 방향 정의 int dx[] = {-2, -1, 1, 2, 2, 1, -1, -2}; int dy[] = {-1, -2, -2, -1, 1, 2, 2, 1}; int main(void) { // 현재 나이트의 위치 입력받기 cin >> inputData; int row = inputData[1] - '0'; int column = inputData[0] - 'a' + 1; // 8가지 방향에 대하여 각 위치로 이동이 가능한지 확인 int result = 0; for (int i = 0; i < 8; i++) { // 이동하고자 하는 위치 확인 int nextRow = row + dx[.. 카테고리 없음 2024. 2. 3. 이전 1 2 3 4 5 6 7 8 9 다음