목록전체 글 (217)
Study hard

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 &..

programmers.co.kr/learn/courses/30/lessons/42748 코딩테스트 연습 - K번째수 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr [풀이] c++ algorithm라이브러리의 sort를 이용하여 간단하게 풀 수 있는 문제다. #include #include #include //sort using namespace std; int getResults(vectorarray, int i, int j, int k) { int idx; vectortmp; for (int n = i - 1; n

programmers.co.kr/learn/courses/30/lessons/49191 코딩테스트 연습 - 순위 5 [[4, 3], [4, 2], [3, 2], [1, 2], [2, 5]] 2 programmers.co.kr [풀이] 1. 각 선수들이 이긴 선수들의 번호와 진 선수들의 번호를 따로 저장하였다. 2. bfs를 이용하여 i번 선수보다 윗 순위인 선수들의 수(Up[i])와 아래 순위인 선수들의 수(Down[i])를 따로 세었다. 3. Up[i] 와 Down[i]를 합했을 때 n-1이 나오면 그 선수의 순위를 정확히 알 수 있으므로 cnt++ #include #include #include #include using namespace std; const int Max = 101; vectorwi..

programmers.co.kr/learn/courses/30/lessons/49189 코딩테스트 연습 - 가장 먼 노드 6 [[3, 6], [4, 3], [3, 2], [1, 3], [1, 2], [2, 4], [5, 2]] 3 programmers.co.kr [풀이] 카테고리는 bfs가 아닌 그래프지만 bfs최단경로 찾기로 풀 수 있는 문제였다. 1번 노드에서 다른 모든 노드로 가는 최단경로의 길이를 bfs로 찾은 다음 그 값이 가장 큰 노드의 개수를 세어주었다. #include #include #include #include //memset using namespace std; const int Max = 20001; int dist[Max]; vectorGraph[Max]; //각 노드까지의 최단..

programmers.co.kr/learn/courses/30/lessons/42897 코딩테스트 연습 - 도둑질 도둑이 어느 마을을 털 계획을 하고 있습니다. 이 마을의 모든 집들은 아래 그림과 같이 동그랗게 배치되어 있습니다. 각 집들은 서로 인접한 집들과 방범장치가 연결되어 있기 때문에 인접한 �� programmers.co.kr [풀이] DP로 풀어야 하는 문제였다. 첫번째 집과 마지막 집이 같이 선택되면 안되므로 첫번째 집을 선택하지 않는 경우와 첫번째 집을 선택하는 경우로 나누어서 풀어야한다. #include #include #include //max using namespace std; int *dp; int house_cnt; int DP(vectormoney) { dp[0] = money..