본문 바로가기

알고리즘/프로그래머스43

[python] 체육복(탐욕법, Greedy) 문제는 위와 같다. 점심시간에 도둑이 들어 체육시간에 사용해야 하는 체육복을 도난당한 상황이다. 이때 여벌의 체육복을 가져온 학생이 있어 도난당한 학생들에게 체육복을 빌려주어 체육 수업을 들으려고 한다. 이때 체육 수업을 들을 수 있는 최대의 학생수를 구하는 것이 목표이다. 전체 학생수 n, 체육복을 도난당한 학생들의 번호가 담긴 배열 lost, 여벌의 체육복을 가져온 학생들의 번호가 담기 배열 reserve 가 존재한다. 학생들의 번호의 기준은 체격 순서이며 체육복은 체격 차이로 인해 자신의 앞뒤 번호의 학생의 체육복만 입을 수 있다. 즉, 7번 학생은 6, 8번 학생의 체육복만 빌릴 수 있고 10번 학생은 9, 11번 학생의 체육복만 빌릴 수 있다. 전체 학생수 n은 2~30이고 도난당한 학생의 번호.. 2020. 2. 10.
[C++] K번째수(정렬) 문제는 위와 같다. 주어진 조건에 맞는 숫자를 구한는게 해당 문제의 목표이다. 매개변수로 전달받는 array를 commands에 저장된 조건에 따라 자르고 반환해야한다. commands에는 [i, j, k]를 원소로 가지는 2차원 배열이다. 조건은 commands의 원소 배열의 i, j를 이용하여 array를 i~j번째 숫자만 남기고 array를 오름차순으로 정렬한 다음 k번째에 있는 숫자를 반환하면 된다. 따라서 array가 [1, 5, 2, 6, 3, 7, 4]이고 i=2 j=5 k=3 이라면 ① 2번째~5번째 숫자만 남기고 잘라내면 [5, 2, 6, 3] ③ 오름차순으로 정렬하면 [2, 3, 5, 6] ③ 3번째 숫자는 5이므로 5를 반환하면 된다. 위와 같은 예시를 확인할 수 있다. command.. 2020. 2. 9.
[python] K번째수(정렬) 문제는 위와 같다. 주어진 조건에 맞는 숫자를 구한는게 해당 문제의 목표이다. 매개변수로 전달받는 array를 commands에 저장된 조건에 따라 자르고 반환해야한다. commands에는 [i, j, k]를 원소로 가지는 2차원 배열이다. 조건은 commands의 원소 배열의 i, j를 이용하여 array를 i~j번째 숫자만 남기고 array를 오름차순으로 정렬한 다음 k번째에 있는 숫자를 반환하면 된다. 따라서 array가 [1, 5, 2, 6, 3, 7, 4]이고 i=2 j=5 k=3 이라면 ① 2번째~5번째 숫자만 남기고 잘라내면 [5, 2, 6, 3] ③ 오름차순으로 정렬하면 [2, 3, 5, 6] ③ 3번째 숫자는 5이므로 5를 반환하면 된다. 위와 같은 예시를 확인할 수 있다. command.. 2020. 2. 8.
[C++] 모의고사(완전탐색) 문제는 위와 같다. 정답을 가장 많이 맞힌 수포자가 누구인지 찾아내는 것이 목표이다. 1, 2, 3, 4, 5중 정답 번호를 차례로 가진 answers라는 배열이 주어지며 1번 수포자는 1 2 3 4 5 가 반복되게 답을 찍는다. 2번 수포자는 2 1 2 3 2 4 2 5가 반복되게 답을 찍는다. 3번 수포자는 3 3 1 1 2 2 4 4 5 5 가 반복되게 답을 찍는다. 이중 답을 가장 많이맞춘 수포자를 찾으면 된다. 위와 같은 예시를 확인할 수 있다. answers배열이 [1 2 3 4 5]로 주어질 경우에는 1번 수포자는 1 2 3 4 5가 반복되게 찍으므로 5문제 중 5문제를 모두 맞히고2번 수포자는 2 1 2 3 2 4 2 5로 찍었기 때문에 일치하는 문제가 없어 0문제를 맞추고 3번 수포자는 .. 2020. 2. 4.
[python] 모의고사(완전탐색) 문제는 위와 같다. 정답을 가장 많이 맞춘 수포자가 누구인지 찾아내는 것이 목표이다. 1, 2, 3, 4, 5중 정답번호를 차례로 가진 answers 라는 배열이 주어지며 1번 수포자는 1 2 3 4 5 가 반복되게 답을 찍는다. 2번 수포자는 2 1 2 3 2 4 2 5가 반복되게 답을 찍는다. 3번 수포자는 3 3 1 1 2 2 4 4 5 5 가 반복되게 답을 찍는다. 이중 답을 가장 많이맞춘 수포자를 찾이면 된다. 위와 같은 예시를 확인할 수 있다. answers배열이 [1 2 3 4 5]로 주어질 경우에는 1번 수포자는 1 2 3 4 5가 반복되게 찍으므로 5문제중 5문제를 모두 맞추고 2번 수포자는 2 1 2 3 2 4 2 5로 찍었기 때문에 일치하는 문제가 없어 0문제를 맞추고 3번 수포자는 .. 2020. 2. 4.
[C++] 완주하지 못한 선수(해시) 문제는 위와 같다. 단 한 명의 완주하지 못한 선수를 찾아내는 것이 문제의 목표이다. 마라톤에 참여한 모든 선수의 이름이 담긴 배열 participant가 주어지고 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때 완주하지 못한 선수를 찾아내야 한다. 위와 같은 예시가 주어진다. ["leo", "kiki", "eden""eden"]라는 participant 배열과 ["eden", "kiki"] 라는 completion배열이 주어지면 참가한 선수 중에 completion배열에 들어있지 않은 "leo"라는 선수는 완주하지 못한 선수가 되므로 "leo"를 반환해주면 해당 문제가 해결된다. 설계 및 구현 구현을 위해 주어진 코드는 vector와 string 헤더가 include 되어있고 stri.. 2020. 1. 30.