본문 바로가기

프로그래머스 풀이

(90)
[프로그래머스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){ ..
[프로그래머스LV2] 과제 진행하기 (C++) https://school.programmers.co.kr/learn/courses/30/lessons/176962 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr Greedy 라고 해야할까? 일반적인 구현문제이다. 주어진 조건을 잘 지키면 되지만 문자열로 주어진 시간을 분단위로 어떻게 잘 바꿔서 컨트롤할 수 있느냐가 관건인 문제였다.  우선순위 큐를 사용해 진행해야하는 밀린 과제들을 컨트롤 해 주었다. #include #include #include #include #include using namespace std;pair timesplit(string t..
[프로그래머스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가 ..
[프로그래머스LV2] 롤케이크 자르기 (C++) https://school.programmers.co.kr/learn/courses/30/lessons/132265?language=cpp 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 처음에 모두 오른쪽에 담아두고 하나씩 꺼내서 왼쪽으로 이동시키면 되는 문제. 그러나 이 과정에서 반복문을 사용해 모두 열람하면 안되고 Set과 Map을 적절하게 사용하여 반복하지 않는 것이 중요하다.  Map에 개수가 0이 되면 Set에서도 삭제하는 방식을 사용하면 현재 종류가 몇개 있는지 쉽게 파악하면서 진행할 수 있다.  #include #include #include #..
[프로그래머스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 라고 주어졌다..