목록알고리즘 (547)
N
점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번호의 학생이나 바로 뒷번호의 학생에게만 체육복을 빌려줄 수 있습니다. 예를 들어, 4번 학생은 3번 학생이나 5번 학생에게만 체육복을 빌려줄 수 있습니다. 체육복이 없으면 수업을 들을 수 없기 때문에 체육복을 적절히 빌려 최대한 많은 학생이 체육수업을 들어야 합니다. 전체 학생의 수 n, 체육복을 도난당한 학생들의 번호가 담긴 배열 lost, 여벌의 체육복을 가져온 학생들의 번호가 담긴 배열 reserve가 매개변수로 주어질 때, 체육수업을 들을 수 있는 학생의 최댓값을 return 하도록 solution 함수를 작성해주세..
수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. 프로그래머스 1단계. 완주하지 못한 선수. 우선 participant와 completion을 각각 오름차순으로 sort 한다. for문을 이용해 해당 위치에 있는 값이 서로 다른지 비교한다. 값이 다르면 participant의 해당 위치에 있는 선수가 완주하지 못한 선수가 된다. 처음에는 find 함수로 participant내에서 선수를 찾았지만, 효율성 테스트에서 시간 초..
스택을 이용해서 푸는 문제. 이중 for문을 이용하여 0이 아닌 값을 board에서 찾아낸 후 스택에 push. 만약 스택의 top과 board[j][moves[i] - 1]의 값과 같다면 같은 인형이니 answer += 2를 한 후, 스택을 pop 해준다. #include #include #include #include using namespace std; int solution(vector board, vector moves) { int answer = 0; int size = board[moves[0] - 1].size(); stack stk; for(int i = 0; i < moves.size(); i++) { for(int j = 0; j < size; j++) { if(board[j][mov..