반응형

알고리즘 문제 240

프로그래머스 자동차 평균 대여 기간 구하기 [Lv. 2] (MySQL)

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krCAR ID별 평균 자동차 대여 기간을 조회해주세요. SELECT CAR_ID, ROUND(AVG(DATEDIFF(END_DATE, START_DATE)+1), 1) AS AVERAGE_DURATIONFROM CAR_RENTAL_COMPANY_RENTAL_HISTORYGROUP BY CAR_IDHAVING AVERAGE_DURATION >= 7ORDER BY AVERAGE_DURATION DESC, CAR_ID DESC SELECT CAR_ID, ROUND(AVG(DATEDIFF(END_DATE, START_DATE) + 1), 1) AS AVERAGE_DU..

프로그래머스 분기별 분화된 대장균의 개체 수 구하기 [Lv. 2] (MySQL)

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr각 분기별 분화된 대장균의 개체의 총 수를  출력  SELECT CONCAT((MONTH(DIFFERENTIATION_DATE) + 2) DIV 3, 'Q') AS QUARTER, COUNT(*) AS ECOLI_COUNTFROM ECOLI_DATAGROUP BY QUARTERORDER BY QUARTER; MONTH(DIFFERENTIATION_DATE): 날짜에서 월을 추출(MONTH(...) + 2) DIV 3:월을 3개월 단위로 나누어 분기를 계산합니다.+ 2는 각 분기 마지막 달(3, 6, 9, 12)을 포함시키기 위함입니다.CONCA..

해커랭크 Matrix Layer Rotation

