목록프로그래머스 (24)
Study hard
programmers.co.kr/learn/courses/30/lessons/42586 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr [풀이] 각 작업이 몇일에 걸려 개발되는지 먼저 세고, 앞의 작업보다 빨리 개발이 끝나거나 같이 끝나는 경우를 세서 answer에 넣어줬다. answer에 넣을 때 stack자료구조를 사용하여 top에 저장된 작업보다 긴 작업이 나오면 그 작업의 index를 push해주는 방식으로 구현하였다. #include #include #include #include using ..
programmers.co.kr/learn/courses/30/lessons/42578 코딩테스트 연습 - 위장 programmers.co.kr [풀이] 각각 종류마다 옷이 몇 가지씩 있는지 세고, 가능한 경우의 수를 구하는 문제였다. 옷 조합의 수 = (종류1의 옷 개수 + 1(안 입는 경우)) * (종류2의 옷 개수 + 1(안 입는 경우)) * ··· * (종류N의 옷 개수 + 1(안 입는 경우)) - 1(아무것도 안 입는 경우) #include #include #include using namespace std; bool sortType(vector &A, vector &B) { return A[1] < B[1]; } int solution(vector clothes) { int answer = 1..
programmers.co.kr/learn/courses/30/lessons/42577 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조 programmers.co.kr [풀이] 모든 원소에 대해 다른 원소들의 접두어인지 확인하는 문제였다. 길이가 더 짧은 원소의 인덱스값을 따라 같은 인덱스에 같은 값이 있는지 확인하였다. 아래와 같이 for문을 두 번 써서 풀었다가 계속 효율성에서 실패가 나왔다. #include #include using namespace std; //접두어인지 확인 bool Check(string a, string b..
programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr [풀이] 처음에는 find를 이용해 participant의 원소가 completion에 없으면 그 값을 반환하도록 풀었는데 효율성에서 시간초과가 났다. 그래서 먼저 participant와 completion을 정렬하고, 같은 인덱스에 같은 선수의 이름이 없으면 participant의 선수 이름을 반환하도록 하였다. #include #include #incl..
programmers.co.kr/learn/courses/30/lessons/42747 코딩테스트 연습 - H-Index H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표 programmers.co.kr [풀이] H-Index는 citations안에 있는 원소로 국한되는 것이 아니다. 하지만 H-Index가 될 수 있는 범위의 최댓값은 citations의 최댓값이다. H-Index를 citations의 최댓값으로 초기화하고, 1씩 줄여가면서 조건에 맞는지 확인하였다. #include #include #include //sort, max usin..
programmers.co.kr/learn/courses/30/lessons/42746 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr [풀이] algorithm 라이브러리의 sort함수를 이용해 수를 정렬하였다. 두 수를 붙였을 때 더 큰 수가 되는 순서로 정렬하여 문자열로 바꿔주었다. #include #include #include using namespace std; //붙여서 더 큰 수가 되는 순서로 정렬 bool sortNum(int &..