본문 바로가기

전체 글

(69)
[그리디/python] 만들 수 없는 금액 (정답, 내 해석 및 풀이) 문제 동네 편의점의 주인인 동빈이는 N개의 동전을 가지고 있습니다. 이때 N개의 동전을 이용하여 만들 수 없는 양의 정수 금액 중 최솟값을 구하는 프로그램을 작성하세요. 예를 들어, N=5 이고, 각 동전이 각각 3원, 2원, 1원, 1원, 9원짜리(화폐 단위) 동전이라고 가정합시다. 이때 동빈이가 만들 수 없는 양의 정수 금액 중 최솟값은 8원입니다. 또 다른 예시로, N=3이고, 각 동전이 각각 3원, 5원, 7원 동전이라고 가정합시다. 이때 동빈이가 만들 수 없는 양의 정수 금액 중 최솟값은 1원입니다. 정답 n = int(input()) coin = list(map(int,input().split())) coin.sort() target = 1 for i in coin: if i > target:..
[SQL] 이전, 이후 행과 관련된 키워드(LAG, LEAD / PRECEDING, FOLLOWING) 윈도우 함수에서 범위를 정의하거나 행의 위치를 나타내는 데 사용되는 키워드 정리 LAG() 현재 행을 기준으로 이전의 행을 가리켜 값을 가져오는 키워드 LAG(column, offset, default) -- column : 값을 가져올 컬럼명, -- offset : 몇 개의 행 이전의 값을 가져올건지 ( 3행 전의 값 등등.. ) -- default : 지정된 행이 없을때 반환할 기본값 설정 LEAD() / READ() 현재 행을 기준으로 이후 행을 가리켜 값을 가져오는 키워드 LEAD(column, offset, default) -- column : 값을 가져올 컬럼명, -- offset : 몇 개의 행 이후의 값을 가져올건지 ( 3행 후의 값 등등.. ) -- default : 지정된 행이 없을때 ..
[SQL] 순위를 구하는 함수 (RANK, DENSE_RANK, ROW_NUMBER) 2023.09.07 - [자격증고나리/⚽ SQLD 슈웃] - [SQL] 상위 n개를 선택하는 윈도우 함수 (LIMIT,TOP,ROWNUM, FETCH FRIST) 앞선 포스팅에서 상위 n개의 레코드를 구하는 함수를 살펴봤는데 이번엔 비슷하지만 다른 순위를 구하는 함수에 대해 알아보자 단순히 전체 데이터중 상위 n개를 구하는 LIMIT와 같은 함수와는 달리 각 레코드 별 순위를 매겨 그 중 n등까지를 조회하는 함수로 RANK(), DENSE_RANK(), ROW_NUMBER() 세 가지가 있다 유사하지만 디테일이 조금씩 다르니 차이를 잘 알아놓는게 포인트임!! 예를 들어, 학생테이블이 다음과 같을 때 점수를 기준으로 순위를 매겨보자 홍길동, 김길동,차길동 학생의 점수가 100점으로 같을 때 순위를 매길 수..
[SQL] 상위 n개를 선택하는 윈도우 함수 (LIMIT,TOP,ROWNUM, FETCH FRIST) SQL의 윈도우 함수에는 다양한 것이 있는데, 그 중에서 전체 레코드 중 상위 n 개를 선택하는 함수에 대해 알아보자 함수를 사용하는 방법과 위치에 조금씩 차이가 있지만 기본적인 기능은 동일하다. MySQL - LIMIT -- 학생테이블의 전체 데이터에서 맨 위부터 10개의 레코드를 조회 -- 전체 데이터를 select 한 후에 사용 SELECT * FROM student LIMIT 10; Oracle - ROWNUM / FETCH FIRST -- 학생테이블의 전체 데이터에서 10개까지의 행을 조회 -- where절에 조건을 주는 방식으로 사용 SELECT * FROM student WHERE ROWNUM
[이코테/프로그래머스/구현] 문자열 압축 문제 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자열에서 같은 값이 연속해서 나타나는 것을 그 문자의 개수와 반복되는 값으로 표현하여 더 짧은 문자열로 줄여서 표현하는 알고리즘을 공부하고 있습니다.간단한 예로 "aabbaccc"의 경우 "2a2ba3c"(문자가 반복되지 않아 한번만 나타난 경우 1은 생략함)와 같이 표현할 수 있는데, 이러한 방식은 반복되는 문자가 적은 경우 압축률이 낮다는 단점이 있습니다. 예를 들면, "abcabcdede"와 같은 문자열은 전혀 압축되지 않습니다. "어피치"는 이러한 단점을 해결하기 위해 문자열을 1개 이상의 단위로 잘라서 압..
[SQL] NOT EXISTS NOT EXISTS 주로 서브쿼리와 함께 사용되며 서브쿼리의 결과가 존재하지 않을 때 해당 조건을 만족하는 행을 검색하는 데 사용됨 (= 서브쿼리에 데이터가 존재하지 않을 경우 데이터가 조회된다.) 예를 들어, 주문(Order) 테이블에서 아직 발송되지 않은 주문을 선택하는 SQL 쿼리를 작성할 때, SELECT OrderID, CustomerID FROM Orders WHERE NOT EXISTS ( SELECT 1 FROM Shipments WHERE Shipments.OrderID = Orders.OrderID ); 여기서 SELECT 문에 1을 사용하면 해당 테이블의 개수만큼 1로 된 행을 출력 1은 TRUE를 의미하며 값의 존재유무(조건을 만족하는 결과가 있는지 여부)가 더 중요하기 때문에 간편..
[SQL] 데이터베이스의 JOIN 0. JOIN 관계형 데이터베이스에서 두 개 이상의 테이블을 연결하고 관련된 데이터를 결합하는 데 사용되는 연산 1. INNER JOIN 두 개 이상의 테이블을 연결하고, 두 테이블 간에 일치하는 행만 반환 2. OUTER JOIN INNER JOIN의 반대 연산으로 두 개 이상의 테이블을 연결하고 일치하지 않는 행도 포함하여 결과를 반환하는 연산 2-1. LEFT OUTER JOIN 왼쪽 테이블의 모든 행을 유지하고 오른쪽 테이블에서 일치하는 행이 있는 경우에만 오른쪽 테이블의 해당 행을 가져옴 일치하지 않는 경우에는 NULL 값으로 채움 2-2. RIGHT OUTER JOIN LEFT OUTER JOIN의 반대개념. 오른쪽 테이블의 모든 행을 유지하고 왼쪽 테이블에서 일치하는 행이 있는 경우에만 해당..
[이코테/구현] 문자열 재정렬 문제 알파벳과 숫자가 섞인 문자열을 입력받았을 떄 문자는 오름차순정렬, 숫자는 모두 더해 문자열의 맨 끝에 출력하라 입출력예시 K1KA5CB7 ABCKK13 내가 쓴 답 s = list(input()) result=[] sum=0 is_exist = False for i in range(len(s)): if s[i].isnumeric() == True: if not is_exist: is_exist = True sum+=int(s[i]) else: result.append(s[i]) result.sort() if is_exist: result.append(str(sum)) print(''.join(result)) 풀이 로직 자체는 어렵지 않았는데 리스트의 원소의 형태를 구별하는 과정이 필수적이었지만 파이..