Matrix Layer Rotation | HackerRankRotate the matrix R times and print the resultant matrix.www.hackerrank.com행렬과 왼쪽으로 회전하는 횟수 r을 입력 받을 때, 회전된 모습을 출력 하는 문제입니다. 풀이 방법회전하는 각 테두리를 각각의 deque에 넣어주었습니다.그와 동시에 deque를 행렬로 옮기기 쉽도록 deque 배열이 가지고 있는 각 index의 행렬 좌표를 따로 저장해두었습니다.vector> dqs;vector>> poss; dequq에서 회전을 마친 이후 아래 코드를 통해 간단하게 행렬로 옮길 수 있습니다.for (int i = 0; i   회전하는 각 테두리의 정보를 옮길 때에는 테두리의 꼭지점 정보를 이용..

프로그래머스 석유 시츄 [Lv. 2] (C++)

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krN, M 크기의 격자 모양 땅 속에 석유가 발견 되었습니다. 시추관을 수직으로 단 하나만 뚫을 수 있을 때, 뽑을 수 있는 가장 많은 석유의 양을 구해주세요.  풀이 방법시추관을 내릴 수 있는 모든 위치에서 바닥 까지 BFS를 사용하여 크기를 찾는 방법을 생각해 볼 수 있겠습니다. (세로 위치 0 에 시추관을 내린다면 0,0 ~ 0,N까지 모든 위치에서 BFS를 하여 석유 크기 추출) 하지만 이 방법은 시간 초과가 발생하기 때문에 안됩니다. 시간을 더 단축시킬 수 있는 방법은 Union - Find를 이용하는 것 입니다. 우선 N * M의 속도로 BFS를 하..

프로그래머스 동영상 재생기 [Lv. 1] (C++)

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr동영상의 길이와, 현재 재생중인 시간, 동영상의 오프닝 시작 시간, 종료 시간, 그리고 10초 전으로 이동, 10초 후로 이동하는 명령어의 배열을 입력 받을 때, 명령어를 모두 처리한 이후에 보고 있는 동영상의 시간을 출력해 주세요(현재 보는 위치가 오프닝 시간이라면 자동으로 건너뛰어집니다. 또한 10초 전, 후로 이동 기능은 0초와 동영상 길이 까지만 이동 가능합니다) 풀이 방법 우선 string으로 입력 받은 시간을 int로 변화해줄 필요가 있습니다.int ttoi(string time){ int ret = 0; ret += time[4] - ..

프로그래머스 붕대 감기 [Lv. 1] (C++)

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr어떤 게임에는 붕대 감기라는 기술이 있습니다. 기술을 시전하면 매 초마다 체력이 회복되며, 시전 시간을 다 채울 경우 추가로 체력이 회복됩니다. 스킬의 시전 시간, 초당 회복량, 추가 회복량, 그리고 캐릭터의 최대 체력, 몬스터의 공격을 받는 시간과 피해량을 입력 받을 때, 모든 공격이 끝난 직후 남은 체력을 반환 해주세요.  풀이 방법0초 부터, 공격이 끝나는 시간 까지 매 초 계산해 주는 방식으로 풀었습니다.현재 체력과, 연속적으로 회복한 시간, 현재 시간, attacks 배열의 index를 가르키는 변수를 만들고index가 attacks 배열의 마지막을..

2024 KAKAO WINTER INTERNSHIP 알고리즘 문제 정리 (C++)

가장 많이 받은 선물 [Lv. 1] 프로그래머스 가장 많이 받은 선물 [Lv. 1 정답률 25%] (C++)프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr사람들의 이름과 이번달에 누가 누구에게 선물을 주었는지에 대한 기록flrjtwjrjt.tistory.com 도넛과 막대 그래프 [Lv. 2] 프로그래머스 도넛과 막대 그래프 [Lv. 2, 정답률 21%] (C++)프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr도넛 모양, 막대 모양, 8자 모양의 그래프가 있고, 모든 그래프로 진입하flrjtwjrjt.t..

프로그래머스 가장 많이 받은 선물 [Lv. 1 정답률 25%] (C++)

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr사람들의 이름과 이번달에 누가 누구에게 선물을 주었는지에 대한 기록을 입력으로 받습니다. A와 B 사이에서 A가 더 많은 선물을 주었다면 다음달에 B는 A에게 선물을 하나 줘야하고 A와 B 사이에 오고 간 선물의 수가 같다면 선물 지수가 낮은 사람이 높은 사람에게 선물을 줘야 합니다. (선물 지수는 이번달에 친구들에게 준 선물 - 받은 선물 입니다) 다음달에 가장 많은 선물을 받은 사람은 몇개를 받았는지 구해주세요. 풀이 방법이름을 입력 받을 때, string이 아니라 int로 받았다면 접근이 더 쉬울 것 같습니다.2차원 배열을 만들고 arr[A][B]의 형..

프로그래머스 산 모양 타일링 [Lv.3 정답률 23%] (C++)

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr아랫변의 길이가 N+1인 사다리꼴이 있을 때 윗변과 변을 공유하는 n 개의 정삼각형 중 일부의 위쪽에 같은 크기의 정삼각형을 붙일 때, 아래 타일들로 빈 곳이 없도록 채울 수 있는 경우의 수를 구해주세요 풀이 방법tops 배열이 모두 0일 때의 경우의 수를 먼저 구해 보겠습니다.N이 0일 때의 경우의 수는 1,N이 1일 때의 경우의 수는 3,N이 2일 때의 경우의 수는 8N이 3일 때의 경우의 수는 21 입니다.즉 점화식을 만들어 본다면 아래와 같겠습니다.dp[i] = dp[i-1] * 3 - dp[i-2] % 10007; 이 때, 주의할 점은 - dp[i ..

프로그래머스 도넛과 막대 그래프 [Lv. 2, 정답률 21%] (C++)

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr도넛 모양, 막대 모양, 8자 모양의 그래프가 있고, 모든 그래프로 진입하는 임의의 노드가 있습니다. 해당 문제에서는 임의의 노드의 번호와 도넛 모양 그래프의 수, 막대 모양 그래프의 수, 8자 모양 그래프의 수를 반환해야 합니다. 풀이 방법우선 새롭게 추가된 임의의 노드가 뭔지 찾아야 합니다.임의의 노드의 특징을 생각해보면 찾는것은 쉽습니다. 그 특징은 진입 차수가 없고 진출 차수만 있다는 겁니다.또한 그래프의 수는 항상 2개 이상이기 때문에 진출 차수 - 진입 차수가 2 이상이라면 새롭게 추가된 노드라고 추측해 볼 수 있겠습니다.  vector> in(s..

반응형