코딩테스트

    [프로그래머스] 카펫

    https://programmers.co.kr/learn/courses/30/lessons/42842 코딩테스트 연습 - 카펫 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 programmers.co.kr 약수를 이용해 모두 탐색하는 문제입니다. 우선 문제부터 간단하게 요약해보면, 위의 그림과 같이 가운데는 노란색 그리고 가장 바깥쪽 테두리 한줄만 갈색인 카펫이 있습니다. 이 때, 노란색 블록의 수와 갈색블록의 수를 알 때, 카펫의 크기를 구하는 문제입니다. 노란색 블록의 수의 약수를 구한 다음 그 약수를 사용하여 각각의 경우에 대해 탐색해 갈색 블록의 수와 ..

    [프로그래머스] K번째수

    https://programmers.co.kr/learn/courses/30/lessons/42748 코딩테스트 연습 - K번째수 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr python 라이브러리의 sort를 사용해서 풀면 되는 문제입니다. 문제부터 요약하면, 배열과 명령들이 주어지는데 각 명령 [i, j, k]는 array의 i~j번째 까지의 원소중 k번째를 요구합니다. 이렇게 각각의 요구사항들을 list에 넣어서 return 해야하는 문제입니다. 각각의 command에 대해 답을 구한후 append 해서 return 시키면 되는 간단한 문제입니다. 실제 구현은 아래와 같습니다. def solut..

    [프로그래머스] 디스크 컨트롤러

    https://programmers.co.kr/learn/courses/30/lessons/42627 코딩테스트 연습 - 디스크 컨트롤러 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를 programmers.co.kr heap을 이용하는 문제라고 하는데 heap을 사용하지 않고 풀었습니다. 아무튼 풀이과정을 한번 적어보겠습니다. 우선 문제부터 요약하면, 위의 그림처럼 task가 disk에 들어오게 되는데 이러면 disk는 이 task 들을 scheduling해야 합니다. 이때, 각 작업들의 요청부터 종료까지 걸린 시간의 평균의 최솟값을 return 해야 합니다. 즉 so..

    [프로그래머스] 기능개발

    https://programmers.co.kr/learn/courses/30/lessons/42586 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr queue를 이용하는 문제입니다. 우선 문제부터 요약하면, 작업들의 진행상황과 일을 하는 속도가 나옵니다. 이것을 통해 작업들이 배포되어야 하는 날짜를 알 수 있습니다. 이때, 작업들의 list가 배포되어야 하는 우선순위대로 구성 되어 있을 때, 각 배포마다 몇개의 작업들이 release 되는지를 구해야 합니다. 예시를 들면, 만약 작업 1, 작업 2, ..

    [프로그래머스] 전화번호 목록

    https://programmers.co.kr/learn/courses/30/lessons/42577 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조 programmers.co.kr hash를 이용하는 문제이지만 이전 문제와 마찬가지로 hash를 안사용해도 충분히 효율성 테스트 까지 통과합니다. 문제부터 요약하면, phone_book에 전화번호들이 있는데 이중에서 어떤 번호가 다른 번호의 접두사가 될 수 있다면 False, 전부 접두사가 될 수 없다면 True를 return 해야 합니다. 즉 solution(phone_book)에 pho..

    [프로그래머스] 완주하지 못한 선수

    https://programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr hash 로 분류되어 있는데 hash를 사용하지 않고도 효율성 까지도 다 통과합니다. 우선 문제부터 요약해보자면, 마라톤에 선수들이 참여하게 되는데 이때, 단 한명만이 완주를 못합니다. 이 완주하지 못한 선수가 누구인지를 구하는 문제입니다. 즉 solution(participant, completion)에 participant : 참여자들의 ..

    [프로그래머스] 도둑질

    https://programmers.co.kr/learn/courses/30/lessons/42897 코딩테스트 연습 - 도둑질 도둑이 어느 마을을 털 계획을 하고 있습니다. 이 마을의 모든 집들은 아래 그림과 같이 동그랗게 배치되어 있습니다. 각 집들은 서로 인접한 집들과 방범장치가 연결되어 있기 때문에 인접한 programmers.co.kr dynamic programming을 이용하여 푸는 문제입니다. 이때, dp table 두개를 tracking 해야 합니다. 문제부터 간단하게 요약하면, 도둑이 아래그림처럼 원형으로 구성된 마을을 털 계획을 하고 있는데, 인접한 두 집을 털면 경고음이 울립니다. 이 때 도둑이 털 수 있는 가장 큰 금액을 return 해야 하는 문제입니다. 즉, solution(m..

    [프로그래머스] 등굣길

    https://programmers.co.kr/learn/courses/30/lessons/42898 코딩테스트 연습 - 등굣길 계속되는 폭우로 일부 지역이 물에 잠겼습니다. 물에 잠기지 않은 지역을 통해 학교를 가려고 합니다. 집에서 학교까지 가는 길은 m x n 크기의 격자모양으로 나타낼 수 있습니다. 아래 그림은 m = programmers.co.kr 다이나믹 프로그래밍을 이용하는 문제입니다. 우선 문제부터 요약해보면, m*n의 격자 판에서 등교를 하게 되고 물웅덩이가 있습니다. 이때, 물웅덩이를 밟지 않고, 오른쪽과 아래로만 이동하여 학교로 도착하는 최단 경로의 갯수를 return해야 합니다. 즉 solution(m,n,puddles)에 m,n : 격자의 크기 puddles : 물웅덩이의 위치 가..