TIL(Today I Learned)_데일리루틴_24.11.30.Sat

728x90

데일리루틴 SQL

MySQL 조건에 맞는 사용자 정보 조회하기 정답입니다.

SELECT 
    U.USER_ID, 
    U.NICKNAME, 
    CONCAT(U.CITY, ' ', U.STREET_ADDRESS1, ' ', COALESCE(U.STREET_ADDRESS2, '')) AS 전체주소,
    CONCAT(SUBSTR(U.TLNO, 1, 3), '-', SUBSTR(U.TLNO, 4, 4), '-', SUBSTR(U.TLNO, 8, 4)) AS 전화번호
FROM 
    USED_GOODS_USER U
JOIN 
    (SELECT WRITER_ID 
     FROM USED_GOODS_BOARD 
     GROUP BY WRITER_ID 
     HAVING COUNT(*) >= 3) B
ON 
    U.USER_ID = B.WRITER_ID
ORDER BY 
    U.USER_ID DESC;

 

  • SELECT 문:
    • 사용자 ID, 닉네임, 전체 주소, 포맷팅된 전화번호를 선택합니다.
    • 전체 주소는 시 + 도로명 주소 + 상세 주소로 구성하며, 상세 주소가 없으면 빈칸 처리합니다.
    • 전화번호는 xxx-xxxx-xxxx 형식으로 변환합니다.
  • FROM 절:
    • 사용자 정보를 담고 있는 USED_GOODS_USER 테이블에서 데이터를 가져옵니다.
  • JOIN 절:
    • USED_GOODS_BOARD 테이블에서 게시물을 3건 이상 등록한 사용자만 필터링합니다.
    • 작성자 ID를 기준으로 두 테이블을 연결합니다.
  • ORDER BY:
    • 결과를 사용자 ID 기준으로 내림차순 정렬합니다.

 


데일리루틴 알고리즘

Java 카드 뭉치 정답입니다.

class Solution {
    public String solution(String[] cards1, String[] cards2, String[] goal) {
        
        int one = 0;
        int two = 0;
        
        for(String g : goal) {
            if(one < cards1.length && cards1[one].equals(g)) {
                one++;
            } else if(two < cards2.length && cards2[two].equals(g)) {
                two++;
            } else {
                return "No";
            }
        }
        return "Yes";
        
    }
}

 

  • int one = 0;와 int two = 0;
    • 첫 번째와 두 번째 카드 뭉치에서 사용할 카드의 위치를 나타내는 인덱스를 초기화합니다.
  • for(String g : goal)
    • 목표 단어 배열(goal)을 순서대로 확인하기 위해 반복문을 실행합니다.
  • if 조건문
    • 현재 단어(g)가 첫 번째 카드 뭉치(cards1)에서 순서에 맞게 사용 가능한 경우, 해당 카드의 인덱스를 증가시킵니다.
  • else if 조건문
    • 현재 단어(g)가 두 번째 카드 뭉치(cards2)에서 사용 가능한 경우, 해당 카드의 인덱스를 증가시킵니다.
  • else
    • 두 카드 뭉치 모두에서 단어를 사용할 수 없으면 "No"를 반환합니다.
  • return "Yes";
    • 모든 단어를 올바르게 사용한 경우 "Yes"를 반환합니다.

 

728x90
반응형
LIST