본문 바로가기

프로그래머스11

[프로그래머스] C++ 디스크 컨트롤러 문제 : https://programmers.co.kr/learn/courses/30/lessons/42627 코딩테스트 연습 - 디스크 컨트롤러 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를 programmers.co.kr 풀이 : 디스크 스케줄링하는 문제였다. input으로 [[0,3], [1, 9], [2, 6]] (요청 시간, 작업 소요 시간)이 주어졌을때 이들을 가장 짧게 작업을 끝내는 시간 / 3 하여 평균 시간을 구해주는 문제였다. 우선은 작업 소요 시간이 짧은 것을 먼저 처리하기 위해서 우선순위큐를 사용했다. 작업은 요청시간이 짧은 순으로 sorting .. 2022. 4. 22.
[프로그래머스] Summer/Winter Coding 스킬트리 level2 문제 : programmers.co.kr/learn/courses/30/lessons/49993 코딩테스트 연습 - 스킬트리 programmers.co.kr 분석 : 분명 나보다 더 효율적인 코드가 있을 것이라 생각한다! 하지만 이 문제는 다행히(?) 효율성 체크하는 문제가 아니여서 맞출 수 있었다. (soma 첫 게임 문제와 비슷한 유형의 문제라(근데 그 친구는 위상 정렬이었다) 꼭 풀고 싶었다) 이 문제는 전에 최장 공통 부분 수열 공부했을때 언뜻 봤었던 최장 공통 부분 문자열과 비슷해 보이지만 skill의 모든 문자열을 스킬 트리가 가지고 있지 않아도 된다는 점에서 조금 다르다. 만약에 제시된 skill 순서가 CBD 이고 순서에 맞는지 검사하고 싶은 대상들 {"CBADF", " AECB", "OP.. 2021. 5. 8.
[프로그래머스] 경주로 건설 2020 카카오 인턴쉽 level3 문제 : programmers.co.kr/learn/courses/30/lessons/67259 코딩테스트 연습 - 경주로 건설 [[0,0,0,0,0,0,0,1],[0,0,0,0,0,0,0,0],[0,0,0,0,0,1,0,0],[0,0,0,0,1,0,0,0],[0,0,0,1,0,0,0,1],[0,0,1,0,0,0,1,0],[0,1,0,0,0,1,0,0],[1,0,0,0,0,0,0,0]] 3800 [[0,0,1,0],[0,0,0,0],[0,1,0,1],[1,0,0,0]] 2100 [[0,0,0,0,0,0],[0,1,1,1,1,0],[0,0,1,0,0,0],[1,0,0,1,0,1],[ programmers.co.kr 분석 : 이 문제는 백준에서 풀었던 내리막길 문제와 비슷하게 dp + dfs의 조합문제였다... 2021. 5. 7.
[프로그래머스] Summer/Winder Coding 기지국 설치 level3 문제 : programmers.co.kr/learn/courses/30/lessons/12979 코딩테스트 연습 - 기지국 설치 N개의 아파트가 일렬로 쭉 늘어서 있습니다. 이 중에서 일부 아파트 옥상에는 4g 기지국이 설치되어 있습니다. 기술이 발전해 5g 수요가 높아져 4g 기지국을 5g 기지국으로 바꾸려 합니다. 그런데 5 programmers.co.kr 분석 : 시간초과 + 에러난 c++ 코드 : // // [SW] 2018_BaseStation.cpp // SOMA👩🏻‍💻 // // Created by JoSoJeong on 2021/05/06. // #include #include #include #include #include using namespace std; //vector statio.. 2021. 5. 6.
[프로그래머스] Summer/Winter Coding 지형 이동 level 4 MST 문제 : programmers.co.kr/learn/courses/30/lessons/62050 코딩테스트 연습 - 지형 이동 [[1, 4, 8, 10], [5, 5, 5, 5], [10, 10, 10, 10], [10, 10, 10, 20]] 3 15 [[10, 11, 10, 11], [2, 21, 20, 10], [1, 20, 21, 11], [2, 1, 2, 1]] 1 18 programmers.co.kr 분석 : 문제를 구현하면 되는 식이었다. 크루스칼 알고리즘, spanning tree 처음 공부해보는데 백준에서 유제 문제를 더 풀어봐야겠다. c++ 코드 : // // [SW] 2019_terrainMove.cpp // SOMA👩🏻‍💻 // // Created by JoSoJeong on 202.. 2021. 5. 2.
[프로그래머스] 합승 택시 요금 2021 카카오 블라인드 테스트 level3 문제 : programmers.co.kr/learn/courses/30/lessons/72413 코딩테스트 연습 - 합승 택시 요금 6 4 6 2 [[4, 1, 10], [3, 5, 24], [5, 6, 2], [3, 1, 41], [5, 1, 24], [4, 6, 50], [2, 4, 66], [2, 3, 22], [1, 6, 25]] 82 7 3 4 1 [[5, 7, 9], [4, 6, 4], [3, 6, 1], [3, 2, 3], [2, 1, 6]] 14 6 4 5 6 [[2,6,6], [6,3,7], [4,6,7], [6,5,11], [2,5,12], [5,3,20], [2,4 programmers.co.kr 분석 : 첫번째 접근 문제를 보아하니 a와 b가 따로 갔을때와 중간 지점 걸쳐서 도착한 .. 2021. 5. 2.
[프로그래머스] Summer/Winder coding 방문 길이 level2 문제 : programmers.co.kr/learn/courses/30/lessons/49994 코딩테스트 연습 - 방문 길이 programmers.co.kr 분석 : 처음에 dfs문제인줄 알고 마침 오늘 dfs 스터디 해서 dfs 짜다가 stack에 push 해줄 필요가 없음을 느끼고 단순 문자열 길이만큼 for문을 돌아 answer 값을 증가 해주는 식으로 간소화 하였다. 1. 첫 접근 방식 갔던 간선은 또 갈 수 없으니 2차원 visit 배열 생성 후 false인 좌표에 대해서만 answer 값 증가시키기 하지만 이 방식은 1번시, 도착 노드로 방문했던 (5,6)번지를 7번 작업 수행시 (5,6)번이 이미 방문한 노드가 되었으므로 7번 간선을 만들수 없게 된다. 그래서 정점 방식으로 접근하면 안된다.. 2021. 4. 30.
[프로그래머스] 두 개 뽑아서 더하기 문제 : programmers.co.kr/learn/courses/30/lessons/68644 코딩테스트 연습 - 두 개 뽑아서 더하기 정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 제한 programmers.co.kr 분석 : input vector : numbers output vector : answer ex> input output [2,1,3,4,1] [2,3,4,5,6,7] [5,0,2,7] [2,5,7,9,12] 가 주어질 때 첫번째 for 문 : inter 는 반복할 간격이다. 1 ~ size-1 범위를 가진다. 두번째 .. 2021. 2. 26.
[프로그래머스] 크레인 인형 뽑기 2019 카카오 개발자 겨울 인턴쉽 🎯 문제 : programmers.co.kr/learn/courses/30/lessons/64061 코딩테스트 연습 - 크레인 인형뽑기 게임 [[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4 programmers.co.kr 🧩분석 : 2년전에 만났던 문제 ..! 지금은 코드 이해가 다행이 되었다. 약간의 블로그들을 참고했지만 2차원 board = vector board 크레인의 움직임 = vector moves 1. 크레인의 움직임이 끝날때 까지 check 할 인덱스를 -1하여 접근 2. borad의 한 행씩 검사하면서 움직일 열(check 인덱스 값)이 빈칸(0)이 아니면 stack에 쌓인 값이 없으면 pu.. 2021. 2. 24.
[프로그래머스] 2016년 basic 문제 : programmers.co.kr/learn/courses/30/lessons/12901? 코딩테스트 연습 - 2016년 2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까 programmers.co.kr 분석 : 윤년과 7월에서 8월로 넘어갈 시 홀수 짝수 계산을 달리 해준다. c++ 풀이 : #include #include #include using namespace std; string solution(int a, int b) { string answer = ""; int sum = 0; //int day = {31, 29.. 2021. 2. 24.
[프로그래머스] 하샤드 수 basic 문제 : programmers.co.kr/learn/courses/30/lessons/12947 코딩테스트 연습 - 하샤드 수 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하 programmers.co.kr 분석 : %와 / 를 이용한 누적 값 계산 문제다. temp 변수를 안 쓰고 x원본 값을 나누고 마지막에 비교하는 작업을 했더니 계속 에러가 났다 다음부턴 실수 안해야지 c++ 코드 : #include #include using namespace std; bool solution(int x) { bool answer = true; int s.. 2021. 2. 24.