Python3
Q
숫자로 이루어진 문자열 t와 p가 주어질 때, t에서 p와 길이가 같은 부분문자열 중에서, 이 부분문자열이 나타내는 수가 p가 나타내는 수보다 작거나 같은 것이 나오는 횟수를 return하는 함수 solution을 완성하세요.
예를 들어, t="3141592"이고 p="271" 인 경우, t의 길이가 3인 부분 문자열은 314, 141, 415, 159, 592입니다. 이 문자열이 나타내는 수 중 271보다 작거나 같은 수는 141, 159 2개 입니다.
<제한사항>
- 1 ≤ p의 길이 ≤ 18
- p의 길이 ≤ t의 길이 ≤ 10,000
- t와 p는 숫자로만 이루어진 문자열이며, 0으로 시작하지 않습니다.
A
def solution(t, p):
answer = 0
for i in range(0, len(t)-len(p)+1):
n = t[i:i+len(p)]
if n <= p:
answer += 1
return answer
풀이
- range(0, len(t) - len(p) + 1): t에서 p와 같은 길이의 부분 문자열 탐색
- n = t[i:i + len(p)]: p길이만큼 슬라이싱 하여 부분 문자열 추출
My SQL
Q
다음은 중고 거래 게시판 정보를 담은 USED_GOODS_BOARD 테이블과 중고 거래 게시판 사용자 정보를 담은 USED_GOODS_USER 테이블입니다. USED_GOODS_BOARD 테이블은 다음과 같으며 BOARD_ID, WRITER_ID, TITLE, CONTENTS, PRICE, CREATED_DATE, STATUS, VIEWS는 게시글 ID, 작성자 ID, 게시글 제목, 게시글 내용, 가격, 작성일, 거래상태, 조회수를 의미합니다. USED_GOODS_USER 테이블은 다음과 같으며 USER_ID, NICKNAME, CITY, STREET_ADDRESS1, STREET_ADDRESS2, TLNO는 각각 회원 ID, 닉네임, 시, 도로명 주소, 상세 주소, 전화번호를 를 의미합니다.
USED_GOODS_BOARD와 USED_GOODS_USER 테이블에서 완료된 중고 거래의 총금액이 70만 원 이상인 사람의 회원 ID, 닉네임, 총거래금액을 조회하는 SQL문을 작성해주세요. 결과는 총거래금액을 기준으로 오름차순 정렬해주세요.


A
SELECT b.USER_ID, b.NICKNAME, sum(a.PRICE) as TOTAL_SALES
from USED_GOODS_USER b inner join USED_GOODS_BOARD a
on a.WRITER_ID = b.USER_ID
where a.STATUS = 'Done'
group by b.USER_ID, b.NICKNAME
having sum(a.PRICE) >= 700000
order by TOTAL_SALES
같은 A(서브쿼리 존재)
SELECT U.USER_ID
,NICKNAME
,TARGETS.TOTAL_SALES
FROM USED_GOODS_USER as U
JOIN
(SELECT WRITER_ID AS USER_ID
,SUM(PRICE) AS TOTAL_SALES
FROM USED_GOODS_BOARD
WHERE STATUS = 'DONE'
GROUP BY WRITER_ID
HAVING SUM(PRICE) >= 700000) AS TARGETS
ON U.USER_ID = TARGETS.USER_ID
ORDER BY TARGETS.TOTAL_SALES
'코드카타(알고리즘+SQL)' 카테고리의 다른 글
| 07.04 코드카타 (3) | 2025.07.04 |
|---|---|
| 07.02 코드카타 (SQL floor) (0) | 2025.07.02 |
| 06.30 코드카타 (2) | 2025.06.30 |
| 06.27 코드카타 (0) | 2025.06.27 |
| 06.26 코드카타 (파이썬 배열, SQL 새 컬럼 추가) (0) | 2025.06.26 |