▼ Why ? 이번엔 정렬과 관련된 문제를 풀어서 정렬하는 것에 어느정도 익숙해졌는지 체크해보려고 한다 ▼ 전국 대회 선발 고사 문제 정보 0번부터 n - 1번까지 n명의 학생 중 3명을 선발하는 전국 대회 선발 고사를 보았습니다. 등수가 높은 3명을 선발해야 하지만, 개인 사정으로 전국 대회에 참여하지 못하는 학생들이 있어 참여가 가능한 학생 중 등수가 높은 3명을 선발하기로 했습니다. 각 학생들의 선발 고사 등수를 담은 정수 배열 rank와 전국 대회 참여 가능 여부가 담긴 boolean 배열 attendance가 매개변수로 주어집니다. 전국 대회에 선발된 학생 번호들을 등수가 높은 순서대로 각각 a, b, c번이라고 할 때 10000 × a + 100 × b + c를 return 하는 solutio..
▼ Why ? 이번엔 스택을 활용하여 푸는 문제들 중 난이도가 좀 있는 문제를 한 번 풀어보면서 스택 활용에 어느정도 익숙해졌는지 확인해보려고 한다. ▼ 크레인 인형뽑기 게임 문제 정보 게임개발자인 "죠르디"는 크레인 인형뽑기 기계를 모바일 게임으로 만들려고 합니다. "죠르디"는 게임의 재미를 높이기 위해 화면 구성과 규칙을 다음과 같이 게임 로직에 반영하려고 합니다. 게임 화면은 "1 x 1" 크기의 칸들로 이루어진 "N x N" 크기의 정사각 격자이며 위쪽에는 크레인이 있고 오른쪽에는 바구니가 있습니다. (위 그림은 "5 x 5" 크기의 예시입니다). 각 격자 칸에는 다양한 인형이 들어 있으며 인형이 없는 칸은 빈칸입니다. 모든 인형은 "1 x 1" 크기의 격자 한 칸을 차지하며 격자의 가장 아래 칸..
▼ Why ? 저번 문제를 해결해보면서 그리디 알고리즘을 활용하는 연습을 여러 번 해보고 익숙해져야 할 것 같아서, 이번에도 그리디 알고리즘 관련 문제를 풀어보려고 한다 ▼ 카드 점수 문제 정보 N개의 카드가 일렬로 놓여져 있습니다. 각 카드에는 숫자가 적혀있습니다. 현수는 카드가 일렬로 놓여진 줄의 양 끝 즉 왼쪽 맨 끝카드와 오른쪽 맨 끝 카드 둘 중 하나를 가져갈 수 있습니다. 현수는 양 끝에서 가져가는 방식으로 k개의 카드를 가져갈 수 있습니다. 그리고 가져간 카드에 적혀진 숫자의 총합이 현수가 얻는 점수입니다. 일렬로 놓여진 각 카드의 숫자가 매개변수 nums에 주어지고, 현수가 가져갈 수 있는 카드의 개수 k가 주어지면 현수가 얻을 수 있는 최대점수를 반환하는 프로그램을 작성하세요. 제한사항 ..
▼ Why ? 이 문제도 정렬과 그리디 알고리즘을 활용하여 해결하면 되는데 그 전 문제들과 달리 난이도가 살짝 있는 문제인 것 같아 해결해보려고 한다. ▼ 선긋기 문제 정보 한 번의 선긋기는 수직선상의 한 점에서 다른 한 점까지 선을 긋는 것입니다. 선을 그을 때는 이미 선이 있는 위치에 겹쳐서 그을 수도 있습니다. 여러번 그은 곳과 한 번 그은 곳의 차이는 없습니다. 수직선은 0번 지점부터 m번 지점까지의 길이를 갖고 있습니다. 매개변수 nums에 각각의 선긋기 정보가 주어지면 0번 지점부터 m번 지점까지 연속적인 선이 그어지도록 하기 위한 선긋기 최소횟수를 반환하는 프로그램을 작성하세요. 모든 입력은 0번 지점부터 m번지점까지 연속적인 선이 그어집니다. 제한사항 3
▼ Why ? 이번엔 그리디 알고리즘으로 해결하는듯한 문제를 풀어보려고 한다 ▼ 최대 사과의 개수 문제 정보 여러 종류의 사과박스가 있습니다. 각 박스의 종류에 따라 박스에 담겨있는 사과의 개수가 다릅니다. 트럭에 박스를 실으려고 합니다. 트럭에 박스를 실을 수 있는 최대 개수 제한이 있습니다. 매개변수 box에 각 박스 종류의 정보가 주어지고, limit에 트럭의 실을 수 있는 박스의 최대 개수가 주어지면 트럭에 실을 수 있는 사과의 최대 개수를 반환하는 프로그램을 작성하세요. 제한사항 box의 길이는 100,000을 넘지 않습니다. box[i][0]은 i 종류 박스의 개수, box[i][1]은 i 종류의 박스 한 개에 들어 있는 사과의 개수 입니다. 서로 다른 종류의 박스라도 담아 있는 사과의 개수는..
▼ Why ? 이번엔 최근까지 공부했던 정렬(sort)과 람다식을 활용해보고자 정렬과 관련된 문제를 풀어보려고 한다. ▼ 이진수 정렬 문제 정보 매개변수 nums에 숫자가 주어지면 nums의 원소들을 이진수로 변환했을 때 1의 개수가 적은 것부터 많은 것 순으로 정렬하여 반환하는 프로그램을 작성하세요. 만약 nums = [5, 6, 7, 8, 9]이고 이 원소들을 이진수로 변환하면 5 --> 101 : 1이 2개 6 --> 110 : 1이 2개 7 --> 111 : 1이 3개 8 --> 1000 : 1이 1개 9 --> 1001 : 1이 2개 이고, 이 수들을 이진수에서 1의 개수에 의해 오름차순 정렬하면 [8, 5, 6, 9, 7]이다. 위에 5, 6, 9는 이진수로 변환했을 때 1의 개수가 2개로 동..