본문 바로가기

프로그래머스 풀이/Lv 3

(43)
[프로그래머스LV3] 가장 긴 팰린드롬 (C++) https://school.programmers.co.kr/learn/courses/30/lessons/12904#qna 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 팰린드롬이란 뒤집어도 같은 문자열이 되는 것을 말한다. aba , aaa 같은 경우가 팰린드롬이다. 나 같은 경우는 이 문제를 단순 반복문으로 풀어냈는데 효율성 테스트도 잘 통과되었다. 그러나 마나커? 마나허? 알고리즘을 사용하는 문제라고 한다. 다음에 한번 정리를 하는 것으로 하자 #include #include using namespace std;int solution(string s){ ..
[프로그래머스LV3] 연속 펄스 부분 수열의 합 (C++) https://school.programmers.co.kr/learn/courses/30/lessons/161988# 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr O(N^2)으로 풀어내면 손쉽게 풀 수 있지만 그렇게 하면 N = 50만이기 때문에 시간초과가 나기 때문에 당연히 시간초과가 난다.  먼저 주목한 부분은 "정해진 범위에 일정한 값을 더한다." 는 것을 주목했다. 그리고 그 정해진 범위의 합을 구해야하는 문제이다. 그래서 누적합을 시도해보았다.  예제인[2, 3, -6, 1, 3, -1, 2, 4] 이라고 해보자  23-613-1241부터2-3-6..
[프로그래머스SQL] 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기 https://school.programmers.co.kr/learn/courses/30/lessons/164671 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr LEFT 조인을 쓴 사람도 있었고 ORDER BY 후 LIMIT한 사람도 있었다. 난 여기서 서브쿼리를 두번 사용해보았다. 먼저 MAX VIEWS로 SELECT 하여 IDX를 구했고 구한 IDX를 포함하는 파일을 구해냈다.  CONCAT 함수를 잘 사용하는 것이 중요한 문제였다. -- 코드를 입력하세요SELECT CONCAT("/home/grep/src/", BOARD_ID, ..
[프로그래머스LV3] 파괴되지 않은 건물 https://school.programmers.co.kr/learn/courses/30/lessons/92344 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 누적합은 현재 배열에서 각 인덱스별로 누적된 합들을 간편하게 계산하고 사용할 수 있는 알고리즘이다.  그러나 이것을 응용하면 범위의 빈도수도 파악이 가능하다. 무슨말이냐하면 만약 1~10까지 숫자가 존재한다고 할 때 1~4, 2~5 두개가 주어진다고 하자. 그렇다면 1 -> 12 -> 23 -> 24 -> 25 -> 1 번 씩 범위에 포함된 것을 알 수 있다. 이것을 일일히 확인하면 첫번째 1~4가 ..
[프로그래머스SQL] 대장균의 크기에 따라 분류하기 1 https://school.programmers.co.kr/learn/courses/30/lessons/299307 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr CASE 문법을 알고있는가? 물어보는 문제이다. CASE    WHEN 조건 THEN     ELSE    END AS '인덱스이름' 이렇게 하면된다. -- 코드를 작성해주세요SELECT ID, CASE WHEN SIZE_OF_COLONY
[프로그래머스] 2020 카카오 인턴십 - 보석 쇼핑(C++) https://school.programmers.co.kr/learn/courses/30/lessons/67258 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  단순히 정확도만 맞춘다면 N^2으로 처리 가능하지만 10만개를 확인해야하기 때문에 O(N)으로 처리해야한다. 일정 구간을 나타내야하기 때문에 슬라이딩 윈도우라고 봐도 되고 투포인터라 봐도 될 것 같다. 그래서 답을 찾았다고 탈출, 리턴해주는 방식으로는 이 문제를 풀 수 없다. 후에 다이아몬드라는 보석이 더 있을 수도 있기 때문에 끝까지 탐색하고 값을 계속 최적화해야한다. AAABBCA 라고 주어졌다..
[프로그래머스SQL] 부서별 평균 연봉 조회하기 https://school.programmers.co.kr/learn/courses/30/lessons/284529 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 먼저 JOIN 한 후 JOIN 한 테이블에서 필요한 정보를 그룹바이하여 원하는 것을 가져오면 되는 문제이다. 여기서 중요한 건 반올림하는 함수를 아는가? 였는데 NUM = 123.456 ROUND(NUM, 0) = 123ROUND(NUM, 1) = 123.5 알아두자!SELECT HR_DEPARTMENT.DEPT_ID, HR_DEPARTMENT.DEPT_NAME_EN, ROUND(AVG(SAL), ..
[프로그래머스 SQL] 특정 조건을 만족하는 물고기별 수와 최대 길이 구하기 https://school.programmers.co.kr/learn/courses/30/lessons/298519 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr NULL이면 10으로 쳐야해서 이걸 대체 어떻게 처리해야하나 고민했는데  AVG(IFNULL(LENGTH, 10)) 이렇게 하면 LENGTH 가 NULL이면 10으로 쳐서 계산해준다고 한다 ;;; 이걸 알고 있으면 갑자기 쉬워진다. 그냥 구해서 HAVING 으로 정보 빼내서 양식에 맞게 AS 만 해주면 된다. -- 코드를 작성해주세요SELECT COUNT(FISH_TYPE) AS FISH_COUNT..