본문 바로가기

CS

(18)
프로그래머스 - level3/있었는데요 없었습니다/MySql 해결방법 사실 어렵지 않게 풀었는데 제목이 포스팅 안할 수가 없는 이름이라.. 입양일과 보호일을 JOIN을 사용해서 같이 비교해주면 끗 코드 SELECT AI.animal_id, AI.name FROM ANIMAL_INS AI INNER JOIN ANIMAL_OUTS AO ON AI.animal_id = AO.animal_id WHERE AI.datetime > AO.datetime ORDER BY AI.datetime
프로그래머스 - level3/베스트 앨범/C++ 해결방법 총 두 가지의 자료구조를 사용했음 1) 많이 재생된 장르가 뭔지 → key를 장르로 하고 value에 같은 장르의 전체 재생 횟수를 뒀음 2) 같은 장르 내에서 많이 재생된 노래 순서 → 고유 번호, 장르, 재생횟수를 가지는 struct를 만들어서 sort 해줌 두 개를 재생 횟수를 기준으로, 내림차순(DESC) 정렬해줬음 코드 #include #include #include #include #include using namespace std; struct Music { int idx=0; string genre; int play = 0; Music(int _idx, string _g, int _p):idx(_idx), genre(_g), play(_p){} }; map maxGenre; boo..
프로그래머스 - level2/가장큰수/C++ 해결방법 이 문제는 정렬(sort)을 활용하여 풀 수 있음 제한 사항에 "정답이 너무 크니 문자열로 바꿔라"라고 있는데, int 형 배열 numbers를 string 배열로 바꾼 후, 정렬을 해줄 때 3번째 인자의 함수에서 커스텀 비교 함수를 넣어주면 됨 처음에는 sort 함수에서 to_string으로 바꿔서 numbers 배열의 순서를 바꿨었는데 시간초과가 되었음 🙁 참고사항 stl에서 제공하는 sort 함수의 파라미터는 위와 같습니닷 세 번째 파라미터가 뽀인트인데, 비교하고 싶은 두 개의 요소(인자)랑 return 값을 맞춰서 작성해줘야 합니다. 이 문제의 경우에는 조건을 숫자 1과 숫자 2를 붙여서 비교했을 때 더 큰 값만 넣어주면 됩니다. 예를 들어서, "6"과 "10"을 비교 시, 610 또는 ..
프로그래머스 - level 3/최고의 집합/C++ 해결방법 문제 설명에 두 가지 조건이 있는데, 그중 두 번째 조건인 "위 조건을 만족하면서 각 원소의 곱이 최대가 되는 집합"이라는 것에 힌트를 얻을 수 있음 원소의 곱이 최대 → 나눗셈을 활용하여 해결 원소들의 합(s)을 원소의 개수(n)으로 나눠 몫을 구하면 원소 1개를 구할 수 있음 그러면 s에서 위에서 구한 원소 1개를 빼주면 (s -= div) 나머지 원소도 구할 수 있음 n > s인 경우(예시의 n=2, s=1)에 대한 예외 처리도 추가해 주면 됨 코드 #include #include #include #include using namespace std; vector solution(int n, int s) { vector answer; if(n>s) { answer.push_back(-1); ..
Composite Pattern 조금 예전에 공부했던 디자인 패턴인데, 다시 복습하면서 정리해보았다 디자인 패턴도 찾아보며 개발했던 열정 어디갔니 🥹 Composite 뜻 OOP에서 컴포지트는 하나 이상의 유사한 객체를 구성으로 설계된 객체로 모두 유사한 기능을 가짐 객체 그룹을 조작하는 것 처럼 단일 객체를 조작할 수 있음 Composite Pattern 클라이언트가 복합 객체/단일 객체를 동일하게 취급하는 것을 목적으로 함 트리 구조로 작성, 전체-부분 관계 표현 트리구조를 다룰 때, 개발자는 리프노드와 브랜치 구별해야함 복잡하게 만들지 않기 → 인터페이스 활용해서 작성한다던가 Client 클래스는 Leaf와 Composite 클래스에 직접 참조 하지 마세욥 🙅‍♀️🙅‍♀️ 인터페이스인 Component만 참조하기 Leaf는 Com..
프로그래머스 - 탐욕법(Greedy)/체육복/C++ 문제 설명 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번호의 학생이나 바로 뒷번호의 학생에게만 체육복을 빌려줄 수 있습니다. 예를 들어, 4번 학생은 3번 학생이나 5번 학생에게만 체육복을 빌려줄 수 있습니다. 체육복이 없으면 수업을 들을 수 없기 때문에 체육복을 적절히 빌려 최대한 많은 학생이 체육수업을 들어야 합니다. 전체 학생의 수 n, 체육복을 도난당한 학생들의 번호가 담긴 배열 lost, 여벌의 체육복을 가져온 학생들의 번호가 담긴 배열 reserve가 매개변수로 주어질 때, 체육수업을 들을 수 있는 학생의 최댓값을 return 하도록 solution 함수를..
프로그래머스 - 완전탐색/모의고사/C++ 문제 설명 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ... 2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ... 3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ... 1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작..
프로그래머스 - 정렬/k번째수/C++ 문제 설명배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다.예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다.1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다.2에서 나온 배열의 3번째 숫자는 5입니다.배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항array의 길이는 1 이상 100 이하입니다.array의 각 ..