목록전체 글 (591)
어흥
문제 링크: https://programmers.co.kr/learn/courses/30/lessons/83201 코딩테스트 연습 - 2주차 [[100,90,98,88,65],[50,45,99,85,77],[47,88,95,80,67],[61,57,100,80,65],[24,90,94,75,65]] "FBABD" [[70,49,90],[68,50,38],[73,31,100]] "CFD" programmers.co.kr 1. 주의할 점 - 행/열 구분을 잘 한다 2. 구현 - 각 행마다 최대 점수, 최소 점수, 총합을 구한다 - 본인의 점수가 최대 혹은 최소 점수인 경우, 총합과 총 인원을 수정하여 score2grade() 함수를 통해 학점을 계산한다 - 학점들을 모두 붙여서 반환한다 #include #i..
문제 링크: https://www.acmicpc.net/problem/20040 20040번: 사이클 게임 사이클 게임은 두 명의 플레이어가 차례대로 돌아가며 진행하는 게임으로, 선 플레이어가 홀수 번째 차례를, 후 플레이어가 짝수 번째 차례를 진행한다. 게임 시작 시 0 부터 n − 1 까지 고유한 www.acmicpc.net 1. 주의할 점 - 분리집합 알고리즘에 대해 알고 있어야 한다 2. 구현 - findPar() 함수를 통해 해당 Node의 부모를 반환하는 함수를 구현한다 - makeUnion() 함수를 통해 a와 b의 최상위 부모를 연결한다 - M개의 선분을 입력받으면서 해당 선분의 부모가 같지 않으면 makeUnion()을 통해 같게 해준다. 만약 같고 finish 값이 0이 아니라면 fin..
문제 링크: https://programmers.co.kr/learn/courses/30/lessons/82612 코딩테스트 연습 - 1주차 새로 생긴 놀이기구는 인기가 매우 많아 줄이 끊이질 않습니다. 이 놀이기구의 원래 이용료는 price원 인데, 놀이기구를 N 번 째 이용한다면 원래 이용료의 N배를 받기로 하였습니다. 즉, 처음 이 programmers.co.kr 1. 주의할 점 -정답이 int의 범위를 벗어날 수 있다 2. 구현 - 놀이기구를 타는데 필요한 비용 - 보유 금액을 구하며, 만약 이 값이 음수가 아닌 경우 0을 반환한다 using namespace std; long long cal(int count){ return (count*(count+1))/2; } long long soluti..
1. Error vs Exception Error: 시스템에 비정상적인 상황이 발생한 경우 Exception: 개발자가 구현한 로직에서 발생. 예외에 따른 처리 방법 명확히 명시 필요 2. Checked vs Unchecked Exception(비교 항목 모두 중요) [참고 블로그] - https://www.nextree.co.kr/p3239/
문제 링크: https://www.acmicpc.net/problem/2696 2696번: 중앙값 구하기 첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 각 테스트 케이스의 첫째 줄에는 수열의 크기 M(1 ≤ M ≤ 9999, M은 홀수)이 주어지고, 그 다음 줄부터 이 수열의 원소가 차례대로 주 www.acmicpc.net 1. 주의할 점 - 홀수번째마다 정렬해서 중앙값을 구하지 않는다 2. 구현 - 2가지의 우선순위 큐를 사용한다(오름차순 정렬, 내림차순 정렬 각각 1개씩) - 중앙값을 기준으로 왼쪽에는 내림차순으로 정렬된 Left 우선순위큐를, 오른쪽에는 오름차순으로 정렬된 Right 우선순위큐가 있다고 가정한다 - 홀수번째마다 Right와 Left의 크기를 비교하며 만약..
문제 링크: https://www.acmicpc.net/problem/15903 15903번: 카드 합체 놀이 첫 번째 줄에 카드의 개수를 나타내는 수 n(2 ≤ n ≤ 1,000)과 카드 합체를 몇 번 하는지를 나타내는 수 m(0 ≤ m ≤ 15×n)이 주어진다. 두 번째 줄에 맨 처음 카드의 상태를 나타내는 n개의 자연수 a1, www.acmicpc.net 1. 주의할 점 - Int의 범위를 벗어날 수 있다 2. 구현 - 우선순위큐를 사용한다. 이때, 오름차순 정렬을 적용시킨다 - 값이 가장 낮은 2개를 더하는 것이 최소의 값을 가지므로 우선순위큐의 앞 2개 원소를 빼서 더하고 추가한다 #include #include #include using namespace std; int main() { ios..
문제 링크: https://www.acmicpc.net/problem/11003 11003번: 최솟값 찾기 N개의 수 A1, A2, ..., AN과 L이 주어진다. Di = Ai-L+1 ~ Ai 중의 최솟값이라고 할 때, D에 저장된 수를 출력하는 프로그램을 작성하시오. 이때, i ≤ 0 인 Ai는 무시하고 D를 구해야 한다. www.acmicpc.net 1. 주의할 점 - TLE가 나지 않도록 한다 2. 구현 - 덱이나 우선순위큐를 사용하여 해결한다 - 모든 원소를 입력받을 때, 삽입을 수행한다 - 우선순위 큐의 크기가 Len만큼 길지 않다면, 출력만 수행한다 - 우선순위 큐의 크기가 Len보다 크거다 같다면, While문을 통해 우선순위큐에서 제거작업을 수행한다. 이때, Top에 존재하는 원소가 현재..
문제 링크: https://www.acmicpc.net/problem/10986 10986번: 나머지 합 수 N개 A1, A2, ..., AN이 주어진다. 이때, 연속된 부분 구간의 합이 M으로 나누어 떨어지는 구간의 개수를 구하는 프로그램을 작성하시오. 즉, Ai + ... + Aj (i ≤ j) 의 합이 M으로 나누어 떨어지는 (i, j) www.acmicpc.net 1. 주의할 점 - 연속된 부분의 누적 합에 대해 알고 있어야 한다 - O(N^2)보다 작은 알고리즘을 구현해야 한다 - 답이 int 범위를 벗어날 수 있다 2. 구현 - 나머지가 M으로 나눠떨어지는 누적합은 2가지의 방식이 존재한다(파란 글씨 + 빨간 글씨) - 값을 입력받으며, Sum[] 함수에 연속된 누적합을 M으로 나눈 값을 저장..