본문 바로가기

전체 글

(430)
[프로그래머스] 시소 짝꿍 코드 힌트1. 빠르게 탐색할 수 있는 자료구조처음 문제를 풀었을 때는 2중 for문을 사용하여 풀었지만, 시간이 많이 소요되어 시간 복잡도 문제가 발생했습니다.빠르게 요소를 찾기 위해 이진 탐색을 사용하는 방법을 고려했습니다.여기서는 HashMap을 사용하여 key는 요소(무게), value는 해당 요소의 빈도로 활용하여 문제를 풀었습니다.2. 짝꿍 맞추기시소 짝꿍이 되는 조건은 두 무게가 같은 비율일 때입니다.예를 들어, 무게가 2(m), 3(m), 4(m)인 지점에 좌석이 있을 때, 두 좌석 간의 비율이 같으면 짝꿍이 됩니다.즉, w1 * {2, 3, 4} == w2 * {2, 3, 4} 조건 중 하나라도 만족하면 짝꿍을 찾을 수 있습니다.3. 중복 허용만약 같은 무게를 가진 사람이 여러 명 있으면,..
[프로그래머스 (Kotlin)] 음양 더하기 코드 힌트1. 배열 순회목표: 두 개의 배열을 동시에 순회하여 각 요소에 접근합니다.방법: 각 배열의 인덱스를 사용하여 대응하는 요소를 가져옵니다.2. 부호 확인목표: 부호 배열의 값을 통해 각 절대값에 대해 더할지 뺄지를 결정합니다.방법: 부호 배열의 요소가 true인 경우 해당 절대값을 더하고, false인 경우 해당 절대값을 뺍니다.3. 최종 결과 반환목표: 모든 계산이 끝난 후 최종 결과값을 반환합니다.방법: 계산된 값을 저장한 변수에서 결과를 반환합니다.정답은 더보기 클릭더보기class Solution { fun solution(absolutes: IntArray, signs: BooleanArray): Int { var result = 0 // 결과를 저장할 변수 초기화 ..
[프로그래머스 (Kotlin)] 콜라츠 추측 코드 힌트1. 반복문을 통한 수열 생성while (n > 1 && result n의 값이 1 이하가 되거나 반복 횟수가 500을 초과할 경우 종료됩니다.2. 짝수 및 홀수 처리짝수일 때: if (n % 2 == 0L) 조건을 사용하여 n이 짝수인지 확인합니다.짝수인 경우 n /= 2를 통해 n을 2로 나누어 값을 업데이트합니다.홀수일 때: else 블록을 통해 홀수인 경우 n을 3배하고 1을 더하는 작업을 수행합니다: n = n * 3 + 1.3. 결과 횟수 관리result++를 사용하여 각 반복이 실행될 때마다 카운트를 증가시킵니다.결과는 반복이 종료된 후 최종적으로 반환됩니다.4. 종료 조건500을 초과한 경우: if (result > 500) 조건문으로 결과가 500을 초과하면 -1을 반환하여 처리..
[프로그래머스 (Oracle)] 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기 코드 힌트1. 조인 활용두 테이블(USED_GOODS_BOARD, USED_GOODS_FILE)을 JOIN하여 관련 데이터를 결합합니다.ON B.BOARD_ID = F.BOARD_ID 조건을 통해 각 게시물에 대한 파일 정보를 가져옵니다.2. 조회수 최대값 조건WHERE B.VIEWS = (SELECT MAX(VIEWS) FROM USED_GOODS_BOARD)를 사용하여 조회수가 가장 높은 게시물만 선택합니다.서브쿼리를 통해 가장 높은 조회수를 계산하고, 이를 사용하여 해당 게시물과 관련된 파일을 필터링합니다.3. 파일 경로 생성SELECT문에서 || 연산자를 사용하여 파일 경로를 생성합니다./home/grep/src/, BOARD_ID, FILE_ID, FILE_NAME, FILE_EXT를 결합하여 ..
[프로그래머스 (Oracle)] 조건에 부합하는 중고거래 상태 조회하기 코드 힌트CASE 문을 이용한 상태 변환CASE 문을 사용하여 상태값을 조건에 따라 변환합니다.WHEN 'SALE' THEN '판매중', WHEN 'RESERVED' THEN '예약중', ELSE '거래완료'와 같이 각 상태값을 텍스트로 변환할 수 있습니다.날짜 형식 변환TO_CHAR를 사용하여 날짜를 원하는 형식으로 변환합니다.CREATED_DATE 필드를 'YYYY-MM-DD' 형식으로 변환하여 특정 날짜와 비교할 수 있습니다.정렬ORDER BY 절을 사용하여 데이터를 정렬합니다.BOARD_ID DESC를 사용하여 게시글 ID 기준으로 내림차순 정렬해 최신 데이터가 가장 위에 표시됩니다.  정답은 더보기 클릭더보기더보기-- 게시글 ID, 작성자 ID, 제목, 가격을 선택SELECT BOARD_ID, ..
[프로그래머스 (Kotlin)] 서울에서 김서방 찾기 코드 힌트배열 순회:seoul 배열의 모든 요소를 하나씩 확인합니다.for (i in seoul.indices)를 사용하면 배열의 인덱스를 쉽게 가져올 수 있습니다.조건문 사용:각 요소가 "Kim"인지 확인하기 위해 if (seoul[i] == "Kim") 조건문을 사용합니다.만약 조건이 참이라면, 해당 인덱스를 포함한 문자열을 반환합니다.여러가지 방식으로 풀기:정답에 같이 적겠습니다. 정답은 더보기 클릭더보기class Solution { fun solution(seoul: Array): String { // "Kim"의 인덱스를 찾아서 결과 문자열을 생성하여 반환합니다. // seoul 배열의 각 요소를 순회하면서 "Kim"을 찾습니다. for ..
[프로그래머스 (Kotlin)] 자릿수 더하기 코드 힌트각 자리수의 합 구하기:주어진 숫자 n의 각 자리수를 추출해서 더한 값을 구하는 문제입니다.n = 1234라면, 1 + 2 + 3 + 4 = 10을 계산하는 방식입니다.숫자의 마지막 자리 추출하기:num % 10은 숫자의 마지막 자리를 가져오는 연산입니다.1234 % 10은 4를 반환합니다.숫자 줄이기:num /= 10은 마지막 자리를 제거하는 과정입니다.1234를 10으로 나누면 123이 되어, 다시 3을 처리할 수 있습니다.반복:이 과정을 num이 0이 될 때까지 반복하여 각 자리수를 모두 더한 값을 계산합니다.다른 방법while 문을 사용하여 % 연산자를 이용해 자릿수를 구하는 방식도 있지만 문자열로 변경하여 풀 수도 있습니다.만약 조금 더 알고 싶다면 여기를 누르세요.  정답은 더보기 클..
[프로그래머스 (Oracle)] 조건에 맞는 사용자와 총 거래금액 조회하기 코드 힌트거래 완료된 기록만 조회:WHERE STATUS = 'DONE' 조건을 사용하여 거래가 완료된 상품들만 조회하고, 미완료된 거래는 제외합니다.거래가 완료된 상태만 합산하여 총 판매 금액을 계산합니다.사용자별 판매 금액 계산:GROUP BY U.USER_ID, U.NICKNAME를 사용하여 각 사용자별로 판매한 금액을 합산합니다.이때, SUM(B.PRICE)를 통해 각 사용자가 완료한 거래들의 총 판매 금액을 구합니다.판매 금액 필터링:HAVING SUM(B.PRICE) >= 700000 조건을 사용하여 700,000원 이상의 판매 금액을 달성한 사용자만 결과에 포함시킵니다.HAVING은 집계 함수 이후의 필터링에 사용됩니다.총 판매 금액에 따른 정렬:ORDER BY TOTAL_SALES로 결과를..